//──────────────────────────────────────── /// <summary> /// コンストラクター。 /// </summary> public Request_ReadsTableImpl() { this.name_PutToTable = ""; this.use = ""; { Conf_String s_ParentNode = new Conf_StringImpl("!ハードコーディング_Request_TableReadsImpl#<init>", null); Conf_Filepath s_fpath = new Conf_FilepathImpl("ファイルパス出典未指定L02_1", s_ParentNode); this.expression_Filepath = new Expr_FilepathImpl(s_fpath); } }
//──────────────────────────────────────── /// <summary> /// 例えば、次の2つの物を与えると、 /// ●ID=10、EXPL=赤、と入っている行。 /// ●「%1%:%2%|ID|EXPL」という文字列。 /// /// すると、次の文字列が返ってくる。 /// ●「10:EXPL」 /// /// %1%はID、%2%はEXPLに当たる。 /// </summary> /// <param name="sFormat"></param> /// <param name="dataRowView"></param> /// <param name="xenonTable"></param> /// <param name="sErrorMsg"></param> /// <returns></returns> public string Perform( string sFormat, DataRowView dataRowView, Table_Humaninput xenonTable, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Table.Name_Library, this, "Perform", log_Reports); string result; if (null == xenonTable) { // エラー // テーブルが未指定の場合 goto gt_Error_NullTable; } CsvTo_DataTableImpl reader = new CsvTo_DataTableImpl(); reader.CharSeparator = '|'; DataTable scriptParameters = reader.Read( sFormat ); if (scriptParameters.Rows.Count < 1) { // 警告 // 項目の表示書式が指定されていない場合 // result = "(【Er:301;】表示書式未指定、レイアウト設定で)"; // エラーにはしない。 if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole("(【Er:301;】表示書式未指定、レイアウト設定で)"); } goto gt_EndMethod; } DataRow dataRow = scriptParameters.Rows[0]; object[] recordFields = dataRow.ItemArray;// ItemArrayは1回の呼び出しが重い。 Builder_TexttemplateP1pImpl formatString = new Builder_TexttemplateP1pImpl(); formatString.Text = recordFields[0].ToString();//例:"%1%:%2%" //.Console.WriteLine(this.GetType().Name + "#CreateText: recordFields[0].ToString()=[" + recordFields[0].ToString() + "]"); FieldToParameters fieldToParameters = new FieldToParameters(); Conf_String parent_Conf_String = new Conf_StringImpl("!ハードコーディング_RecordFormatStringImpl#CreateText", null); // フィールド名のリストが続く。 for (int nIndex = 1; nIndex < recordFields.Length; nIndex++) { //.Console.WriteLine(this.GetType().Name + "#CreateText: index=[" + index + "] recordFields[index].ToString()=[" + recordFields[index].ToString() + "]"); string sFieldName = recordFields[nIndex].ToString(); fieldToParameters.AddField( sFieldName, xenonTable, log_Reports ); if (!log_Reports.Successful) { // 既エラー。 result = "(エラー)"; goto gt_EndMethod; } } fieldToParameters.Perform(ref formatString, dataRowView, xenonTable, log_Reports); if (!log_Reports.Successful) { // 既エラー。 result = "(エラー)"; goto gt_EndMethod; } result = formatString.Perform(log_Reports); goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullTable: result = "(テーブルが未指定です)"; if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー131!", log_Method); r.Message = "(エラー。テーブルが未指定です)"; log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(result); }