protected virtual bool SkipExtNulls(DataRow R, CopyContext Ctx) { foreach (string field in SkipFieldsWhenNull) { if (R[field] == DBNull.Value) { continue; } object o = null; if (myContext.IsDefined(field)) { //I traduttori privati prevalgono su quelli pubblici e non risentono del codice esterno o = myContext.Translate(field, R[field]); } else { o = Ctx.Translate(GetExternalCodeForField(field), R[field]); } if (o == null || o == DBNull.Value) { return(true); } } return(false); }
protected void Comment(DataAccess Dest, CopyContext Ctx, CopyDisplay CD) { DataTable T = Dest.CreateTableByName(table, "*"); //Verifica quanti codici sono definiti e crea una stringa string comment = ""; foreach (DataColumn C in T.Columns) { string extcode = GetExternalCodeForField(C.ColumnName); //esamina i campi a codifica esterna if (extcode != C.ColumnName) { comment += "[" + C.ColumnName + " -> " + extcode + "] "; } if (myContext.IsDefined(extcode)) { if (extcode == C.ColumnName) { comment += "[" + extcode + " priv]"; } } else { if (Ctx.IsDefined(extcode)) { if (extcode == C.ColumnName) { comment += "[" + extcode + " ext]"; } } else { if (extcode != C.ColumnName) { comment += "\r\n\r\n>>>>>>>> E R R O R : " + extcode + " is not a defined translator <<<<<<<<<\r\n\r\n"; } } } } foreach (string field in SkipFieldsWhenNull) { comment += "[Skips on " + field + " null] "; } if (comment != "") { comment = "Table " + table.ToUpper() + ":" + comment; CD.Comment(comment); } }
/// <summary> /// Checks whether external fields have already been defined /// </summary> /// <param name="Ctx"></param> /// <param name="L"></param> /// <returns></returns> public bool CheckDependencies(CopyContext Ctx, List <string> L) { foreach (DataColumn C in T.Columns) { string codetosearch = GetExternalCodeForField(C.ColumnName); if (!L.Contains(codetosearch)) { continue; //non è nella mandatory list, tutto ok } if (PRETrlist.ContainsKey(codetosearch)) { continue; //è un campo gestito da questo copyer stesso } //è nella mandatorylist, vede se il Contesto per quel campo è stato definito if (Ctx.IsDefined(codetosearch)) { continue; } return(false); //field has not yet been defined } return(true); }