//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// DataRow → Dictionary /// </summary> /// <param name="row"></param> /// <param name="log_Reports"></param> public void Add(DataRow row, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Table.Name_Library, this, "Add", log_Reports); Dictionary <string, Cell> record = new Dictionary <string, Cell>(); int nFieldCount = row.ItemArray.Length; for (int nFieldIndex = 0; nFieldIndex < nFieldCount; nFieldIndex++) { // フィールド名 string sFieldName = xTable.RecordFielddef.ValueAt(nFieldIndex).Name_Trimupper; // 値 Cell oValue; if (row[nFieldIndex] is DBNull) { //// デバッグ //if (true) //{ //Log_TextIndented txt = new Log_TextIndentedImpl(); // txt.Append(InfxenonTable.LibraryName + ":" + this.GetType().Name + "#Add:【ヌル】"); // txt.Append(" field=[" + sFieldName + "]"); // ystem.Console.WriteLine(txt.ToString()); //} String sConfigStack = xTable.Expr_Filepath_ConfigStack.Lv4Execute_OnImplement( EnumHitcount.Unconstraint, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } EnumTypeFielddef typeField = xTable.RecordFielddef.ValueAt(nFieldIndex).Type_Field; switch (typeField) { case EnumTypeFielddef.String: oValue = new StringCellImpl(sConfigStack); break; case EnumTypeFielddef.Int: oValue = new IntCellImpl(sConfigStack); break; case EnumTypeFielddef.Bool: oValue = new BoolCellImpl(sConfigStack); break; default: // エラー。 goto gt_Error_UndefinedType; } } else { oValue = (Cell)row[nFieldIndex]; //// デバッグ //if (true) //{ //Log_TextIndented txt = new Log_TextIndentedImpl(); // txt.Append(InfxenonTable.LibraryName + ":" + this.GetType().Name + "#Add:【○】"); // txt.Append(" 値=[" + oValue.HumanInputString + "]"); // ystem.Console.WriteLine(txt.ToString()); //} } record.Add(sFieldName, oValue); } this.List_Field.Add(record); // 正常 goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_UndefinedType: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー293!", log_Method); Log_TextIndented s = new Log_TextIndentedImpl(); s.Append(" 未定義の型です。プログラムのミスの可能性があります。"); s.Append(Environment.NewLine); s.Append(Environment.NewLine); r.Message = s.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return; }
//──────────────────────────────────────── #endregion #region 生成と破棄 //──────────────────────────────────────── /// <summary> /// コンストラクター。 /// </summary> /// <param name="name_humanInput"></param> /// <param name="typeField">string,int,boolに対応。</param> public FielddefImpl(string name_Humaninput, EnumTypeFielddef typeField) { this.Name_Humaninput = name_Humaninput; this.Type_Field = typeField; this.comment = ""; }
// ────────────────────────────── public void Perform( ref Builder_TexttemplateP1pImpl ref_FormatString, DataRowView dataRowView, Table_Humaninput xenonTable, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Table.Name_Library, this, "Perform", log_Reports); // TODO IDは「前ゼロ付き文字列」または「int型」なので、念のため一度文字列に変換。 int nP1pNumber = 1; foreach (Fieldkey fieldKey in list_FieldKeies) { //"[" + oTable.Name + "]テーブルの或る行の[" + fieldKey.Name + "]フィールド値。"//valueOTable.SourceFilePath.HumanInputText Cell valueH = Utility_Row.GetFieldvalue( fieldKey.Name, dataRowView.Row, true, log_Reports, fieldKey.Description ); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } // 正常時 EnumTypeFielddef typeFd = FielddefImpl.TypefieldFromString(fieldKey.Name_Type, true, log_Reports); switch (typeFd) { case EnumTypeFielddef.String: { ref_FormatString.ParameterMap.Add( nP1pNumber, valueH.Text // String_HumaninputImpl.ParseString(valueH) ); } break; case EnumTypeFielddef.Int: { ref_FormatString.ParameterMap.Add( nP1pNumber, valueH.Text // Int_HumaninputImpl.ParseString(valueH) ); } break; case EnumTypeFielddef.Bool: { ref_FormatString.ParameterMap.Add( nP1pNumber, valueH.Text // Bool_HumaninputImpl.ParseString(valueH) ); } break; default: { // 未定義の型は、string扱い。 ref_FormatString.ParameterMap.Add( nP1pNumber, valueH.Text // String_HumaninputImpl.ParseString(valueH) ); } break; } nP1pNumber++; }//foreach // 正常 goto gt_EndMethod; // gt_EndMethod: log_Method.EndMethod(log_Reports); return; }