/// <summary> /// Load Table/Column Info /// baseLanguage in English /// </summary> /// <param name="baseLanguage"></param> private void LoadInfo(bool baseLanguage) { List <POInfoColumn> list = new List <POInfoColumn>(20); StringBuilder sql = new StringBuilder(); sql.Append("SELECT t.TableName, c.ColumnName,c.AD_Reference_ID," // 1..3 + "c.IsMandatory,c.IsUpdateable,c.DefaultValue," // 4..6 + "e.Name,e.Description, c.AD_Column_ID, " // 7..9 + "c.IsKey,c.IsParent, " // 10..11 + "c.AD_Reference_Value_ID, vr.Code, " // 12..13 + "c.FieldLength, c.ValueMin, c.ValueMax, c.IsTranslated, " // 14..17 + "t.AccessLevel, c.ColumnSQL, c.IsEncrypted "); // 18..20 sql.Append("FROM AD_Table t" + " INNER JOIN AD_Column c ON (t.AD_Table_ID=c.AD_Table_ID)" + " LEFT OUTER JOIN AD_Val_Rule vr ON (c.AD_Val_Rule_ID=vr.AD_Val_Rule_ID)" + " INNER JOIN AD_Element"); if (!baseLanguage) { sql.Append("_Trl"); } sql.Append(" e " + " ON (c.AD_Element_ID=e.AD_Element_ID) " + "WHERE t.AD_Table_ID=" + _AD_Table_ID + " " + " AND c.IsActive='Y'"); if (!baseLanguage) { sql.Append(" AND e.AD_Language='").Append(Env.GetAD_Language(m_ctx)).Append("'"); } IDataReader dr = null; try { dr = DB.ExecuteReader(sql.ToString(), null, null); while (dr.Read()) { if (m_TableName == "") { m_TableName = Util.GetValueOfString(dr[0]); } string ColumnName = Util.GetValueOfString(dr[1]); int AD_Reference_ID = Util.GetValueOfInt(dr[2]); bool IsMandatory = "Y".Equals(dr[3]); bool IsUpdateable = "Y".Equals(dr[4]); string DefaultLogic = Util.GetValueOfString(dr[5]); string Name = Util.GetValueOfString(dr[6]); string Description = Util.GetValueOfString(dr[7]); int AD_Column_ID = Util.GetValueOfInt(dr[8]); bool IsKey = "Y".Equals(Util.GetValueOfString(dr[9])); if (IsKey) { m_hasKeyColumn = true; } bool IsParent = "Y".Equals(Util.GetValueOfString(dr[10])); int AD_Reference_Value_ID = Util.GetValueOfInt(dr[11]); string ValidationCode = Util.GetValueOfString(dr[12]); int FieldLength = Util.GetValueOfInt(dr[13]); string ValueMin = Util.GetValueOfString(dr[14]); string ValueMax = Util.GetValueOfString(dr[15]); bool IsTranslated = "Y".Equals(Util.GetValueOfString(dr[16])); // m_AccessLevel = Util.GetValueOfString(dr[17]); String ColumnSQL = Util.GetValueOfString(dr[18]); bool IsEncrypted = "Y".Equals(Util.GetValueOfString(dr[19])); POInfoColumn col = new POInfoColumn( AD_Column_ID, ColumnName, ColumnSQL, AD_Reference_ID, IsMandatory, IsUpdateable, DefaultLogic, Name, Description, IsKey, IsParent, AD_Reference_Value_ID, ValidationCode, FieldLength, ValueMin, ValueMax, IsTranslated, IsEncrypted); list.Add(col); } dr.Close(); dr = null; } catch (Exception e) { if (dr != null) { dr.Close(); dr = null; } VLogger.Get().Log(Level.SEVERE, sql.ToString(), e); } m_columns = list.ToArray(); }
/// <summary> /// Validate Content /// </summary> /// <param name="index"></param> /// <param name="value"></param> /// <returns></returns> public string Validate(int index, Object value) { if (index < 0 || index >= m_columns.Length) { return("RangeError"); } // Mandatory (i.e. not null if (m_columns[index].IsMandatory && value == null) { return("IsMandatory"); } if (value == null) { return(null); } // Length ignored POInfoColumn column = m_columns[index]; // //if (column.ValueMin != null && column.ValueMin != "") //{ // decimal? value_BD = null; // try // { // if (column.ValueMin_BD != 0) // value_BD = decimal.Parse(value.ToString()); // } // catch { } // // Both are Numeric // if (column.ValueMin_BD != 0 && value_BD != null) // { // error: 1 - 0 => 1 - OK: 1 - 1 => 0 & 1 - 10 => -1 // int comp = column.ValueMin_BD.CompareTo(value_BD); // if (comp > 0) // { // //return "MinValue=" + column.ValueMin_BD // // + "(" + column.ValueMin + ")" // // + " - compared with Numeric Value=" + value_BD + "(" + value + ")" // // + " - results in " + comp; // return Msg.GetMsg(m_ctx, "ExceedMinValue", new Object[] { value_BD, column.ValueMin_BD }); // } // } // else // String // { // int comp = column.ValueMin.CompareTo(value.ToString()); // if (comp > 0) // { // //return "MinValue=" + column.ValueMin // // + " - compared with String Value=" + value // // + " - results in " + comp; // return Msg.GetMsg(m_ctx, "ExceedMinValue", new Object[] { value, column.ValueMin }); // } // } //} //if (column.ValueMax != null && column.ValueMax != "") //{ // decimal? value_BD = null; // try // { // if (column.ValueMax_BD != 0) // value_BD = decimal.Parse(value.ToString()); // } // catch { } // // Both are Numeric // if (column.ValueMax_BD != 0 && value_BD != null) // { // error 12 - 20 => -1 - OK: 12 - 12 => 0 & 12 - 10 => 1 // int comp = column.ValueMax_BD.CompareTo(value_BD); // if (comp < 0) // { // //return "MaxValue=" + column.ValueMax_BD + "(" + column.ValueMax + ")" // // + " - compared with Numeric Value=" + value_BD + "(" + value + ")" // // + " - results in " + comp; // return Msg.GetMsg(m_ctx, "ExceedMaxValue", new Object[] { value_BD, column.ValueMax_BD }); // } // } // else // String // { // int comp = column.ValueMax.CompareTo(value.ToString()); // if (comp < 0) // { // return Msg.GetMsg(m_ctx, "ExceedMaxValue", new Object[] { value, column.ValueMax }); // //return "MaxValue=" + m_columns[index].ValueMax // // + " - compared with String Value=" + value // // + " - results in " + comp; // } // } //} return(null); } // validate