public void DynBeforeUpdate(BEManager be, DataRow dr, appDB.ddTableRow ruleDefinition, Dictionary <string, appDB.ddFieldRow> ruleColumnMap) { if (ruleDefinition == null) { return; } FileManager fm = GetFMFromBE(be); foreach (appDB.ddRuleRow ddr in ruleDefinition.GetddRuleRows()) { //for "beforeupdate" event if (ddr.EventId == 2 && ddr.Enabled) { //check rules RunRule(null, dr, null, fm, null, ddr); } if (ddr.EventId == 10 && ddr.Enabled) { //check rules //needs to run for column //need columnmap DataColumn dc = dr.Table.Columns[ddr.ddFieldRow.DBFieldName]; appDB.ddFieldRow dfr = ruleColumnMap[dc.ColumnName]; RunRule(dc, dr, ruleColumnMap, fm, dfr, ddr); } if (ddr.EventId == 5 && ddr.Enabled && dr.RowState == DataRowState.Added) { //check rules RunRule(null, dr, null, fm, null, ddr); } } }
public static appDB.ddFieldRow LookupDDFieldRow(atriumManager atmng, string table, string field) { appDB.ddFieldRow returnDDField = null; appDB.ddFieldRow[] ddFields = (appDB.ddFieldRow[])atmng.DB.ddField.Select("tablename='" + table + "' and fieldname='" + field + "'", ""); if (ddFields.Length > 0) { returnDDField = ddFields[0]; } return(returnDDField); }
protected override void AfterAdd(DataRow dr) { appDB.ddFieldRow dtr = (appDB.ddFieldRow)dr; string ObjectName = this.myddFieldDT.TableName; dtr.FieldId = this.myA.PKIDGet(ObjectName, 1); dtr.FieldName = "New Field"; dtr.AllowInRelatedFields = true; dtr.isFromView = false; dtr.isVirtualColumn = false; dtr.isMissing = false; }
protected override void AfterChange(DataColumn dc, DataRow dr) { appDB.ddFieldRow dtr = (appDB.ddFieldRow)dr; switch (dc.ColumnName) { case "FieldName": if (!dtr.ddTableRow.isDynamic) { dtr.DBFieldName = dtr.FieldName; } break; } }
public void DynBeforeChange(BEManager be, DataColumn dc, DataRow dr, Dictionary <string, appDB.ddFieldRow> ruleColumnMap) { //find row in ddfield if (ruleColumnMap.ContainsKey(dc.ColumnName)) { FileManager fm = GetFMFromBE(be); appDB.ddFieldRow dfr = ruleColumnMap[dc.ColumnName]; //find rules for field foreach (appDB.ddRuleRow ddr in dfr.GetddRuleRows()) { //for "beforechange" event if ((ddr.EventId == 1 | ddr.EventId == 10) && ddr.Enabled) { //check rules RunRule(dc, dr, ruleColumnMap, fm, dfr, ddr); } } } }
private void RunRule(DataColumn columnToCheck, DataRow rowToCheck, Dictionary <string, appDB.ddFieldRow> ruleColumnMap, FileManager fm, appDB.ddFieldRow fieldDefinition, appDB.ddRuleRow ruleToRun) { string Left = "Left" + myA.AppMan.Language; switch (ruleToRun.RuleTypeId) { case 0: //code based ExecuteCodeRule(columnToCheck, rowToCheck, fm, ruleToRun); break; case 1: //required if (rowToCheck.IsNull(columnToCheck)) { throw new RequiredException(fieldDefinition[Left].ToString()); } break; case 2: //acseries based EvaluateRule(fm, ruleToRun, rowToCheck); break; case 3: //domain if (!rowToCheck.IsNull(columnToCheck)) { if (!fm.Codes(ruleToRun.Val1).Rows.Contains(rowToCheck[columnToCheck])) { throw new AtriumException(atriumBE.Properties.Resources.IsNotValid, fieldDefinition[Left].ToString()); } } break; case 4: //related - must be field on same record if (rowToCheck.IsNull(ruleToRun.Val1)) { throw new RelatedException(fieldDefinition.LeftEng, ruleColumnMap[ruleToRun.Val1][Left].ToString()); } break; case 5: //old domain check if (!rowToCheck.IsNull(columnToCheck)) { if (!myA.CheckDomain(rowToCheck[columnToCheck].ToString(), fm.Codes(ruleToRun.Val1))) { throw new AtriumException(atriumBE.Properties.Resources.BadDomainValue, fieldDefinition[Left].ToString(), fieldDefinition.ddTableRow["Description" + myA.AppMan.Language].ToString(), ruleToRun.Val1); } } break; case 6: //valid date if (!rowToCheck.IsNull(columnToCheck)) { DateTime beginDate; DateTime endDate; DateTime dateValue = (DateTime)rowToCheck[columnToCheck]; string name1 = ruleToRun.Val1; string name2 = ruleToRun.Val2; if (ruleColumnMap.ContainsKey(ruleToRun.Val1)) { beginDate = (DateTime)rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName]; name1 = ruleColumnMap[ruleToRun.Val1][Left].ToString(); } else { beginDate = (DateTime)fm.GetDefaultValue(ruleToRun.Val1); } if (ruleColumnMap.ContainsKey(ruleToRun.Val2)) { endDate = (DateTime)rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName]; name2 = ruleColumnMap[ruleToRun.Val2][Left].ToString(); } else { endDate = (DateTime)fm.GetDefaultValue(ruleToRun.Val2); } if (dateValue < beginDate || dateValue > endDate) { throw new DateBetweenException(fieldDefinition[Left].ToString(), name1, beginDate.ToShortDateString(), name2, endDate.ToShortDateString()); } } break; case 7: //numeric range if (!rowToCheck.IsNull(columnToCheck)) { int v1, v2, thisVal; if (ruleColumnMap.ContainsKey(ruleToRun.Val1)) { v1 = System.Convert.ToInt32(rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName]); } else { v1 = System.Convert.ToInt32(fm.GetDefaultValue(ruleToRun.Val1)); } if (ruleColumnMap.ContainsKey(ruleToRun.Val2)) { v2 = System.Convert.ToInt32(rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName]); } else { v2 = System.Convert.ToInt32(fm.GetDefaultValue(ruleToRun.Val2)); } thisVal = System.Convert.ToInt32(rowToCheck[columnToCheck]); if (thisVal < v1 || thisVal > v2) { throw new AtriumException("Outside numeric range"); } } break; case 8: //string length range if (!rowToCheck.IsNull(columnToCheck)) { int v1, v2, thisVal; if (ruleColumnMap.ContainsKey(ruleToRun.Val1)) { v1 = (int)rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName]; } else { v1 = (int)fm.GetDefaultValue(ruleToRun.Val1); } if (ruleColumnMap.ContainsKey(ruleToRun.Val2)) { v2 = (int)rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName]; } else { v2 = (int)fm.GetDefaultValue(ruleToRun.Val2); } thisVal = rowToCheck[columnToCheck].ToString().Length; if (thisVal < v1 || thisVal > v2) { throw new AtriumException("Length out of range"); } } break; case 99: //action if (!ruleToRun.IsACSeriesIdNull()) { ExecuteAction(fm, ruleToRun, rowToCheck); } break; case 100: //action program ExecuteCodeAction(columnToCheck, rowToCheck, fm, ruleToRun); break; default: throw new AtriumException("Not a valid rule"); } }
public void Populate(appDB.ddTableRow drTable) { DataTable dtTyped = null; try { atLogic.BEManager mngr = myA.GetFile(0).GetBEMngrForTable(drTable.DBTableName); dtTyped = mngr.MyDS.Tables[drTable.DBTableName]; } catch (Exception x) { //ignore } DataTable dtViews = myA.GetGeneralRec("select * from information_schema.columns where table_schema='dbo' and table_name='v" + drTable.DBTableName + "' "); DataTable dtTable = myA.GetGeneralRec("select * from information_schema.columns where table_schema='dbo' and table_name='" + drTable.DBTableName + "' "); if (dtTable.Rows.Count == 0) { drTable.isDBTable = false; } else { drTable.isDBTable = true; } if (dtTyped != null) { foreach (DataColumn dc in dtTyped.Columns) { appDB.ddFieldRow drField; if (myA.DB.ddField.Select("Tableid=" + drTable.TableId.ToString() + " and DBFieldName='" + dc.ColumnName + "'").Length == 0) { drField = (appDB.ddFieldRow)Add(drTable); drField.FieldName = dc.ColumnName; drField.DBFieldName = dc.ColumnName; if (drTable.isDynamic) { drField.AllowInRelatedFields = false; } } else { drField = (appDB.ddFieldRow)myA.DB.ddField.Select("Tableid=" + drTable.TableId.ToString() + " and DBFieldName='" + dc.ColumnName + "'")[0]; } drField.isMissing = true; drField.DataType = dc.DataType.Name; if (drField.IsLeftEngNull()) { drField.LeftEng = SplitCamelCase(drField.FieldName); drField.LeftFre = SplitCamelCase(drField.FieldName); } if (dtViews.Select("Column_name='" + dc.ColumnName + "'", "").Length == 0) { drField.isVirtualColumn = true; } else { drField.isMissing = false; drField.isVirtualColumn = false; } if (!drField.isVirtualColumn && dtTable.Select("Column_name='" + dc.ColumnName + "'", "").Length == 0) { drField.isFromView = true; } else { drField.isMissing = false; drField.isFromView = false; } } //check for "obsolete" columns foreach (appDB.ddFieldRow drf in drTable.GetddFieldRows()) { if (!dtTyped.Columns.Contains(drf.DBFieldName)) { drf.AllowInRelatedFields = false; drf.DescEng = "OBSOLETE"; } } } else { foreach (DataRow dr in dtViews.Rows) { if (myA.DB.ddField.Select("Tableid=" + drTable.TableId.ToString() + " and DBFieldName='" + dr["Column_name"].ToString() + "'").Length == 0) { appDB.ddFieldRow drField = (appDB.ddFieldRow)Add(drTable); drField.FieldName = dr["Column_name"].ToString(); if (dtTable.Select("Column_name='" + drField.FieldName + "'", "").Length == 0) { drField.isFromView = true; drField.isMissing = false; } } } } }