Example #1
0
        //────────────────────────────────────────

        /// <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));
        }
Example #2
0
        //────────────────────────────────────────

        /// <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);
        }
Example #3
0
        //────────────────────────────────────────

        /// <summary>
        /// このデータは、ファイルパス型だ、と想定して、ファイルパスを取得します。
        /// </summary>
        /// <returns></returns>
        public override Expression_Node_Filepath Execute4_OnExpressionString_AsFilepath(
            EnumHitcount request,
            Log_Reports log_Reports
            )
        {
            return(this);
        }
Example #4
0
        //────────────────────────────────────────

        /// <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);
        }
Example #5
0
 public List <Expr_String> SelectList(
     EnumHitcount request,
     Log_Reports log_Reports
     )
 {
     return(this.items);
 }
Example #6
0
        //────────────────────────────────────────

        /// <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;
        }
Example #8
0
        //────────────────────────────────────────

        /// <summary>
        /// @Deprecated
        /// 一覧。
        /// </summary>
        public List <Configurationtree_Node> SelectList(
            EnumHitcount request,
            Log_Reports log_Reports
            )
        {
            return(list_Configurationtree_Node);
        }
Example #9
0
        //────────────────────────────────────────

        /// <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);
        }
Example #10
0
        //────────────────────────────────────────

        /// <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));
        }
Example #11
0
 public List <Expression_Node_String> SelectList(
     EnumHitcount request,
     Log_Reports log_Reports
     )
 {
     return(this.listExpression_Item);
 }
Example #12
0
        //────────────────────────────────────────

        /// <summary>
        /// @Deprecated
        /// 一覧。
        /// </summary>
        public List <Conf_String> SelectList(
            EnumHitcount request,
            Log_Reports log_Reports
            )
        {
            return(items);
        }
Example #13
0
        /// <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);
        }
Example #14
0
        //────────────────────────────────────────
        #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());
        }
Example #15
0
        //────────────────────────────────────────
        /// <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();
        }
Example #17
0
 /// <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));
 }
Example #18
0
 /// <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));
 }
Example #19
0
        //────────────────────────────────────────

        /// <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);
        }
Example #21
0
 /// <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);
 }
Example #22
0
 /// <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);
 }
Example #23
0
 public bool TrySelectAttribute(
     out string sResult_Out,
     string sName,
     EnumHitcount hits,
     Log_Reports log_Reports
     )
 {
     // 使いません。
     sResult_Out = "";
     return(false);
 }
Example #24
0
 /// <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);
 }
Example #25
0
        //────────────────────────────────────────

        /// <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
                       ));
        }
Example #26
0
        //────────────────────────────────────────

        /// <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
         );
 }
Example #28
0
        //────────────────────────────────────────

        /// <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);
        }
Example #29
0
        //────────────────────────────────────────

        /// <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);
        }
Example #30
0
        //────────────────────────────────────────
        #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("<未実装>");
        }
Example #31
0
        //────────────────────────────────────────

        /// <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);
        }
Example #32
0
        //────────────────────────────────────────

        /// <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);
        }
Example #33
0
        //────────────────────────────────────────

        /// <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);
        }
Example #34
0
        //────────────────────────────────────────

        /// <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);
        }
Example #35
0
        //────────────────────────────────────────
        #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();
        }
Example #37
0
        //────────────────────────────────────────

        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);
        }
Example #38
0
        //────────────────────────────────────────
        /// <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;
        }
Example #39
0
        //────────────────────────────────────────
        /// <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;
        }
Example #42
0
 //────────────────────────────────────────
 /// <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);
 }
Example #43
0
 /// <summary>
 /// どういう結果が欲しいかの指定。
 /// </summary>
 /// <param name="request"></param>
 public void SetEnumHitcount(
     EnumHitcount request
     )
 {
     enumHitcount = request;
 }
Example #44
0
        /// <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;
        }
Example #45
0
 /// <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();
        }
Example #47
0
        //────────────────────────────────────────
        /// <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;
        }
Example #49
0
        //────────────────────────────────────────
        /// <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;
        }
Example #50
0
        //────────────────────────────────────────
        /// <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;
        }
Example #51
0
        //────────────────────────────────────────
        /// <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;
        }
Example #52
0
 //────────────────────────────────────────
 /// <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;
 }
Example #53
0
 //────────────────────────────────────────
 /// <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 "<未実装>";
        }
Example #55
0
        //────────────────────────────────────────
        /// <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;
 }
Example #57
0
        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;
        }
Example #58
0
        /// <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;
        }
Example #59
0
 public bool TrySelectAttribute(
     out string sResult_Out,
     string sName,
     EnumHitcount hits,
     Log_Reports log_Reports
     )
 {
     // 使いません。
     sResult_Out = "";
     return false;
 }
Example #60
0
        //────────────────────────────────────────
        /// <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;
        }