//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <returns></returns> public Expression_Node_Filepath Execute4_OnExpressionString_AsFilepath( EnumHitcount request, Log_Reports log_Reports ) { return(Expression_Node_StringImpl.Execute4_OnExpressionString_AsFilepath_Impl(this, request, log_Reports)); }
//──────────────────────────────────────── /// <summary> /// 例えば ("access",”from”)と指定すれば、 /// 指定リストの要素の中で <~ access=”from,to”> といった属性を持つものはヒットする。 /// /// 選択アイテムをリストから除外するなら bRemove=true にします。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request_Items"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static List <Expression_Node_String> SelectItemsByPmAsCsv( List <Expression_Node_String> ecList_Item, string sPmName, string sExpectedValue, bool bRemove, EnumHitcount hits, Log_Reports log_Reports) { Log_Method pg_Method = new Log_MethodImpl(0); pg_Method.BeginMethod(Info_Controls.Name_Library, "Util_E_NodeImpl", "SelectItemsByAttrAsCsv", log_Reports); // // //Util_E_NodeImpl dammy_This = new Util_E_NodeImpl(); List <Expression_Node_String> ecList_Result; ecList_Result = Utility_Expression_NodeImpl.SelectItemsByPmAsCsv_Full_( ecList_Item, sPmName, false, sExpectedValue, bRemove, hits, log_Reports ); goto gt_EndMethod; // // gt_EndMethod: pg_Method.EndMethod(log_Reports); // 正常終了 return(ecList_Result); }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <returns></returns> public override Expression_Node_Filepath Execute4_OnExpressionString_AsFilepath( EnumHitcount request, Log_Reports log_Reports ) { return(this); }
//──────────────────────────────────────── /// <summary> /// 内容を文字列型で返します。 /// </summary> /// <param name="log_Reports"></param> /// <returns></returns> public virtual string Execute4_OnExpressionString( EnumHitcount request, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Execute4_OnExpressionString①", log_Reports); // // string sResult; sResult = this.Execute5_Main(log_Reports); // // // // // もとに戻す this.enumHitcount = EnumHitcount.Unconstraint; goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(sResult); }
public List <Expr_String> SelectList( EnumHitcount request, Log_Reports log_Reports ) { return(this.items); }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <returns></returns> public override Expr_Filepath Lv4Execute_OnImplement_AsFilepath( EnumHitcount request, Log_Reports log_Reports ) { return(this); }
//──────────────────────────────────────── /// <summary> /// 例えば ("access",”from”)と指定すれば、 /// 指定リストの要素の中で <~ access=”from,to”> といった属性を持つものはヒットする。 /// /// 選択アイテムをリストから除外するなら bRemove=true にします。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request_Items"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static List<Expression_Node_String> SelectItemsByPmAsCsv( List<Expression_Node_String> ecList_Item, string sPmName, string sExpectedValue, bool bRemove, EnumHitcount hits, Log_Reports log_Reports) { Log_Method pg_Method = new Log_MethodImpl(0); pg_Method.BeginMethod(Info_Controls.Name_Library, "Util_E_NodeImpl", "SelectItemsByAttrAsCsv",log_Reports); // // //Util_E_NodeImpl dammy_This = new Util_E_NodeImpl(); List<Expression_Node_String> ecList_Result; ecList_Result = Utility_Expression_NodeImpl.SelectItemsByPmAsCsv_Full_( ecList_Item, sPmName, false, sExpectedValue, bRemove, hits, log_Reports ); goto gt_EndMethod; // // gt_EndMethod: pg_Method.EndMethod(log_Reports); // 正常終了 return ecList_Result; }
//──────────────────────────────────────── /// <summary> /// @Deprecated /// 一覧。 /// </summary> public List <Configurationtree_Node> SelectList( EnumHitcount request, Log_Reports log_Reports ) { return(list_Configurationtree_Node); }
//──────────────────────────────────────── /// <summary> /// 内容を文字列型で返します。 /// </summary> /// <param name="log_Reports"></param> /// <returns></returns> public virtual string Lv4Execute_OnImplement( EnumHitcount request, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Lv4Execute_OnImplement①", log_Reports); // // string result = this.Lv5_Implement(log_Reports); // // // // // もとに戻す this.enumHitcount = EnumHitcount.Unconstraint; goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(result); }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <returns></returns> public virtual Expr_Filepath Lv4Execute_OnImplement_AsFilepath( EnumHitcount request, Log_Reports log_Reports ) { return(Expr_StringImpl.Execute4_OnExpressionString_AsFilepath_Impl(this, request, log_Reports)); }
public List <Expression_Node_String> SelectList( EnumHitcount request, Log_Reports log_Reports ) { return(this.listExpression_Item); }
//──────────────────────────────────────── /// <summary> /// @Deprecated /// 一覧。 /// </summary> public List <Conf_String> SelectList( EnumHitcount request, Log_Reports log_Reports ) { return(items); }
/// <summary> /// コンストラクター。 /// </summary> public Expression_Leaf_StringImpl(string sHumanInput, Expression_Node_String parent_Expression, Configuration_Node cur_Conf) { this.sHumanInput = sHumanInput; this.parent_Expression = parent_Expression; this.cur_Configuration = cur_Conf; this.enumHitcount = EnumHitcount.Unconstraint; this.dictionary_Expression_Attribute = new Dictionary_Expression_Node_StringImpl(this.Cur_Configuration); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// ユーザー定義プログラムの実行。 /// </summary> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns></returns> public override string Execute4_OnExpressionString( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Execute4_OnExpressionString", log_Reports); // // // // 子<a-●●>要素の実行。 // // 全部真なら真、1つでも偽なら偽。 bool bResult = true; { List <Expression_Node_String> ecList_Child = this.List_Expression_Child.SelectList(//Nv_Elem EnumHitcount.Unconstraint, log_Reports ); // ★★★★★★★★★ここが遅い? 42項目あると、42個全部調べることになります。 //ystem.Console.WriteLine(this.GetType().Name + "#GetString: 全部真か? childNList.Count=[" + childNList.Count + "]"); foreach (Expression_Node_String ec_11 in ecList_Child) { Expressionv_Elem99 ecv_Elem = (Expressionv_Elem99)ec_11; ecv_Elem.SetDataRow(this.DataRow); string str = ecv_Elem.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); // ★★★★★★★★★ここが遅い? 42項目あると、42個全部調べることになります。 //ystem.Console.WriteLine(this.GetType().Name + "#GetString: str=[" + str + "]"); bool bChild; if (Boolean.TryParse(str, out bChild)) { if (!bChild) { bResult = false; goto loop_end; } } } loop_end: ;//空文 } // // // // log_Method.EndMethod(log_Reports); return(bResult.ToString()); }
//──────────────────────────────────────── /// <summary> /// コンストラクター。 /// </summary> /// <param name="parent_Expression"></param> /// <param name="cur_Conf">生成時に指定できないものもある。</param> public Expression_Node_StringImpl(Expression_Node_String parent_Expression, Configuration_Node cur_Conf) { this.parent_Expression = parent_Expression; this.cur_Configuration = cur_Conf; enumHitcount = EnumHitcount.Unconstraint; this.ecList_Child = new List_Expression_Node_StringImpl(this); this.dictionary_Expression_Attribute = new Dictionary_Expression_Node_StringImpl(this.Cur_Configuration); }
//──────────────────────────────────────── /// <summary> /// ユーザー定義プログラムの実行。 /// </summary> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns></returns> public override string Execute4_OnExpressionString( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Execute4_OnExpressionString",log_Reports); // // // // 子<a-●●>要素の実行。 // // 全部真なら真、1つでも偽なら偽。 bool bResult = true; { List<Expression_Node_String> ecList_Child = this.List_Expression_Child.SelectList(//Nv_Elem EnumHitcount.Unconstraint, log_Reports ); // ★★★★★★★★★ここが遅い? 42項目あると、42個全部調べることになります。 //ystem.Console.WriteLine(this.GetType().Name + "#GetString: 全部真か? childNList.Count=[" + childNList.Count + "]"); foreach (Expression_Node_String ec_11 in ecList_Child) { Expressionv_Elem99 ecv_Elem = (Expressionv_Elem99)ec_11; ecv_Elem.SetDataRow(this.DataRow); string str = ecv_Elem.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); // ★★★★★★★★★ここが遅い? 42項目あると、42個全部調べることになります。 //ystem.Console.WriteLine(this.GetType().Name + "#GetString: str=[" + str + "]"); bool bChild; if (Boolean.TryParse(str, out bChild)) { if (!bChild) { bResult = false; goto loop_end; } } } loop_end: ;//空文 } // // // // log_Method.EndMethod(log_Reports); return bResult.ToString(); }
/// <summary> /// E_Elm属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute( out Expression_Node_String ec_Result_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { return(this.Dictionary_Expression_Attribute.TrySelect( out ec_Result_Out, sName, hits, log_Reports)); }
/// <summary> /// E_Elm属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute( out Expr_String out_eResult, string sName, EnumHitcount hits, Log_Reports log_Reports ) { return(this.Attributes.TrySelect( out out_eResult, sName, hits, log_Reports)); }
//──────────────────────────────────────── /// <summary> /// E_Elm属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute_ExpressionFilepath( out Expr_Filepath out_eResult, string sName, EnumHitcount hits, Log_Reports log_Reports ) { return(this.Attributes.TrySelect_ExpressionFilepath( out out_eResult, sName, hits, log_Reports)); }
//──────────────────────────────────────── /// <summary> /// コンストラクター。 /// </summary> public Expression_TexttemplateP1pImpl(Expression_Node_String parent_Expr, Configurationtree_Node cur_Conf) { this.parent_Expression = parent_Expr; this.cur_Configurationtree = cur_Conf; this.requestItems = EnumHitcount.Unconstraint; this.dictionary_P1p = new Dictionary<int, string>(); this.list_Expression_Child = new List_Expression_Node_StringImpl(this);//使いません。 this.dictionary_Expression_Attribute = new Dictionary_Expression_Node_StringImpl(this.Cur_Configuration); }
/// <summary> /// 属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="name"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute( out Expr_String eResult_Out, string name, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 eResult_Out = new Expr_StringImpl(this, this.Conf); return(false); }
/// <summary> /// 属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute( out Expr_String out_eResult, string sName, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 out_eResult = new Expr_StringImpl(this, null); return(false); }
public bool TrySelectAttribute( out string sResult_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 sResult_Out = ""; return(false); }
/// <summary> /// 属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute( out Expression_Node_String ec_Result_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 ec_Result_Out = new Expression_Node_StringImpl(this, this.Cur_Configuration); return(false); }
//──────────────────────────────────────── /// <summary> /// 指定の属性を持っていれば、無条件一致 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request_Items"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static List <Expression_Node_String> SelectItemsByPmAsCsv_Unconditional( List <Expression_Node_String> ecList_Item, string sPmName, bool bRemove, EnumHitcount hits, Log_Reports log_Reports) { return(Utility_Expression_NodeImpl.SelectItemsByPmAsCsv_Full_( ecList_Item, sPmName, true, "", bRemove, hits, log_Reports )); }
//──────────────────────────────────────── /// <summary> /// 属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute_ExpressionFilepath( out Expression_Node_Filepath ec_Result_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 Configurationtree_NodeFilepath filepath_Conf = new Configurationtree_NodeFilepathImpl(sName, this.Cur_Configuration); filepath_Conf.InitPath("", log_Reports); ec_Result_Out = new Expression_Node_FilepathImpl(filepath_Conf); return(false); }
//──────────────────────────────────────── /// <summary> /// 指定の属性を持っていれば、無条件一致 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request_Items"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static List<Expression_Node_String> SelectItemsByPmAsCsv_Unconditional( List<Expression_Node_String> ecList_Item, string sPmName, bool bRemove, EnumHitcount hits, Log_Reports log_Reports) { return Utility_Expression_NodeImpl.SelectItemsByPmAsCsv_Full_( ecList_Item, sPmName, true, "", bRemove, hits, log_Reports ); }
//──────────────────────────────────────── /// <summary> /// 属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="name"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute_ExpressionFilepath( out Expr_Filepath eResult_Out, string name, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 eResult_Out = Expr_FilepathImpl.Init2( "", "", name, this.Conf, log_Reports ); return(false); }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <returns></returns> public static Expr_Filepath Execute4_OnExpressionString_AsFilepath_Impl( Expr_String eCaller, EnumHitcount request, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, eCaller, "Execute4_OnExpressionString_AsFilepath_Impl", log_Reports); // // // // Expr_Filepath reulst_eRel; // // ファイルパス。 string sFpath = eCaller.Lv5_Implement(log_Reports); { reulst_eRel = Expr_FilepathImpl.Init2( "", sFpath, "ファイルパス出典未指定L01_1", eCaller.Conf, log_Reports ); if (!log_Reports.Successful) { // 既エラー。 reulst_eRel = null; goto gt_EndMethod; } } goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(reulst_eRel); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// ユーザー定義プログラムの実行。 /// </summary> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns></returns> public override string Execute4_OnExpressionString( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Execute4_OnExpressionString", log_Reports); // // // // // // log_Method.EndMethod(log_Reports); return("<未実装>"); }
//──────────────────────────────────────── /// <summary> /// 内容を文字列型で返します。 /// </summary> /// <param name="log_Reports"></param> /// <returns></returns> public virtual string Lv4Execute_OnImplement( EnumHitcount req_Items, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Execute4_OnExpressionString", log_Reports); // // // もとに戻す this.enumHitcount = EnumHitcount.Unconstraint; string sResult = this.Lv5_Implement(log_Reports); // // log_Method.EndMethod(log_Reports); return(sResult); }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <returns></returns> public static Expression_Node_Filepath Execute4_OnExpressionString_AsFilepath_Impl( Expression_Node_String ec_Caller, EnumHitcount request, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, ec_Caller, "Execute4_OnExpressionString_AsFilepath_Impl", log_Reports); // // // // Expression_Node_Filepath ec_Fpath_result; // // ファイルパス。 string sFpath = ec_Caller.Execute5_Main(log_Reports); { Configurationtree_NodeFilepath cf_Fpath = new Configurationtree_NodeFilepathImpl("ファイルパス出典未指定L01_1", ec_Caller.Cur_Configuration); cf_Fpath.InitPath(sFpath, log_Reports); if (!log_Reports.Successful) { // 既エラー。 ec_Fpath_result = null; goto gt_EndMethod; } ec_Fpath_result = new Expression_Node_FilepathImpl(cf_Fpath); } goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(ec_Fpath_result); }
//──────────────────────────────────────── /// <summary> /// 内容を文字列型で返します。 /// </summary> /// <param name="log_Reports"></param> /// <returns></returns> public string Lv4Execute_OnImplement( EnumHitcount request, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Execute4_OnExpressionString", log_Reports); // // // // string result; // エラーが出ている時は飛ばしたいが、「エラー報告」として利用されることがある。 //if (!log_Reports.Successful) //{ // //エラー // sResult = "<E_P1pImpl:エラー101>"; // goto gt_EndMethod; //} result = this.Lv5_Implement(log_Reports); // もとに戻す this.requestItems = EnumHitcount.Unconstraint; goto gt_EndMethod; // // // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(result); }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <param oNodeName="request"></param> /// <param oNodeName="log_Reports"></param> /// <returns></returns> public Expression_Node_Filepath GetEFilePath( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "GetFilePath", log_Reports); // // Expression_Node_Filepath ec_Fpath_reslt; // // ファイルパス変数の名前 string sVariableName = this.Get00VariableName(log_Reports).Trim(); { // 変数名。 Expression_Leaf_StringImpl ec_Atom = new Expression_Leaf_StringImpl(this, this.Cur_Configuration.Parent); ec_Atom.SetString( sVariableName, log_Reports ); ec_Fpath_reslt = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename( ec_Atom, true, log_Reports ); } // // // // log_Method.EndMethod(log_Reports); return(ec_Fpath_reslt); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// 子要素の文字列を単純に連結。属性は無視。 /// </summary> /// <returns></returns> public override string Execute4_OnExpressionString( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Execute4_OnExpressionString", log_Reports); // // StringBuilder sb_Result = new StringBuilder(); // 属性は無視。 // // 子要素全部。 List <Expression_Node_String> ecList_Child = this.List_Expression_Child.SelectList(//Nv_Elem EnumHitcount.Unconstraint, log_Reports ); foreach (Expression_Node_String ec_11 in ecList_Child) { Expressionv_Elem99 ecv_Elem = (Expressionv_Elem99)ec_11; ecv_Elem.SetDataRow(this.DataRow); sb_Result.Append( ecv_Elem.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) ); } // // // // log_Method.EndMethod(log_Reports); return(sb_Result.ToString()); }
//──────────────────────────────────────── /// <summary> /// 子要素の文字列を単純に連結。属性は無視。 /// </summary> /// <returns></returns> public override string Execute4_OnExpressionString( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Execute4_OnExpressionString",log_Reports); // // StringBuilder sb_Result = new StringBuilder(); // 属性は無視。 // // 子要素全部。 List<Expression_Node_String> ecList_Child = this.List_Expression_Child.SelectList(//Nv_Elem EnumHitcount.Unconstraint, log_Reports ); foreach (Expression_Node_String ec_11 in ecList_Child) { Expressionv_Elem99 ecv_Elem = (Expressionv_Elem99)ec_11; ecv_Elem.SetDataRow(this.DataRow); sb_Result.Append( ecv_Elem.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) ); } // // // // log_Method.EndMethod(log_Reports); return sb_Result.ToString(); }
//──────────────────────────────────────── public List <Expr_String> GetChildElements( EnumHitcount request, Log_Reports log_Reports ) { // // エラー。 Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "GetChildElements", log_Reports); // // // // if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー101!", log_Method); Log_TextIndented t = new Log_TextIndentedImpl(); t.Append("このメソッド " + log_Method.Fullname + " は使わないでください。"); // ヒント t.Append(r.Message_Conf(this.Conf)); r.Message = t.ToString(); log_Reports.EndCreateReport(); } // // log_Method.EndMethod(log_Reports); return(null); }
//──────────────────────────────────────── /// <summary> /// 例えば "data" と指定すれば、 /// 直下の子要素の中で <data > といったノード名を持つものはヒットする。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static List<Expression_Node_String> SelectItemByNodeName( List<Expression_Node_String> listExpression, string sName_ExpectedNode, bool bRemove, EnumHitcount request, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Syntax.Name_Library, "Expression_Node_StringImpl", "SelectItemByNodeName",log_Reports); List<Expression_Node_String> result = new List<Expression_Node_String>(); for (int nI = 0; nI < listExpression.Count; nI++) { Expression_Node_String ec_Item = listExpression[nI]; if (log_Reports.Successful) { if (ec_Item.Cur_Configuration.Name == sName_ExpectedNode) { result.Add(ec_Item); if (bRemove) { // 削除を要求します。 listExpression.RemoveAt(nI); nI--; } if (EnumHitcount.First_Exist == request || EnumHitcount.First_Exist_Or_Zero == request) { // 最初の1件で終了。複数件ヒットするかどうかは判定しない。 break; } } } } if (EnumHitcount.One == request) { // 必ず1件だけヒットする想定。 if (result.Count != 1) { goto gt_errorNotOne; } } else if (EnumHitcount.First_Exist == request) { // 必ずヒットする。複数件あれば、最初の1件だけ取得。 if (0 == result.Count) { goto gt_errorNoHit; } else if (1 < result.Count) { result.RemoveRange(1, result.Count - 1); } } else if (EnumHitcount.First_Exist_Or_Zero == request) { // ヒットすれば最初の1件だけ、ヒットしなければ0件の想定。 if (1 < result.Count) { result.RemoveRange(1, result.Count - 1); } } else { } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_errorNoHit: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー102!", log_Method); StringBuilder sb = new StringBuilder(); sb.Append("必ず、1件以上ヒットする指定でしたが、["); sb.Append(result.Count); sb.Append("]件ヒットしました。"); sb.Append(Environment.NewLine); sb.Append(Environment.NewLine); // ヒント r.Message = sb.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; // // gt_errorNotOne: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー101!", log_Method); StringBuilder sb = new StringBuilder(); sb.Append("必ず、1件のみ取得する指定でしたが、["); sb.Append(result.Count); sb.Append("]件取得しました。"); sb.Append(Environment.NewLine); sb.Append(Environment.NewLine); // ヒント r.Message = sb.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return result; }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <returns></returns> public static Expression_Node_Filepath Execute4_OnExpressionString_AsFilepath_Impl( Expression_Node_String ec_Caller, EnumHitcount request, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, ec_Caller, "Execute4_OnExpressionString_AsFilepath_Impl", log_Reports); // // // // Expression_Node_Filepath ec_Fpath_result; // // ファイルパス。 string sFpath = ec_Caller.Execute5_Main(log_Reports); { Configurationtree_NodeFilepath cf_Fpath = new Configurationtree_NodeFilepathImpl("ファイルパス出典未指定L01_1", ec_Caller.Cur_Configuration); cf_Fpath.InitPath(sFpath, log_Reports); if (!log_Reports.Successful) { // 既エラー。 ec_Fpath_result = null; goto gt_EndMethod; } ec_Fpath_result = new Expression_Node_FilepathImpl(cf_Fpath); } goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); return ec_Fpath_result; }
//──────────────────────────────────────── /// <summary> /// 例えば ("access","from")と指定すれば、 /// 指定リストの要素の中で 「~ access=”from,to”」 といった属性を持つものはヒットする。 /// /// 選択アイテムをリストから除外するなら bRemove=true にします。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request_Items"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static List<Configurationtree_Node> SelectItemsBySAttrAsCsv( List<Configurationtree_Node> items, PmName pmName/*string sName_Attr*/, string sValue_Expected, bool bRemove, EnumHitcount hits, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, "Util_XmlToConfigurationtree_NodeImpl", "SelectItemsBySAttrAsCsv",log_Reports); List<Configurationtree_Node> cfList_Result = new List<Configurationtree_Node>(); for (int nI = 0; nI < items.Count; nI++ ) { Configurationtree_Node cf_Item = items[nI]; if (log_Reports.Successful) { string sValue_Attr; bool bHit = cf_Item.Dictionary_Attribute.TryGetValue(pmName, out sValue_Attr, false, log_Reports); if (bHit) { CsvTo_ListImpl to = new CsvTo_ListImpl(); List<string> sList_Value = to.Read(sValue_Attr); if (sList_Value.Contains(sValue_Expected)) { cfList_Result.Add(cf_Item); if (bRemove) { // 削除 items.RemoveAt(nI); nI--; } if (EnumHitcount.First_Exist == hits || EnumHitcount.First_Exist_Or_Zero == hits) { // 最初の1件で削除は終了。複数件ヒットするかどうかは判定しない。 break; } } } } } //ystem.Console.WriteLine(Info_Forms.LibraryName + ":EUtil_NodeImpl.GetItemsByAttrAsCsv: 直後 list_Result.Count=[" + list_Result.Count + "]"); if (EnumHitcount.One == hits) { // 必ず1件だけヒットする想定。 if (cfList_Result.Count != 1) { goto gt_errorNotOne; } } else if (EnumHitcount.First_Exist == hits) { // 必ずヒットする。複数件あれば、最初の1件だけ取得。 if (0 == cfList_Result.Count) { goto gt_errorNoHit; } else if (1 < cfList_Result.Count) { cfList_Result.RemoveRange(1, cfList_Result.Count - 1); } } else if (EnumHitcount.First_Exist_Or_Zero == hits) { // ヒットすれば最初の1件だけ、ヒットしなければ0件の想定。 if (1 < cfList_Result.Count) { cfList_Result.RemoveRange(1, cfList_Result.Count - 1); } } else { } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_errorNoHit: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cfList_Result.Count.ToString(), log_Reports);//検索ヒット数 memoryApplication.CreateErrorReport("Er:8002;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_errorNotOne: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cfList_Result.Count.ToString(), log_Reports);//検索ヒット数 memoryApplication.CreateErrorReport("Er:8003;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion gt_EndMethod: return cfList_Result; }
//──────────────────────────────────────── /// <summary> /// 例えば ("access",”from”)と指定すれば、 /// 指定リストの要素の中で <~ access=”from,to”> といった属性を持つものはヒットする。 /// /// 選択アイテムをリストから除外するなら bRemove=true にします。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request_Items"></param> /// <param name="log_Reports"></param> /// <returns></returns> private static List<Expression_Node_String> SelectItemsByPmAsCsv_Full_( List<Expression_Node_String> ecList_Item, string sPmName, bool bUnconditional,//無条件一致なら真 string sExpectedValue, bool bRemove, EnumHitcount hits, Log_Reports log_Reports ) { Log_Method pg_Method = new Log_MethodImpl(0); pg_Method.BeginMethod(Info_Controls.Name_Library, "Util_E_NodeImpl", "SelectItemsByAttrAsCsv_Full_",log_Reports); // // //Util_E_NodeImpl dammy_This = new Util_E_NodeImpl(); List<Expression_Node_String> ecList_Result = new List<Expression_Node_String>(); for (int nI = 0; nI < ecList_Item.Count; nI++ ) { Expression_Node_String ec_Item = ecList_Item[nI]; if (log_Reports.Successful) { Expression_Node_String ec_AttrValue; bool bHit = ec_Item.TrySelectAttribute(out ec_AttrValue, sPmName, EnumHitcount.One_Or_Zero, log_Reports); if (bHit) { string sAttrValue = ec_AttrValue.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); CsvTo_ListImpl to = new CsvTo_ListImpl(); List<string> sList_Value = to.Read(sAttrValue); bool bHit10 = false; if(bUnconditional) { //if(""!=sAttrValue) //{ bHit = true; //} } else if(sList_Value.Contains(sExpectedValue)) { bHit10 = true; } if (bHit10) { ecList_Result.Add(ec_Item); if (bRemove) { // 削除 ecList_Item.RemoveAt(nI); nI--; } if (EnumHitcount.First_Exist == hits || EnumHitcount.First_Exist_Or_Zero == hits) { // 最初の1件で削除は終了。複数件ヒットするかどうかは判定しない。 break; } } } } } //ystem.Console.WriteLine(Info_Forms.LibraryName + ":Util_E_NodeImpl.GetItemsByAttrAsCsv: 直後 list_E_Result.Count=[" + list_E_Result.Count + "]"); if (EnumHitcount.One == hits) { // 必ず1件だけヒットする想定。 if (ecList_Result.Count != 1) { goto gt_Error_NotOne; } } else if (EnumHitcount.First_Exist == hits) { // 必ずヒットする。複数件あれば、最初の1件だけ取得。 if (0 == ecList_Result.Count) { goto gt_Error_NoHit; } else if (1 < ecList_Result.Count) { ecList_Result.RemoveRange(1, ecList_Result.Count - 1); } } else if (EnumHitcount.First_Exist_Or_Zero == hits) { // ヒットすれば最初の1件だけ、ヒットしなければ0件の想定。 if (1 < ecList_Result.Count) { ecList_Result.RemoveRange(1, ecList_Result.Count - 1); } } else { } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NoHit: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー102!", pg_Method); Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("必ず、1件以上ヒットする指定でしたが、["); s.Append(ecList_Result.Count); s.Append("]件ヒットしました。"); s.Newline(); s.Newline(); s.AppendI(1, "ヒット件数=["); s.Append(ecList_Result.Count); s.Append("]"); s.Newline(); s.AppendI(1, "items.Count=["); s.Append(ecList_Item.Count); s.Append("]"); s.Newline(); s.AppendI(1, "sPmName=["); s.Append(sPmName); s.Append("]"); s.Newline(); s.AppendI(1, "無条件一致か?=["); s.Append(bUnconditional); s.Append("]"); s.Newline(); s.AppendI(1, "sExpectedValue=["); s.Append(sExpectedValue); s.Append("]"); s.Newline(); s.AppendI(1, "bRemove=["); s.Append(bRemove); s.Append("]"); s.Newline(); s.AppendI(1, "request_Items=["); s.Append(hits); s.Append("]"); s.Newline(); s.Append("┌────────┐処理後に残った内容 要素数=["); s.Append(ecList_Item.Count); s.Append("]"); s.Newline(); foreach (Expression_Node_String e_Item2 in ecList_Item) { string sAttrNameValue; bool bHit = e_Item2.TrySelectAttribute(out sAttrNameValue, sPmName, EnumHitcount.One_Or_Zero, log_Reports); s.AppendI(1, "・「E■["); s.Append(e_Item2.Cur_Configuration.Name); s.Append("] name=”["); s.Append(sAttrNameValue); s.Append("] 値=”["); s.Append(e_Item2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports)); s.Append("]”」"); s.Newline(); e_Item2.ToText_Snapshot(s); } s.Append("└────────┘"); s.Newline(); // ヒント if(1<ecList_Item.Count) { Expression_Node_String parent_Expr = ecList_Item[0].Parent_Expression; if (null != parent_Expr) { s.Append("┌────────┐先頭要素の親"); s.Newline(); parent_Expr.ToText_Snapshot(s); s.Append("└────────┘"); s.Newline(); } } r.Message = s.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_NotOne: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー101!", pg_Method); Log_TextIndented s = new Log_TextIndentedImpl(); s.Append("必ず、1件のみ取得する指定でしたが、["); s.Append(ecList_Result.Count); s.Append("]件取得しました。"); s.Newline(); s.Newline(); s.AppendI(1, "sPmName=["); s.Append(sPmName); s.Append("]"); s.Newline(); s.AppendI(1, "無条件一致か?=["); s.Append(bUnconditional); s.Append("]"); s.Newline(); s.AppendI(1, "sExpectedValue=["); s.Append(sExpectedValue); s.Append("]"); s.Newline(); s.AppendI(1, "bRemove=["); s.Append(bRemove); s.Append("]"); s.Newline(); // ヒント r.Message = s.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: pg_Method.EndMethod(log_Reports); return ecList_Result; }
//──────────────────────────────────────── /// <summary> /// E_Elm属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute_ExpressionFilepath( out Expression_Node_Filepath ec_Result_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { return this.Dictionary_Expression_Attribute.TrySelect_ExpressionFilepath( out ec_Result_Out, sName, hits, log_Reports); }
/// <summary> /// どういう結果が欲しいかの指定。 /// </summary> /// <param name="request"></param> public void SetEnumHitcount( EnumHitcount request ) { enumHitcount = request; }
/// <summary> /// 制約の判定。 /// </summary> /// <param name="log_Reports"></param> /// <returns></returns> private void E_Execute_P4( int nHitsCount,//eRecordList.Count EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "E_Execute_P4",log_Reports); // // switch (hits) { case EnumHitcount.One: if (1 != nHitsCount) { // // エラー。 goto gt_Error_NotOne; // オブジェクトに設定されているプロパティーが想定しない操作と判断。 } break; case EnumHitcount.One_Or_Zero: if (!(1 == nHitsCount || 0 == nHitsCount)) { // // エラー。 goto gt_Error_NotOneOrZero; // オブジェクトに設定されているプロパティーが想定しない操作と判断。 } break; case EnumHitcount.First_Exist_Or_Zero: { // // 特にエラーとなる条件はありません。 } break; case EnumHitcount.Exists: if (nHitsCount < 1) { // // エラー。 goto gt_Error_NotExists; // オブジェクトに設定されているプロパティーが想定しない操作と判断。 } break; case EnumHitcount.Unconstraint: { // // 特にエラーとなる条件はありません。 } break; default: { // // エラー。 goto gt_Error_UndefinedEnum; // オブジェクトに設定されているプロパティーが想定しない操作と判断。 } //break; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotOne: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, nHitsCount.ToString(), log_Reports);//検索ヒット数 this.Owner_MemoryApplication.CreateErrorReport("Er:6020;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_NotOneOrZero: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, nHitsCount.ToString(), log_Reports);//検索ヒット数 this.Owner_MemoryApplication.CreateErrorReport("Er:6021;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_NotExists: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, nHitsCount.ToString(), log_Reports);//検索ヒット数 this.Owner_MemoryApplication.CreateErrorReport("Er:6022;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedEnum: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, hits.ToString(), log_Reports);//要求した検索ヒット区分 this.Owner_MemoryApplication.CreateErrorReport("Er:6023;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return; }
/// <summary> /// 属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute( out Expression_Node_String ec_Result_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 ec_Result_Out = new Expression_Node_StringImpl(this, null); return false; }
//──────────────────────────────────────── /// <summary> /// ユーザー定義プログラムの実行。 /// </summary> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns></returns> public override string Execute4_OnExpressionString( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Execute4_OnExpressionString",log_Reports); // // Expression_Node_String err_Ev11; bool bAllFldsIsEmpty = true; Expression_Node_String ec_RecordSetLoadFrom;//ソース情報利用 bool bHit = this.TrySelectAttribute(out ec_RecordSetLoadFrom, NamesNode.S_RECORD_SET_LOAD_FROM, EnumHitcount.One, log_Reports); // // 一時記憶に記憶されているレコードセットのコピー内容。 RecordSet recordSet; if (log_Reports.Successful) { string sRecordSetLoadFrom = ec_RecordSetLoadFrom.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); // #デバッグ中 System.Console.WriteLine(Info_Expr.Name_Library + ":" + this.GetType().Name + "#E_Execute: ★★ record-set-load-from=[" + sRecordSetLoadFrom + "]"); recordSet = this.Owner_MemoryApplication.MemoryRecordset.RecordsetStorage.Get(ec_RecordSetLoadFrom, this.Owner_MemoryApplication, log_Reports); } else { recordSet = null; } Value_Humaninput err_OValue; string err_SFldName; Exception err_Excp; string err_SCsv; List<string> err_SList; if (log_Reports.Successful) { // // 子<f-●●>要素を実行し、文字列連結。 // 「SK10,LV10,OP10,COND10,COND10x,COND10y,COND10z,PRI10,RATE10,PER10」といった文字列が取得できることを期待。 StringBuilder sb_Csv = new StringBuilder(); { List<Expression_Node_String> ecList_Child = this.List_Expression_Child.SelectList( EnumHitcount.Unconstraint, log_Reports ); foreach (Expression_Node_String ec_11 in ecList_Child) { if (ec_11 is Expressionv_Elem99) { Expressionv_Elem99 ev_elem = (Expressionv_Elem99)ec_11; ev_elem.SetDataRow(this.DataRow); sb_Csv.Append(ev_elem.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports)); } else if (ec_11 is Expression_Node_StringImpl) { sb_Csv.Append(ec_11.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports)); } else { err_Ev11 = ec_11; bAllFldsIsEmpty = false; goto gt_Error_UndefinedElementClass; } } } // // コンマ区切り文字列を、リスト化。 List<string> sList; { CsvTo_ListImpl csvTo = new CsvTo_ListImpl(); sList = csvTo.Read(sb_Csv.ToString()); } // // 全部真なら真、1つでも偽なら偽。 foreach (string sFldName in sList) { // bug: argumentException Value_Humaninput oValue; try { // レコードセットの1件目だけをとりあえず確認。TODO: oValue = recordSet.List_Field[0][sFldName.ToUpper()]; //oValue = (OValue)dataRow[fldName]; } catch (KeyNotFoundException ex) { err_Excp = ex; err_SFldName = sFldName; err_SCsv = sb_Csv.ToString(); err_SList = sList; goto gt_Error_UndefinedFld; } // #デバッグ中 System.Console.WriteLine(Info_Expr.Name_Library + ":" + this.GetType().Name + "#E_Execute: oValue.Text=[" + oValue.Text + "]"); if (oValue is Int_HumaninputImpl) { Int_HumaninputImpl oInt = (Int_HumaninputImpl)oValue; if ("" != oInt.Text) { bAllFldsIsEmpty = false; } } else if (oValue is String_HumaninputImpl) { String_HumaninputImpl oString = (String_HumaninputImpl)oValue; if ("" != oString.Text) { bAllFldsIsEmpty = false; } } else if (oValue is Bool_HumaninputImpl) { Bool_HumaninputImpl oBool = (Bool_HumaninputImpl)oValue; if ("" != oBool.Text) { bAllFldsIsEmpty = false; } // // TODO: false/trueタイプ、0/1タイプにも対応したい。 // } else { // // エラー。 err_OValue = oValue; goto gt_Error_UndefinedType; } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_UndefinedType: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_OValue.GetType().Name, log_Reports);//値の型名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(this.Cur_Configuration), log_Reports);//設定位置パンくずリスト this.Owner_MemoryApplication.CreateErrorReport("Er:6032;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedElementClass: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Ev11.GetType().Name, log_Reports);//クラス名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(this.Cur_Configuration), log_Reports);//設定位置パンくずリスト this.Owner_MemoryApplication.CreateErrorReport("Er:6033;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedFld: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_SFldName.ToUpper(), log_Reports);//フィールド名大文字化 tmpl.SetParameter(2, err_SCsv, log_Reports);//指定されたフィールド名の文字列 StringBuilder s1 = new StringBuilder(); foreach (string str in err_SList) { s1.Append("["); s1.Append(str); s1.Append("]"); s1.Append(Environment.NewLine); } tmpl.SetParameter(3, s1.ToString(), log_Reports);//指定されたフィールド名の文字列 StringBuilder s2 = new StringBuilder(); // あるフィールド名の一覧 foreach (DataColumn dataColumn in this.DataRow.Table.Columns) { s2.Append("["); s2.Append(dataColumn.ColumnName); s2.Append("]"); s2.Append(Environment.NewLine); } tmpl.SetParameter(4, s1.ToString(), log_Reports);//指定されたフィールド名の文字列 tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Configuration(this.Cur_Configuration), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ this.Owner_MemoryApplication.CreateErrorReport("Er:6034;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return bAllFldsIsEmpty.ToString(); }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <param oNodeName="request"></param> /// <param oNodeName="log_Reports"></param> /// <returns></returns> public Expression_Node_Filepath GetEFilePath( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "GetFilePath",log_Reports); // // Expression_Node_Filepath ec_Fpath_reslt; // // ファイルパス変数の名前 string sVariableName = this.Get00VariableName(log_Reports).Trim(); { // 変数名。 Expression_Leaf_StringImpl ec_Atom = new Expression_Leaf_StringImpl(this, this.Cur_Configuration.Parent); ec_Atom.SetString( sVariableName, log_Reports ); ec_Fpath_reslt = this.Owner_MemoryApplication.MemoryVariables.GetExpressionfilepathByVariablename( ec_Atom, true, log_Reports ); } // // // // log_Method.EndMethod(log_Reports); return ec_Fpath_reslt; }
/// <summary> /// /// </summary> /// <param name="e_Result">検索結果。</param> /// <param name="name_Attribute"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelect_ExpressionFilepath( out Expression_Node_Filepath out_Fliepath_Expr, string name_Attribute, EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "TrySelect_ExpressionFilepath", log_Reports); string value; bool isResult = this.TrySelect(out value, name_Attribute, hits, log_Reports); Configurationtree_NodeFilepath filepath_Conf = new Configurationtree_NodeFilepathImpl(log_Method.Fullname, null); filepath_Conf.InitPath(value, log_Reports); out_Fliepath_Expr = new Expression_Node_FilepathImpl(filepath_Conf); //switch (hits) //{ // case EnumHitcount.One: // { // if (!isResult) // { // //エラー // goto gt_Error_NotFoundOne; // } // } // break; // //todo:他の制約も。 //} goto gt_EndMethod; // // #region 異常系 ////──────────────────────────────────────── //gt_Error_NotFoundOne: // if (log_Reports.CanCreateReport) // { // Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); // r.SetTitle("▲エラー281!", log_Method); // StringBuilder s = new StringBuilder(); // s.Append("必ず、1件を取得する指定でしたが、1件も存在しませんでした。キー=["); // s.Append(name_Attribute); // s.Append("]"); // // ヒント // r.Message = s.ToString(); // log_Reports.EndCreateReport(); // } // goto gt_EndMethod; ////──────────────────────────────────────── // #endregion // gt_EndMethod: log_Method.EndMethod(log_Reports); return isResult; }
//──────────────────────────────────────── /// <summary> /// 内容を文字列型で返します。 /// </summary> /// <param name="log_Reports"></param> /// <returns></returns> public virtual string Execute4_OnExpressionString( EnumHitcount req_Items, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Execute4_OnExpressionString", log_Reports); // // // もとに戻す this.enumHitcount = EnumHitcount.Unconstraint; string sResult = this.Execute5_Main(log_Reports);// this.sHumanInput; // // log_Method.EndMethod(log_Reports); return sResult; }
//──────────────────────────────────────── /// <summary> /// @Deprecated /// </summary> /// <param name="request"></param> /// <param name="log_Reports"></param> /// <returns></returns> public List<Expression_Node_String> Expression_GetChildList( EnumHitcount request, Log_Reports log_Reports ) { // // エラー。 Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Expression_GetChildList",log_Reports); // // if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー101!", log_Method); Log_TextIndented t = new Log_TextIndentedImpl(); t.Append("このメソッド " + this.GetType().Name + "#GetChildNList は使わないんでください。"); // ヒント t.Append(r.Message_Configuration(this.Cur_Configuration)); r.Message = t.ToString(); log_Reports.EndCreateReport(); } // // log_Method.EndMethod(log_Reports); return null; }
//──────────────────────────────────────── /// <summary> /// 内容を文字列型で返します。 /// </summary> /// <param name="log_Reports"></param> /// <returns></returns> public virtual string Execute4_OnExpressionString( EnumHitcount request, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Execute4_OnExpressionString①", log_Reports); // // string sResult; sResult = this.Execute5_Main(log_Reports); // // // // // もとに戻す this.enumHitcount = EnumHitcount.Unconstraint; goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); return sResult; }
//──────────────────────────────────────── /// <summary> /// 属性。 /// </summary> /// <param name="out_E_Result">検索結果。</param> /// <param name="sName"></param> /// <param name="bRequired"></param> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns>検索結果が1件以上あれば真。</returns> public bool TrySelectAttribute_ExpressionFilepath( out Expression_Node_Filepath ec_Result_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 Configurationtree_NodeFilepath filepath_Conf = new Configurationtree_NodeFilepathImpl(sName, this.Cur_Configuration); filepath_Conf.InitPath("", log_Reports); ec_Result_Out = new Expression_Node_FilepathImpl(filepath_Conf); return false; }
//──────────────────────────────────────── /// <summary> /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。 /// </summary> /// <returns></returns> public Expression_Node_Filepath Execute4_OnExpressionString_AsFilepath( EnumHitcount request, Log_Reports log_Reports ) { return Expression_Node_StringImpl.Execute4_OnExpressionString_AsFilepath_Impl(this, request, log_Reports); }
//──────────────────────────────────────── /// <summary> /// ユーザー定義プログラムの実行。 /// </summary> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns></returns> public override string Execute4_OnExpressionString( EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Execute4_OnExpressionString",log_Reports); // // // // // // log_Method.EndMethod(log_Reports); return "<未実装>"; }
//──────────────────────────────────────── /// <summary> /// 例えば "data" と指定すれば、 /// 直下の子要素の中で <data > といったノード名を持つものはヒットする。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request"></param> /// <param name="log_Reports"></param> /// <returns></returns> public List<Expression_Node_String> SelectDirectchildByNodename( string sExpectedNodeName, bool bRemove, EnumHitcount request, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "Divide3Blocks",log_Reports); List<Expression_Node_String> result = new List<Expression_Node_String>(); this.List_Expression_Child.ForEach(delegate(Expression_Node_String ec_Child, ref bool bRemove2, ref bool bBreak2) { if (log_Reports.Successful) { if (ec_Child.Cur_Configuration.Name == sExpectedNodeName) { result.Add(ec_Child); if (bRemove) { // 削除要求1があるとき、削除要求2を出します。 bRemove2 = true; } if (EnumHitcount.First_Exist == request || EnumHitcount.First_Exist_Or_Zero == request) { // 最初の1件で削除は終了。複数件ヒットするかどうかは判定しない。 bBreak2 = true; } } } }); if (EnumHitcount.One == request) { // 必ず1件だけヒットする想定。 if (result.Count != 1) { goto gt_errorNotOne; } } else if (EnumHitcount.First_Exist == request) { // 必ずヒットする。複数件あれば、最初の1件だけ取得。 if (0 == result.Count) { goto gt_errorNoHit; } else if (1 < result.Count) { result.RemoveRange(1, result.Count - 1); } } else if (EnumHitcount.First_Exist_Or_Zero == request) { // ヒットすれば最初の1件だけ、ヒットしなければ0件の想定。 if (1 < result.Count) { result.RemoveRange(1, result.Count - 1); } } else { } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_errorNoHit: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー102!", log_Method); StringBuilder sb = new StringBuilder(); sb.Append("必ず、1件以上ヒットする指定でしたが、["); sb.Append(result.Count); sb.Append("]件ヒットしました。"); sb.Append(Environment.NewLine); sb.Append(Environment.NewLine); // ヒント r.Message = sb.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; // // gt_errorNotOne: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー101!", log_Method); StringBuilder sb = new StringBuilder(); sb.Append("必ず、1件のみ取得する指定でしたが、["); sb.Append(result.Count); sb.Append("]件取得しました。"); sb.Append(Environment.NewLine); sb.Append(Environment.NewLine); // ヒント r.Message = sb.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return result; }
//──────────────────────────────────────── /// <summary> /// @Deprecated /// 一覧。 /// </summary> public List<Configurationtree_Node> SelectList( EnumHitcount request, Log_Reports log_Reports ) { return list_Configurationtree_Node; }
public bool TrySelectAttribute( out string sResult_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "TrySelectAttribute", log_Reports); // // bool bResult = this.Dictionary_Expression_Attribute.TrySelect(out sResult_Out, sName, hits, log_Reports); goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); return bResult; }
/// <summary> /// ヒットした件数がなかったとき、エラーになるか否か。 /// </summary> /// <param name="hits"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static bool IsError_IfNoHit(EnumHitcount hits, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Syntax.Name_Library, "Utility_Hitcount", "IsError_IfNoHit", log_Reports); bool result; switch(hits) { case EnumHitcount.Exists: result = true;//エラーになる。 break; case EnumHitcount.First_Exist: result = true;//エラーになる。 break; case EnumHitcount.First_Exist_Or_Zero: result = false;//セーフ。 break; case EnumHitcount.One: result = true;//エラーになる。 break; case EnumHitcount.One_Or_Zero: result = false;//セーフ。 break; case EnumHitcount.Unconstraint: result = false;//セーフ。 break; default: //エラー result = true;//意味が変わるが、エラーにする。 goto gt_Error_Default; } goto gt_EndMethod; // #region 異常系 //──────────────────────────────────────── gt_Error_Default: { if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー031!", log_Method); Log_TextIndented t = new Log_TextIndentedImpl(); t.Append("Enum型の対応していない値["); t.Append(hits.ToString()); t.Append("]"); t.Newline(); r.Message = t.ToString(); log_Reports.EndCreateReport(); } } goto gt_EndMethod; //──────────────────────────────────────── #endregion gt_EndMethod: log_Method.EndMethod(log_Reports); return result; }
public bool TrySelectAttribute( out string sResult_Out, string sName, EnumHitcount hits, Log_Reports log_Reports ) { // 使いません。 sResult_Out = ""; return false; }
//──────────────────────────────────────── /// <summary> /// 使えません。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request"></param> /// <param name="log_Reports"></param> /// <returns></returns> public List<Expression_Node_String> SelectDirectchildByNodename( string sName_ExpectedNode, bool bRemove, EnumHitcount request, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Syntax.Name_Library, this, "GetDirectChildByNodeName",log_Reports); List<Expression_Node_String> result = new List<Expression_Node_String>(); if (EnumHitcount.One == request) { // 必ず1件だけヒットする想定。 if (result.Count != 1) { goto gt_errorNotOne; } } else if (EnumHitcount.First_Exist_Or_Zero == request) { // ヒットすれば最初の1件だけ、ヒットしなければ0件の想定。 if (1 < result.Count) { result.RemoveRange(1, result.Count - 1); } } else { } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_errorNotOne: if (log_Reports.CanCreateReport) { Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error); r.SetTitle("▲エラー101!", log_Method); StringBuilder sb = new StringBuilder(); sb.Append("必ず、1件のみ取得する指定でしたが、["); sb.Append(result.Count); sb.Append("]件取得しました。"); sb.Append(Environment.NewLine); sb.Append(Environment.NewLine); // ヒント r.Message = sb.ToString(); log_Reports.EndCreateReport(); } goto gt_EndMethod; //──────────────────────────────────────── #endregion gt_EndMethod: log_Method.EndMethod(log_Reports); return result; }