//──────────────────────────────────────── /// <summary> /// 「Aa_Files.csv」に書かれている「テーブル」と「スクリプト」を読取り、登録します。 /// </summary> private void ReadAndRegisterFiles( Table_Humaninput xenonTable_Aafilescsv, Log_Reports log_Reports ) { // // // //()メソッド開始 // // // Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "ReadAndRegisterFiles", log_Reports); string err_STypedata; // // // // 「Aa_Files.csv」自身の絶対ファイルパス // // // string sFpatha_Aafilescsv; if (log_Reports.Successful) { sFpatha_Aafilescsv = xenonTable_Aafilescsv.Expression_Filepath_ConfigStack.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports); if (!log_Reports.Successful) { // 既エラー。 goto gt_EndMethod; } } else { sFpatha_Aafilescsv = null; } // // // //「TYPE_DATA」というフィールドは必須です。 // // // bool isExists_FieldTypedata; if (log_Reports.Successful) { if (xenonTable_Aafilescsv.DataTable.Columns.Contains(NamesFld.S_TYPE_DATA)) { isExists_FieldTypedata = true; } else { isExists_FieldTypedata = false; } } else { isExists_FieldTypedata = false; } int err_NRow = 1;//行番号 if (log_Reports.Successful) { // // テーブルを全て(読み込まないもの除く)読み取ります。 // foreach (DataRow datarow in xenonTable_Aafilescsv.DataTable.Rows) { Request_ReadsTable requestRead = this.CreateReadRequest( datarow, xenonTable_Aafilescsv, log_Reports); if (!log_Reports.Successful) { //既エラー時、ループ抜け。 break; } // // テーブルを読み取るのか、XMLを読み取るのかの区別。 // if ( ValuesTypeData.TestTable(requestRead.Typedata) || !isExists_FieldTypedata //TYPE_DATAフィールドそのものが無ければ、エラーとはせず、テーブルとして読み込みます。 ) { // // テーブルなら。 // Format_Table_Humaninput forTable_format = this.Read_RequestPart_Table( datarow, sFpatha_Aafilescsv, log_Reports); Table_Humaninput oTable; // テーブル読取の実行。(書き出し専用の場合は、登録だけする) oTable = this.ReadTable( requestRead, forTable_format, log_Reports ); // テーブルは読み込まなくても、登録はする。 if (log_Reports.Successful) { // アプリケーション・モデルに、テーブルを登録 this.Owner_MemoryApplication.MemoryTables.AddTable_Humaninput( oTable, log_Reports ); } // } else if ( ValuesTypeData.TestCode(requestRead.Typedata) ) { // // XMLなら。 // MemoryCodefileinfo moScriptfileInfo = this.Read_RequestPart_Script( datarow, sFpatha_Aafilescsv, xenonTable_Aafilescsv, log_Reports ); // 登録 if (log_Reports.Successful) { this.Owner_MemoryApplication.MemoryCodefiles.Add( moScriptfileInfo, log_Reports ); } //requestRead. log_Method.WriteDebug_ToConsole("sTypeData=[" + requestRead.Typedata + "]"); } else { //エラー。 err_STypedata = requestRead.Typedata; goto gt_Error_TypeData; } //エラー報告用の行カウンター。 err_NRow++; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_TypeData: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, NamesFld.S_TYPE_DATA, log_Reports); //フィールド名TYPE_DATA tmpl.SetParameter(2, err_STypedata, log_Reports); //TYPE_DATAフィールドの値 tmpl.SetParameter(3, ValuesTypeData.Message_Allitems(), log_Reports); //TYPE_DATAフィールドに設定できる値のリスト Configurationtree_Node cf = new Configurationtree_NodeImpl("データ部" + err_NRow + "行", xenonTable_Aafilescsv.Parent); tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cf), log_Reports);//設定位置パンくずリスト this.Owner_MemoryApplication.CreateErrorReport("Er:110011;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── public void Add( MemoryCodefileinfo moCodefileInfo, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_MiddleImpl.Name_Library, this, "Add", log_Reports); string sName_Trimed = moCodefileInfo.Name.Trim(); if ("" == sName_Trimed) { // エラー goto gt_Error_NoName; } if (log_Reports.Successful) { if (!this.Dictionary_Table.ContainsKey(sName_Trimed)) { this.Dictionary_Table[sName_Trimed] = moCodefileInfo; } else { // エラー goto gt_Error_OverlappedName; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NoName: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー323!", log_Method); StringBuilder s = new StringBuilder(); s.Append("スクリプトファイル呼出名を指定してください。無名です。["); s.Append(moCodefileInfo.Name); s.Append("]"); s.Append(Environment.NewLine); s.Append(Environment.NewLine); // ヒント r.Message = s.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_OverlappedName: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー322!", log_Method); StringBuilder s = new StringBuilder(); s.Append("登録しようとしたスクリプトファイル呼出名は、既に登録されていました。["); s.Append(moCodefileInfo.Name); 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); }
//──────────────────────────────────────── public void Add( MemoryCodefileinfo moCodefileInfo, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_MiddleImpl.Name_Library, this, "Add",log_Reports); string sName_Trimed = moCodefileInfo.Name.Trim(); if ("" == sName_Trimed) { // エラー goto gt_Error_NoName; } if (log_Reports.Successful) { if (!this.Dictionary_Table.ContainsKey(sName_Trimed)) { this.Dictionary_Table[sName_Trimed] = moCodefileInfo; } else { // エラー goto gt_Error_OverlappedName; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NoName: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー323!", log_Method); StringBuilder s = new StringBuilder(); s.Append("スクリプトファイル呼出名を指定してください。無名です。["); s.Append(moCodefileInfo.Name); s.Append("]"); s.Append(Environment.NewLine); s.Append(Environment.NewLine); // ヒント r.Message = s.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_OverlappedName: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー322!", log_Method); StringBuilder s = new StringBuilder(); s.Append("登録しようとしたスクリプトファイル呼出名は、既に登録されていました。["); s.Append(moCodefileInfo.Name); 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); }