Beispiel #1
0
        //────────────────────────────────────────

        public abstract void Translate(
            Configurationtree_Node cur_Cf,
            Expression_Node_String parent_Ec,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            );
        //────────────────────────────────────────
        public static void ParseChild_InAnotherLibrary(
            Configurationtree_Node cur_Cf,
            Expression_Node_String parent_Expr,//nAcase,nFelemの両方の場合がある。
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, "SToE_AbstractImpl", "ParseChild_InAnotherLibrary",log_Reports);

            ConfigurationtreeToExpression_F14n16 dammy = new ConfigurationtreeToExpression_F14_FncImpl_();//メソッドが使いたいだけなので、何でもいい。
            dammy.ParseChild_InConfigurationtreeToExpression(
                cur_Cf,
                parent_Expr,
                memoryApplication,
                pg_ParsingLog,
                log_Reports
                );

            goto gt_EndMethod;
            //
            //
            gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                //d_ParsingLog.Decrement(s_Cur.Name_Node);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #3
0
        //────────────────────────────────────────
        #endregion



        #region アクション
        //────────────────────────────────────────

        public override void Translate_Step2(
            ConfigurationtreeToFunction_Item parentProcesser,
            Configurationtree_Node action_Conf,
            Expression_Node_Function parent_Expr_Func,//todo:何これ?
            MemoryApplication owner_MemoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Expression_Node_String ec_ArgListboxName;

            parent_Expr_Func.TrySelectAttribute(out ec_ArgListboxName, Expression_Node_Function20Impl.PM_NAME_CONTROL_LISTBOX, EnumHitcount.One_Or_Zero, log_Reports);

            if ("" == ec_ArgListboxName.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports))
            {
                // 引数 listboxFcName が指定されていない場合は、その記述が書かれているコントロールの名前を入れる。

                Configuration_Node cf_Event = action_Conf.GetParentByNodename(
                    NamesNode.S_EVENT, EnumConfiguration.Unknown, true, log_Reports);
                if (log_Reports.Successful)
                {
                    Configuration_Node parent_Configurationtree_Control = cf_Event.GetParentByNodename(
                        NamesNode.S_CONTROL1, EnumConfiguration.Tree, true, log_Reports);

                    string sName_Usercontrol;
                    ((Configurationtree_Node)parent_Configurationtree_Control).Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Usercontrol, true, log_Reports);
                    ec_ArgListboxName.AppendTextNode(sName_Usercontrol, action_Conf, log_Reports);
                }
            }
        }
Beispiel #4
0
        //────────────────────────────────────────

        public static void ParseChild_InAnotherLibrary(
            Configurationtree_Node cur_Cf,
            Expression_Node_String parent_Expr,//nAcase,nFelemの両方の場合がある。
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, "SToE_AbstractImpl", "ParseChild_InAnotherLibrary", log_Reports);

            ConfigurationtreeToExpression_F14n16 dammy = new ConfigurationtreeToExpression_F14_FncImpl_();//メソッドが使いたいだけなので、何でもいい。

            dammy.ParseChild_InConfigurationtreeToExpression(
                cur_Cf,
                parent_Expr,
                memoryApplication,
                pg_ParsingLog,
                log_Reports
                );

            goto gt_EndMethod;
            //
            //
gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                //d_ParsingLog.Decrement(s_Cur.Name_Node);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public override void Translate_Step2(
            ConfigurationtreeToFunction_Item parentProcesser,
            Configurationtree_Node action_Conf,
            Expression_Node_Function parent_Expr_Func,//todo:何これ?
            MemoryApplication owner_MemoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Expression_Node_String ec_ArgListboxName;
            parent_Expr_Func.TrySelectAttribute(out ec_ArgListboxName, Expression_Node_Function20Impl.PM_NAME_CONTROL_LISTBOX, EnumHitcount.One_Or_Zero, log_Reports);

            if ("" == ec_ArgListboxName.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports))
            {
                // 引数 listboxFcName が指定されていない場合は、その記述が書かれているコントロールの名前を入れる。

                Configuration_Node cf_Event = action_Conf.GetParentByNodename(
                    NamesNode.S_EVENT, EnumConfiguration.Unknown, true, log_Reports);
                if (log_Reports.Successful)
                {
                    Configuration_Node parent_Configurationtree_Control = cf_Event.GetParentByNodename(
                        NamesNode.S_CONTROL1, EnumConfiguration.Tree, true, log_Reports);

                    string sName_Usercontrol;
                    ((Configurationtree_Node)parent_Configurationtree_Control).Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Usercontrol, true, log_Reports);
                    ec_ArgListboxName.AppendTextNode(sName_Usercontrol, action_Conf, log_Reports);
                }
            }
        }
Beispiel #6
0
        //────────────────────────────────────────

        /// <summary>
        /// 未実装。
        /// </summary>
        /// <param name="oFStrNode"></param>
        /// <param name="nFAelem"></param>
        /// <param name="memoryApplication"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,    //<def-param>
            Expression_Node_String parent_Ec, //親<●●>要素。汎用。
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
        }
 //────────────────────────────────────────
 /// <summary>
 /// 未実装。
 /// </summary>
 /// <param name="oFStrNode"></param>
 /// <param name="nFAelem"></param>
 /// <param name="memoryApplication"></param>
 /// <param name="log_Reports"></param>
 public override void Translate(
     Configurationtree_Node cur_Cf,//<def-param>
     Expression_Node_String parent_Ec,//親<●●>要素。汎用。
     MemoryApplication memoryApplication,
     Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
     Log_Reports log_Reports
     )
 {
 }
Beispiel #8
0
        //────────────────────────────────────────

        public virtual void Translate_Step2(
            ConfigurationtreeToFunction_Item parentProcesser,
            Configurationtree_Node action_Conf,
            Expression_Node_Function parent_Ec_Sf,//todo:何これ?
            MemoryApplication owner_MemoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
        }
        //────────────────────────────────────────
        /// <summary>
        /// 2010年11月22日追加。
        /// </summary>
        /// <returns></returns>
        public virtual Expression_Node_Function Translate(
            string sName_Action,
            Configurationtree_Node action_Conf,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            MemoryApplication owner_MemoryApplication,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_Functions.Name_Library, this, "Translate",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment(action_Conf.Name);
            }

            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_Function expr_Func;
            {
                Expression_Node_String parent_Expression_Null = null;

                expr_Func = Collection_Function.NewFunction2(
                    sName_Action,
                    parent_Expression_Null,
                    action_Conf,
                    owner_MemoryApplication,
                    log_Reports
                    );
            }

            this.Translate_Step1(
                this,
                action_Conf,
                expr_Func,
                owner_MemoryApplication,
                pg_ParsingLog,
                log_Reports
                );

            this.Translate_Step2(
                this,
                action_Conf,
                expr_Func,
                owner_MemoryApplication,
                pg_ParsingLog,
                log_Reports
                );

            //
            //
            //
            //

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(action_Conf.Name);
            }

            log_Method.EndMethod(log_Reports);

            return expr_Func;
        }
        //────────────────────────────────────────
        public virtual void Translate_Step1(
            ConfigurationtreeToFunction_Item parentProcesser,
            Configurationtree_Node action_Conf,
            Expression_Node_Function cur_Expr_Func,
            MemoryApplication owner_MemoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);
            log_Method.BeginMethod(Info_Functions.Name_Library, this, "Translate_Step1",log_Reports);

            //
            // アクション型引数の引数
            //
            string err_sName_Attr;
            action_Conf.List_Child.ForEach(delegate(Configurationtree_Node s_Arg, ref bool bBreak)
            {
                string sName_Attr;
                s_Arg.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Attr, true, log_Reports);

                if (cur_Expr_Func.ContainsName_ArgumentDefinition(sName_Attr,log_Reports))
                {
                    //
                    // 自解析
                    //
                    ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl();
                    to.Translate(
                        s_Arg,
                        cur_Expr_Func,
                        owner_MemoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else
                {
                    // エラー
                    err_sName_Attr = sName_Attr;
                    goto gt_Error_UndefinedArgName;
                }

                goto gt_EndMethod2;
            //
            //
            gt_Error_UndefinedArgName:
                bBreak = true;
                {
                    Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                    tmpl.SetParameter(1, err_sName_Attr, log_Reports);//引数名
                    tmpl.SetParameter(2, cur_Expr_Func.ToString_ListNameargumentDefinition_ForReport(), log_Reports);//引数名リスト

                    owner_MemoryApplication.CreateErrorReport("Er:110001;", tmpl, log_Reports);
                }
            //
            gt_EndMethod2:
                ;
            });

            goto gt_EndMethod;

            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        /// <summary>
        /// <data>要素の読取。
        /// </summary>
        /// <param select="xDataSource"></param>
        /// <param select="fcUc"></param>
        public void Translate(
            Configurationtree_Node cur_Cf,//<data>要素
            Expression_Node_String parent_Ec,//「S■form-component」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "CfToEc",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(2)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_NodeImpl cur_Ec = new Expression_NodeImpl(parent_Ec, cur_Cf, memoryApplication);

            //
            //
            //
            // 属性
            //
            //
            //
            string err_SAttrName;
            cur_Cf.Dictionary_Attribute.ForEach(delegate(string sPmName, string sValue, ref bool bBreak)
            {
                if (
                    PmNames.S_MEMORY.Name_Pm == sPmName ||
                    PmNames.S_ACCESS.Name_Pm == sPmName ||
                    PmNames.S_NAME_TABLE.Name_Pm == sPmName ||
                    PmNames.S_NAME_VAR.Name_Pm == sPmName || //.Z_ITEM_VALUE_TO_VARIABLE
                    PmNames.S_DESCRIPTION.Name_Pm == sPmName
                    )
                {
                    //ystem.Console.WriteLine(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: <データT >に属性追加 [" + sKey + "]←[" + sValue + "]");

                    // なんでも属性として追加。
                    Expression_Node_String ec_Value = new Expression_Leaf_StringImpl(sValue, cur_Ec, cur_Cf);
                    cur_Ec.SetAttribute(sPmName, ec_Value, log_Reports);
                }
                else
                {
                    err_SAttrName = sPmName;
                    bBreak = true;
                    goto gt_Error_UndefinedAttr;
                }

                goto gt_gt_EndMethod2;
                //
                //
                //
                //
            gt_Error_UndefinedAttr:
                {
                    Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                    tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名
                    tmpl.SetParameter(2, err_SAttrName, log_Reports);//属性名
                    tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト

                    memoryApplication.CreateErrorReport("Er:7002;", tmpl, log_Reports);
                }
                goto gt_gt_EndMethod2;

            gt_gt_EndMethod2:
                ;
            });

            //
            //
            //
            // 子
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports);

            goto gt_EndMethod;
            //
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }

            log_Method.EndMethod(log_Reports);
        }
Beispiel #12
0
        //────────────────────────────────────────

        public void Translate(
            Configurationtree_Node cur_Conf,
            Expressionv_4ADisplayImpl exprv_ADisplay,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(38)" + cur_Conf.Name);
            }

            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_5FAllTrueImpl cur_Exprv = new Expressionv_5FAllTrueImpl(exprv_ADisplay, cur_Conf, memoryApplication);


            //
            //
            //
            // 子
            //
            //
            //
            if (log_Reports.Successful)
            {
                exprv_ADisplay.List_Expression_Child.Add(
                    cur_Exprv,
                    log_Reports
                    );
            }


            //
            //
            //
            // 子
            //
            //
            //
            List <Configurationtree_Node> cfList_Fnc = cur_Conf.GetChildrenByNodename(NamesNode.S_FNC, false, log_Reports);

            foreach (Configurationtree_Node cf_Child in cfList_Fnc)
            {
                string child_SName_Fnc;
                cf_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out child_SName_Fnc, true, log_Reports);

                if (NamesFnc.S_VLD_EMPTY_FIELD == child_SName_Fnc)
                {
                    // <a-empty-field>要素
                    ConfigurationtreeToExpression_V55_AEmptyFieldImpl_ to = new ConfigurationtreeToExpression_V55_AEmptyFieldImpl_();
                    to.Translate(
                        cf_Child,
                        cur_Exprv,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else
                {
                    if (log_Method.CanDebug(0))
                    {
                        log_Method.WriteError_ToConsole("未実装です。");
                    }

                    throw new Exception("未実装です。");
                }
            }

            goto gt_EndMethod;
            //
            //
            //
            //
gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Conf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        /// <summary>
        /// 「S■f-var」
        /// </summary>
        /// <param name="oFStrNode"></param>
        /// <param name="nFAelem"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,//「S■f-var」
            Expression_Node_String parent_Ec,//親<●●>
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(33)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_FvarImpl cur_Ec = new Expression_FvarImpl(parent_Ec, cur_Cf, memoryApplication);

            //
            //
            //
            // 属性
            //
            //
            //
            if (log_Reports.Successful)
            {
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    false,//name属性は無い。
                    false,//value属性は、子<f-str>にしない。
                    log_Reports
                    );
            }

            //
            //
            //
            // 子
            //
            //
            //
            {
                // 非必須 value=”” value属性がなくても正常です。子要素を見に行きます。
                if (cur_Cf.Dictionary_Attribute.ContainsKey(PmNames.S_VALUE.Name_Pm))
                {
                    string sValue;
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, true, log_Reports);
                    cur_Ec.AppendTextNode(
                        sValue,
                        cur_Cf,
                        log_Reports
                        );
                }
            }

            //
            //
            //
            // 子
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            //
            //
            //
            // 親へ連結
            //
            //
            //
            {
                parent_Ec.List_Expression_Child.Add(
                    cur_Ec,
                    log_Reports
                    );
            }

            //
            //
            //
            //

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void Translate(
            Configurationtree_Node cur_Conf,
            Expressionv_4ADisplayImpl parent_Exprv,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(37)" + cur_Conf.Name);
            }

            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_5FAllFieldsIsEmptyImpl cur_Exprv = new Expressionv_5FAllFieldsIsEmptyImpl(parent_Exprv, cur_Conf, memoryApplication);

            //
            //
            //
            // 子
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Conf,
                    cur_Exprv,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Exprv.List_Expression_Child.Add(
                cur_Exprv,
                log_Reports
                );

            // #デバッグ中
            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole(" ★★ <f-all-fields-is-empty> 子要素数=[" + cur_Exprv.List_Expression_Child.Count + "] 属性数=[" + cur_Exprv.Dictionary_Expression_Attribute.Count + "]");
            }

            goto gt_EndMethod;
            //
            //
            //
            //
            gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Conf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #15
0
        //────────────────────────────────────────

        /// <summary>
        /// 読取。
        /// </summary>
        /// <param name="s_View"></param>
        /// <param name="ef_View"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public void Translate(
            Configurationtree_Node cur_Cf,    //<view>
            Expression_Node_String parent_Ec, //「E■form-component」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(3)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //

            Expression_Node_StringImpl cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf);

            //
            //
            //
            // 子
            //
            //
            //
            {
                //<●●>要素を全検索。<f-list-box-labels>があることが期待されます。

                cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node cf_Child, ref bool bBreak)
                {
                    if (cf_Child is Configurationtree_Node)
                    {
                        Configurationtree_Node cf_Node = (Configurationtree_Node)cf_Child;

                        string sName_Node = cf_Node.Name;
                        string sName_Fnc  = "";
                        {
                            bool bRequired;

                            if (NamesNode.S_FNC == sName_Node)
                            {
                                bRequired = true;
                            }
                            else
                            {
                                bRequired = false;
                            }

                            // todo; 子要素のnameも取りたい。
                            cf_Node.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, bRequired, log_Reports);
                        }

                        if (NamesNode.S_FNC == sName_Node && NamesFnc.S_LISTBOX_LABELS == sName_Fnc)
                        {
                            // 「S■fnc name=”Sf:f-listbox-labels;”」

                            ConfigurationtreeToExpression_F91_FListboxLabelsImpl_ to = new ConfigurationtreeToExpression_F91_FListboxLabelsImpl_();
                            to.Translate(
                                cf_Child,
                                cur_Ec,
                                memoryApplication,
                                pg_ParsingLog,
                                log_Reports
                                );
                        }
                        else
                        {
                            // エラー
                            {
                                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                                tmpl.SetParameter(1, sName_Node, log_Reports); //設定ノード名
                                tmpl.SetParameter(2, sName_Fnc, log_Reports);  //関数名

                                memoryApplication.CreateErrorReport("Er:7003;", tmpl, log_Reports);
                            }

                            bBreak = true;
                        }
                    }
                });
            }


            //
            //
            //
            // 親へ連結
            //
            //
            //
            {
                parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports);
            }


            goto gt_EndMethod;
            //
            //

gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        /// <summary>
        /// S → E
        /// 
        /// データソース、
        /// データターゲット、
        /// <view>
        /// の3つを変換。
        /// </summary>
        /// <param oNodeName="sList_Name_Control"></param>
        /// <param oNodeName="s_FcConfig"></param>
        /// <param oNodeName="moOpyopyo"></param>
        /// <param oNodeName="log_Reports"></param>
        public void Translate(
            List<string> sList_Name_Control,
            Configurationtree_Node cf_FcConfig,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。");

            //
            //
            //
            // デバッグ開始
            //
            //
            //
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE_DsrcDtrg",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(1)データソース・データターゲット・SSR");
            }

            //
            //
            //
            //

            string sName_Usercontrol;
            if (log_Reports.Successful)
            {
                // 正常時

                foreach(string sFcName in sList_Name_Control)
                {
                    // コントロール名。
                    Expression_Node_StringImpl ec_FcName = new Expression_Node_StringImpl(null,cf_FcConfig);
                    ec_FcName.AppendTextNode(
                        sFcName,
                        cf_FcConfig,
                        log_Reports
                        );

                    // コントロール名の指定は、1件のみと想定。
                    List<Usercontrol> list_Usercontrol = memoryApplication.MemoryForms.GetUsercontrolsByName(
                        ec_FcName,
                        true,
                        log_Reports
                        );

                    Usercontrol fcUc;
                    if (list_Usercontrol.Count<1)
                    {
                        sName_Usercontrol = sFcName;
                        goto gt_Error_NotFoundUsercontrol;
                    }
                    else
                    {
                        fcUc = list_Usercontrol[0];
                    }

                    Configurationtree_Node cf_Control = fcUc.ControlCommon.Configurationtree_Control;

                    if (null == cf_Control)
                    {
                        //
                        // O_コントロール要素を新規作成。
                        cf_Control = new Configurationtree_NodeImpl(NamesNode.S_CONTROL1, cf_FcConfig);
                        fcUc.ControlCommon.Configurationtree_Control = cf_Control;
                    }
                    else
                    {
                        //
                        // O_コントロール要素は既存。
                    }

                    //
                    // コントロール名。
                    fcUc.ControlCommon.Configurationtree_Control.Dictionary_Attribute.Set(PmNames.S_NAME.Name_Pm, sFcName, log_Reports);

                    ConfigurationtreeToExpression_F11_ControlImpl_ to0 = new ConfigurationtreeToExpression_F11_ControlImpl_();
                    to0.Translate(
                        cf_Control,
                        fcUc.ControlCommon.Expression_Control,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
            }
            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
            gt_Error_NotFoundUsercontrol:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, sName_Usercontrol, log_Reports);//コントロール名
                tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_FcConfig), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7001;", tmpl, log_Reports);
            }

            // 処理を中断。
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
            gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement("データソース・データターゲット・SSR");
            }
            log_Method.EndMethod(log_Reports);
        }
        private void ParseChild_SpecialFnc_(
            Configurationtree_Node cur_Cf,
            Expression_Node_String cur_Ec,//「S■fnc」、や「S■event」か?
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_Special_",log_Reports);
            //
            //
            if (!log_Reports.Successful)
            {
                goto gt_EndMethod;
            }

            //
            //
            //
            // 子
            //
            //
            //
            cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak)
            {
                if (log_Reports.Successful)
                {
                    if (NamesNode.S_ARG == s_Child.Name)
                    {
                        //━━━━━
                        // arg
                        //━━━━━

                        string sName_MyFnc;
                        cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, false, log_Reports);

                        string sName_ChildFnc;
                        s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_ChildFnc, false, log_Reports);

                        //
                        bool bNormalize = false;
                        if(
                            // 親が「E■fnc」
                            NamesNode.S_FNC == cur_Ec.Cur_Configuration.Name &&
                            NamesFnc.S_CELL == sName_MyFnc
                            )
                        {
                            if (
                                // 子が「name=”select”」
                                PmNames.S_SELECT.Name_Pm == sName_ChildFnc
                                )
                            {
                                bNormalize = true;
                            }
                        }

                        if (bNormalize)
                        {
                            ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl();
                            to.Translate(
                                s_Child,
                                cur_Ec,//「E■fnc」とか
                                memoryApplication,
                                pg_ParsingLog,
                                log_Reports
                                );
                        }
                        else
                        {
                            string sValue = "";

                            //
                            // value=”” 属性が指定されていれば、その値をそのまま取得。
                            //
                            s_Child.Dictionary_Attribute.ForEach(delegate(string sPmName2, string sAttrValue2, ref bool bBreak2)
                            {
                                if (PmNames.S_VALUE.Name_Pm == sPmName2)
                                {
                                    // value属性が指定されていた場合。
                                    s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, true, log_Reports);

                                    // 「E■arg1」は作らずに、親要素の属性として追加。
                                    Expression_Node_String e_Value = new Expression_Leaf_StringImpl(sValue, cur_Ec, cur_Ec.Cur_Configuration);
                                    cur_Ec.SetAttribute(sName_ChildFnc, e_Value, log_Reports);
                                }
                            });

                            //
                            // 子要素の有無。
                            //
                            if (0 < s_Child.List_Child.Count)
                            {
                                // 子要素が指定されている場合。

                                if ("" != sValue)
                                {
                                    // value属性が指定されているのに、子要素も指定されているのは、エラーです。

                                    if (log_Method.CanError())
                                    {
                                        log_Method.WriteError_ToConsole( " value属性が指定されているのに、子要素も指定されているのは、エラーです。");
                                    }
                                }
                                else
                                {
                                    Expression_Node_StringImpl ec_Value = new Expression_Node_StringImpl(cur_Ec, s_Child);

                                    ConfigurationtreeToExpression_F14_FncImpl_ to2 = new ConfigurationtreeToExpression_F14_FncImpl_();
                                    to2.ParseChild_SpecialFnc_(
                                        s_Child,
                                        ec_Value,
                                        memoryApplication,
                                        pg_ParsingLog,
                                        log_Reports
                                        );

                                    //
                                    // 「E■arg1」は作らずに、親要素の属性として追加。
                                    //
                                    cur_Ec.SetAttribute(sName_ChildFnc, ec_Value, log_Reports);
                                }
                            }
                            else
                            {
                                if ("" == sValue)
                                {
                                    // todo:
                                    throw new Exception(Info_ConfigurationtreeToExpression.Name_Library + ":" + this.GetType().Name + "#ParseChild:(3) 「S■[" + cur_Cf.Name + "]」の子要素「S■[" + s_Child.Name + "]」に、value属性がありませんでした。子要素もありませんでした。");
                                }
                            }
                        }

                    }
                    else if (NamesNode.S_F_VAR == s_Child.Name)
                    {
                        //━━━━━
                        // f-var
                        //━━━━━
                        //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(b)f-var 使っていなければ廃止したい。");

                        // 親要素「S■fnc」の子要素として追加します。
                        ConfigurationtreeToExpression_F14_FvariableImpl_ to = new ConfigurationtreeToExpression_F14_FvariableImpl_();
                        to.Translate(
                            s_Child,
                            cur_Ec,//「E■fnc」とか
                            memoryApplication,
                            pg_ParsingLog,
                            log_Reports
                            );
                    }
                    else if (NamesNode.S_F_STR == s_Child.Name)
                    {
                        //━━━━━
                        // f-str
                        //━━━━━
                        //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(c)f-str 使っていなければ廃止したい。");

                        // 親要素「S■fnc」の子要素として追加します。
                        ConfigurationtreeToExpression_F14_FstrImpl_ to = new ConfigurationtreeToExpression_F14_FstrImpl_();
                        to.Translate(
                            s_Child,
                            cur_Ec,//「E■fnc」とか
                            memoryApplication,
                            pg_ParsingLog,
                            log_Reports
                            );
                    }
                    else if (NamesNode.S_FNC == s_Child.Name)
                    {
                        //━━━━━
                        // fnc
                        //━━━━━
                        //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(e)fnc 使っていなければ廃止したい。");

                        //
                        // S_FVarImpl (「S■f-var」)など。
                        // 【追加 2012-05-31】
                        //

                        // 親要素「S■fnc」の子要素として追加します。
                        pg_ParsingLog.Increment("(SToE_F_4FFncImpl②)");
                        ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FncImpl_();
                        to.Translate(
                            s_Child,// s_Fnc,//※s_Node(「S■f-var」とか)を入れるのではなく、その親を入れます。
                            cur_Ec,//「E■fnc」とかか?
                            memoryApplication,
                            pg_ParsingLog,
                            log_Reports
                            );
                        pg_ParsingLog.Decrement();

                    }
                    else if (NamesNode.S_F_PARAM == s_Child.Name)
                    {
                        //━━━━━
                        // f-param
                        //━━━━━
                        //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(f)f-param 使っていなければ廃止したい。");

                        // 【追加 2012-06-05】
                        ConfigurationtreeToExpression_F14_FparamImpl_ to4 = new ConfigurationtreeToExpression_F14_FparamImpl_();
                        to4.Translate(
                            s_Child,
                            cur_Ec,
                            memoryApplication,
                            pg_ParsingLog,
                            log_Reports
                            );

                    }
                    else
                    {
                        // todo:2
                        goto gt_Error_UndefinedChlid;
                        throw new Exception(Info_ConfigurationtreeToExpression.Name_Library + ":" + this.GetType().Name + "#ParseChild:(16) 「S■[" + cur_Cf.Name + "]」に、未定義の子要素「S■[" + s_Child.Name + "]」がありました。");
                    }
                }

                goto gt_EndMethod2;

                //
            gt_Error_UndefinedChlid:
                {
                    Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                    tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名
                    tmpl.SetParameter(2, s_Child.Name, log_Reports);//子要素名
                    tmpl.SetParameter(3, cur_Cf.Dictionary_Attribute.Count.ToString(), log_Reports);//string属性の数

                    //string属性のリスト
                    StringBuilder s1 = new StringBuilder();
                    cur_Cf.Dictionary_Attribute.ForEach(delegate(string sKey2, string sValue2, ref bool bBreak2)
                    {
                        s1.Append("s属 [" + sKey2 + "]=[" + sValue2 + "]\n");
                    });
                    tmpl.SetParameter(4, s1.ToString(), log_Reports);

                    tmpl.SetParameter(5, cur_Cf.List_Child.Count.ToString(), log_Reports);//子要素の数

                    //子要素のリスト
                    StringBuilder s2 = new StringBuilder();
                    cur_Cf.List_Child.ForEach(
                        delegate(Configurationtree_Node cf_Child2, ref bool bBreak5)
                        {
                            s2.Append("子「S■" + cf_Child2.Name + "」\n");
                        });
                    tmpl.SetParameter(6, s2.ToString(), log_Reports);

                    tmpl.SetParameter(7, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト

                    memoryApplication.CreateErrorReport("Er:7005;", tmpl, log_Reports);
                }
                goto gt_EndMethod2;

            gt_EndMethod2:
                ;
            });

            goto gt_EndMethod;
            //
            //
            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
Beispiel #18
0
        //────────────────────────────────────────

        /// <summary>
        /// S → E
        ///
        /// データソース、
        /// データターゲット、
        /// <view>
        /// の3つを変換。
        /// </summary>
        /// <param oNodeName="sList_Name_Control"></param>
        /// <param oNodeName="s_FcConfig"></param>
        /// <param oNodeName="moOpyopyo"></param>
        /// <param oNodeName="log_Reports"></param>
        public void Translate(
            List <string> sList_Name_Control,
            Configurationtree_Node cf_FcConfig,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。");

            //
            //
            //
            // デバッグ開始
            //
            //
            //
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE_DsrcDtrg", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(1)データソース・データターゲット・SSR");
            }

            //
            //
            //
            //

            string sName_Usercontrol;

            if (log_Reports.Successful)
            {
                // 正常時

                foreach (string sFcName in sList_Name_Control)
                {
                    // コントロール名。
                    Expression_Node_StringImpl ec_FcName = new Expression_Node_StringImpl(null, cf_FcConfig);
                    ec_FcName.AppendTextNode(
                        sFcName,
                        cf_FcConfig,
                        log_Reports
                        );


                    // コントロール名の指定は、1件のみと想定。
                    List <Usercontrol> list_Usercontrol = memoryApplication.MemoryForms.GetUsercontrolsByName(
                        ec_FcName,
                        true,
                        log_Reports
                        );

                    Usercontrol fcUc;
                    if (list_Usercontrol.Count < 1)
                    {
                        sName_Usercontrol = sFcName;
                        goto gt_Error_NotFoundUsercontrol;
                    }
                    else
                    {
                        fcUc = list_Usercontrol[0];
                    }



                    Configurationtree_Node cf_Control = fcUc.ControlCommon.Configurationtree_Control;

                    if (null == cf_Control)
                    {
                        //
                        // O_コントロール要素を新規作成。
                        cf_Control = new Configurationtree_NodeImpl(NamesNode.S_CONTROL1, cf_FcConfig);
                        fcUc.ControlCommon.Configurationtree_Control = cf_Control;
                    }
                    else
                    {
                        //
                        // O_コントロール要素は既存。
                    }


                    //
                    // コントロール名。
                    fcUc.ControlCommon.Configurationtree_Control.Dictionary_Attribute.Set(PmNames.S_NAME.Name_Pm, sFcName, log_Reports);


                    ConfigurationtreeToExpression_F11_ControlImpl_ to0 = new ConfigurationtreeToExpression_F11_ControlImpl_();
                    to0.Translate(
                        cf_Control,
                        fcUc.ControlCommon.Expression_Control,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
            }
            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
gt_Error_NotFoundUsercontrol:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, sName_Usercontrol, log_Reports);                                       //コントロール名
                tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_FcConfig), log_Reports); //設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7001;", tmpl, log_Reports);
            }

            // 処理を中断。
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement("データソース・データターゲット・SSR");
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #19
0
        //────────────────────────────────────────

        public void Translate(
            Configurationtree_Node cur_Cf,      //<a-empty-field>
            Expression_Node_String parent_Expr, //Expressionv_5FAllTrueImpl
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(39)" + cur_Cf.Name);
            }

            //
            //
            //
            //


            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_6AEmptyFieldImpl ecv_AEmptyFld = new Expressionv_6AEmptyFieldImpl(parent_Expr, cur_Cf, memoryApplication);


            //
            //
            //
            // 属性
            //
            //
            //
            {
                {
                    PmName pmName = PmNames.S_TYPE;
                    string sValue;
                    bool   bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                    if (bHit)
                    {
                        Expression_Leaf_String ec_Leaf = new Expression_Leaf_StringImpl(sValue, parent_Expr, cur_Cf);
                        ecv_AEmptyFld.SetAttribute(pmName.Name_Pm, ec_Leaf, log_Reports);
                        //evAEmptyFld.Dictionary_SAttribute.Add(sAttrName, s_Cur.SAttrDic.Get(sAttrName, true, log_Reports));
                    }
                    else
                    {
                        // クリアー上書きしない。
                    }
                }

                {
                    PmName pmName = PmNames.S_DESCRIPTION;
                    string sValue;
                    bool   bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                    if (bHit)
                    {
                        Expression_Leaf_String ec_Leaf = new Expression_Leaf_StringImpl(sValue, parent_Expr, cur_Cf);
                        ecv_AEmptyFld.SetAttribute(pmName.Name_Pm, ec_Leaf, log_Reports);
                    }
                    else
                    {
                        // クリアー上書きしない。
                    }
                }
            }


            //
            //
            //
            // 親へ連結
            //
            //
            //
            {
                // TODO:?
                parent_Expr.List_Expression_Child.Add(ecv_AEmptyFld, log_Reports);
            }


            //
            //
            //
            // 子
            //
            //
            //
            {
                // <f-cell>要素のリスト
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    ecv_AEmptyFld,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            goto gt_EndMethod;
            //
            //
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        /// <summary>
        /// <f-param>
        /// </summary>
        /// <param name="oFStrNode"></param>
        /// <param name="nFAelem"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,//<f-param>
            Expression_Node_String parent_Ec,//親<●●>要素。汎用。
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(28)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_FparamImpl cur_Ec = new Expression_FparamImpl(parent_Ec, cur_Cf, memoryApplication);

            //
            //
            //
            // 属性
            //
            //
            //
            if (log_Reports.Successful)
            {
                // 非必須 call=”” call属性がなくても正常です。子要素を見に行きます。
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    false,//name属性は無い。
                    true,//valueは子f-strに変換。
                    log_Reports
                    );
            }

            //
            //
            //
            // 子
            //
            //
            //
            {
                // 子<●●> TODO:子call属性要素。
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }
            //ystem.Console.WriteLine(this.GetType().Name + "#SToE: ──────────属性ここまで");

            //
            //
            //
            // 親へ連結
            //
            //
            //
            {
                parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports);
            }

            //
            //
            //
            //

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void Translate(
            Configurationtree_Node cur_Conf,
            Expressionv_4ADisplayImpl exprv_ADisplay,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(38)" + cur_Conf.Name);
            }

            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_5FAllTrueImpl cur_Exprv = new Expressionv_5FAllTrueImpl(exprv_ADisplay, cur_Conf, memoryApplication);

            //
            //
            //
            // 子
            //
            //
            //
            if(log_Reports.Successful)
            {
                exprv_ADisplay.List_Expression_Child.Add(
                    cur_Exprv,
                    log_Reports
                    );
            }

            //
            //
            //
            // 子
            //
            //
            //
            List<Configurationtree_Node> cfList_Fnc = cur_Conf.GetChildrenByNodename(NamesNode.S_FNC, false, log_Reports);
            foreach (Configurationtree_Node cf_Child in cfList_Fnc)
            {
                string child_SName_Fnc;
                cf_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out child_SName_Fnc, true, log_Reports);

                if (NamesFnc.S_VLD_EMPTY_FIELD == child_SName_Fnc)
                {
                    // <a-empty-field>要素
                    ConfigurationtreeToExpression_V55_AEmptyFieldImpl_ to = new ConfigurationtreeToExpression_V55_AEmptyFieldImpl_();
                    to.Translate(
                        cf_Child,
                        cur_Exprv,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else
                {
                    if (log_Method.CanDebug(0))
                    {
                        log_Method.WriteError_ToConsole("未実装です。");
                    }

                    throw new Exception("未実装です。");
                }
            }

            goto gt_EndMethod;
            //
            //
            //
            //
            gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Conf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #22
0
        //────────────────────────────────────────

        public override void Translate(
            Configurationtree_Node cur_Cf,
            Expression_Node_String parent_Ec,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            // throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。");

            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(18)" + cur_Cf.Name);
            }

            //
            //
            //
            //


            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String ec_Value;
            {
                ec_Value = new Expression_Node_StringImpl(parent_Ec, cur_Cf);
                ec_Value.AppendTextNode(
                    cur_Cf.Name,
                    cur_Cf,
                    log_Reports
                    );
            }



            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_StringImpl ec_Ap1p = new Expression_Node_StringImpl(parent_Ec, cur_Cf);

            ec_Ap1p.SetAttribute(
                PmNames.S_NAME.Name_Pm,
                ec_Value,
                log_Reports
                );

            StringBuilder sb = new StringBuilder();

            sb.Append("p");
            sb.Append(this.NP1p);
            sb.Append("p");



            //
            //
            //
            // 属性
            //
            //
            //
            parent_Ec.SetAttribute(
                sb.ToString(),
                ((Expression_Node_String)ec_Ap1p),
                log_Reports
                );


            //
            // 子要素
            //
            this.ParseChild_InConfigurationtreeToExpression(
                cur_Cf,
                ec_Ap1p,
                memoryApplication,
                pg_ParsingLog,
                log_Reports
                );

            goto gt_EndMethod;
            //
            //
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public override void Translate(
            Configurationtree_Node cur_Cf,//「S■fnc」
            Expression_Node_String parent_Ec,//「S■fnc」、や「S■event」か?
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(29)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            if (!log_Reports.Successful)
            {
                goto gt_EndMethod;
            }

            if (null == parent_Ec)
            {
                goto gt_Error_NullParent;
            }

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String cur_Ec = null;  //「E■fnc」

            //
            // 親ファンク名
            // 自ファンク名
            //
            string parent_SName_Fnc = "";
            string sName_MyFnc = "";
            {
                bool bHit9 = parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports);

                if (!log_Reports.Successful)
                {
                    goto gt_EndMethod;
                }
                else if (NamesNode.S_FNC == parent_Ec.Cur_Configuration.Name && "" == parent_SName_Fnc)
                {
                    //
                    // エラー。親要素が、name属性を持たない「E■fnc」だった。
                    //
                    goto gt_Error_NoNameParent1;
                }
            }

            //   「E■fnc」には、name=”★”属性が必須。
            bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, true, log_Reports);

            if (!log_Reports.Successful)
            {
                goto gt_EndMethod;
            }

            //
            //
            //
            // 自
            //
            //
            //
            if (log_Reports.Successful)
            {
                // 「E■fnc」要素を作成。

                if (NamesFnc.S_ALL_TRUE == sName_MyFnc)
                {
                    cur_Ec = Expressionv_5FAllTrueImpl.Create(parent_Ec, cur_Cf, memoryApplication);
                }
                else if (NamesFnc.S_TEXT_TEMPLATE == sName_MyFnc)
                {
                    cur_Ec = Expression_SftextTemplate.Create(parent_Ec, cur_Cf, memoryApplication);
                }
                else if (NamesFnc.S_CELL == sName_MyFnc)
                {
                    if (log_Method.CanDebug(10))
                    {
                        log_Method.WriteDebug_ToConsole( "(2) 「S■fnc name=”[" + sName_MyFnc + "]”」要素 属性解析開始。");
                    }
                    cur_Ec = Expression_SfcellImpl.Create(parent_Ec, cur_Cf, memoryApplication);
                }
                else if (NamesFnc.S_VALUE_CONTROL == sName_MyFnc)
                {
                    // コントロール名を取得し、コントロールの値を返すように設定。

                    string sFcName;
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sFcName, true, log_Reports);
                    if (!log_Reports.Successful)
                    {
                        goto gt_EndMethod;
                    }

                    Expression_Node_String ec_FcName = new Expression_Leaf_StringImpl(sFcName, parent_Ec, cur_Cf);
                    cur_Ec = new Expression_ValuecontrolImpl(ec_FcName, memoryApplication, parent_Ec, cur_Cf);
                }
                else if (NamesFnc.S_SWITCH == sName_MyFnc)
                {
                    if(log_Method.CanDebug(1))
                    {
                        Log_TextIndented s = new Log_TextIndentedImpl();
                        parent_Ec.ToText_Snapshot(s);
                        log_Method.WriteDebug_ToConsole( "E■switch生成。s=" + s.ToString());
                    }
                    cur_Ec = Expression_SfswitchImpl.Create(parent_Ec, cur_Cf);
                }
                else
                {

                    if(sName_MyFnc.StartsWith(NamesFnc.S_UF))
                    {
                        // ユーザー定義関数
                        cur_Ec = new Expression_FfncImpl(parent_Ec, cur_Cf, memoryApplication);
                    }
                    else
                    {
                        // システム定義関数
                        cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf);
                    }

                }
            }
            else
            {
                goto gt_EndMethod;
            }

            //
            //
            //
            // 属性
            //
            //
            //
            if (log_Reports.Successful)
            {
                // 元からあった。
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    true,//name属性は必須。
                    false,//value属性は、子<f-str>にしない。
                    log_Reports
                    );
            }

            //
            //
            //
            // 子
            //
            //
            //
            if (log_Reports.Successful)
            {
                if(NamesFnc.S_TEXT_TEMPLATE == sName_MyFnc)
                {
                    this.ParseChild_SpecialTextTemplate_(
                        cur_Cf,
                        cur_Ec,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else if (NamesFnc.S_SWITCH == sName_MyFnc)
                {
                    this.ParseChild_SpecialSwitch_(
                        cur_Cf,//「S■fnc」
                        cur_Ec,//「E■fnc」
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                            );
                }
                else if (NamesFnc.S_VLD_EMPTY_FIELD == sName_MyFnc)
                {
                    // <a-empty-field>要素
                    ConfigurationtreeToExpression_V55_AEmptyFieldImpl_ to = new ConfigurationtreeToExpression_V55_AEmptyFieldImpl_();
                    to.Translate(
                        cur_Cf,
                        cur_Ec,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else
                {
                    // この「S□fnc」の子を解析。
                    // 「Sf:cell;」
                    // 「Sf:where;」
                    // 「Sf:rec-cond;」

                    // 【追加 2012-06-02】
                    this.ParseChild_SpecialFnc_(
                        cur_Cf,
                        cur_Ec,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
            }
            else
            {
                goto gt_EndMethod;
            }

            //
            //
            //
            // 親へ連結
            //
            //
            //
            if (log_Reports.Successful)
            {

                //
                // "hardcoding-control" に追加する子要素としては、f-cellなどがある。
                //

                if (
                    sName_MyFnc.StartsWith(NamesFnc.S_UF)//ユーザー定義関数
                    || NamesFnc.S_TEXT_TEMPLATE == sName_MyFnc//テンプレート
                    || NamesFnc.S_SWITCH == sName_MyFnc//スイッチ文
                    || (NamesNode.S_FNC == cur_Cf.Name && NamesFnc.S_VALUE_CONTROL == sName_MyFnc)//todo:
                    || (NamesNode.S_FNC == parent_Ec.Cur_Configuration.Name)
                    || (NamesFnc.S_CELL == sName_MyFnc || NamesFnc.S_TEXT_TEMPLATE == sName_MyFnc)
                    || (sName_MyFnc == NamesFnc.S_REC_COND && NamesNode.S_FNC == parent_Ec.Cur_Configuration.Name && NamesFnc.S_WHERE == parent_SName_Fnc)//親が<rec-cond>で、自<fnc name=”Sf:Where;”>要素
                    )
                {
                    parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports);
                }
                else
                {
                    // エラー

                    goto gt_Error_CanNotAddParent;
                    // todo:
                    //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE:(18)★★親要素へ連結不能    ・親「E■[" + e_Parent.Cur_Configurationtree.Name + "] name=”[" + sParentFncName + "]”」 ← 自「S■[" + s_AFnc.Name_Node + "] name=”[" + sFncName + "]”」中止。 /エラー。親要素に追加しようとしましたが、予想しない親要素でした。");
                }

            }

            //
            //
            // 終わり際に、デバッグ
            //
            //
            if (log_Method.CanDebug(10) && log_Reports.Successful)
            {
                if (null != cur_Ec)//既にエラーが出ている場合。
                {
                    log_Method.WriteDebug_ToConsole("(19) 自要素の属性の数=[" + cur_Ec.Dictionary_Expression_Attribute.Count + "]");

                    log_Method.WriteDebug_ToConsole("(21) ┌────┐自要素。その子要素の数=[" + cur_Ec.List_Expression_Child.Count + "]");

                    cur_Ec.List_Expression_Child.ForEach(
                        delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak)
                        {
                            log_Method.WriteDebug_ToConsole("「S■" + e_Child.Cur_Configuration.Name + "」");
                        });

                    log_Method.WriteDebug_ToConsole( "(22) └────┘");

                    log_Method.WriteDebug_ToConsole( "(23)└────────────────┘ 「S■[" + cur_Cf.Name + "] name=”[" + sName_MyFnc + "]”」(fnc)要素解析終了。");

                    //
                    // name属性の指定は必須です。
                    //
                    string sName8;
                    bool bHit8 = cur_Ec.TrySelectAttribute(out sName8, PmNames.S_NAME.Name_Pm, EnumHitcount.One, log_Reports);
                    if (!bHit8)
                    {
                        // todo:
                        throw new Exception(Info_ConfigurationtreeToExpression.Name_Library + ":" + this.GetType().Name + "#SToE:(24)fnc要素にname属性が指定されていないのはエラーです①。");
                    }
                    else if ("" == sName8)
                    {
                        // todo:
                        //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE:(24)fnc要素に空文字列のname属性が指定されているのはエラーです。");
                        goto gt_Error_NoNameParent2;
                    }
                }
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
            gt_Error_CanNotAddParent:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名
                tmpl.SetParameter(2, sName_MyFnc, log_Reports);//関数名

                if (null != cur_Ec)
                {
                    tmpl.SetParameter(3, cur_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//属性の数

                    //属性リスト
                    StringBuilder s1 = new StringBuilder();
                    cur_Ec.Dictionary_Expression_Attribute.ForEach(
                        delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak)
                        {
                            s1.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n");
                        });
                    tmpl.SetParameter(4, s1.ToString(), log_Reports);

                    tmpl.SetParameter(5, cur_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子要素の数

                    //子要素リスト
                    StringBuilder s2 = new StringBuilder();
                    cur_Ec.List_Expression_Child.ForEach(
                        delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak)
                        {
                            s2.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n");
                        });
                    tmpl.SetParameter(6, s2.ToString(), log_Reports);

                    tmpl.SetParameter(7, NamesNode.S_ARG, log_Reports);//期待の親設定ノード名
                    tmpl.SetParameter(8, PmNames.S_WHERE.Name_Pm, log_Reports);//期待の親設定関数名
                }
                else
                {
                    tmpl.SetParameter(3, "ヌル", log_Reports);//設定属性の数
                    tmpl.SetParameter(4, "ヌル", log_Reports);//設定属性リスト
                    tmpl.SetParameter(5, "ヌル", log_Reports);//設定子要素の数
                    tmpl.SetParameter(6, "ヌル", log_Reports);//設定子要素リスト
                    tmpl.SetParameter(7, "ヌル", log_Reports);//期待の親設定ノード名
                    tmpl.SetParameter(8, "ヌル", log_Reports);//期待の親設定関数名
                }

                if (null != parent_Ec)
                {
                    tmpl.SetParameter(9, parent_Ec.Cur_Configuration.Name, log_Reports);//実際の親Expression要素ノード名
                    tmpl.SetParameter(10, parent_SName_Fnc, log_Reports);//実際の親Expression要素関数名
                    tmpl.SetParameter(11, parent_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//Expression属性の数

                    StringBuilder s3 = new StringBuilder();
                    parent_Ec.Dictionary_Expression_Attribute.ForEach(
                        delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak)
                        {
                            s3.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n");
                        });
                    tmpl.SetParameter(12, s3.ToString(), log_Reports);//子Expression属性リスト

                    tmpl.SetParameter(13, parent_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子Expression要素数

                    StringBuilder s4 = new StringBuilder();
                    parent_Ec.List_Expression_Child.ForEach(
                        delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak)
                        {
                            s4.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n");
                        });
                    tmpl.SetParameter(14, s4.ToString(), log_Reports);//子Expression要素リスト

                }
                else
                {
                    tmpl.SetParameter(9, "ヌル", log_Reports);//実際の親Expression要素ノード名
                    tmpl.SetParameter(10, "ヌル", log_Reports);//実際の親Expression要素関数名
                    tmpl.SetParameter(11, "ヌル", log_Reports);//Expression属性の数
                    tmpl.SetParameter(12, "ヌル", log_Reports);//子Expression属性リスト
                    tmpl.SetParameter(13, "ヌル", log_Reports);//子Expression要素数
                    tmpl.SetParameter(14, "ヌル", log_Reports);//子Expression要素リスト
                }

                tmpl.SetParameter(15, Log_RecordReportsImpl.ToText_Configuration(parent_Ec.Cur_Configuration), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7021;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_NoNameParent2:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名
                tmpl.SetParameter(2, sName_MyFnc, log_Reports);//関数名

                if (null != cur_Ec)
                {
                    tmpl.SetParameter(3, cur_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//属性の数

                    //属性リスト
                    StringBuilder s1 = new StringBuilder();
                    cur_Ec.Dictionary_Expression_Attribute.ForEach(
                        delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak)
                        {
                            s1.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n");
                        });
                    tmpl.SetParameter(4, s1.ToString(), log_Reports);

                    tmpl.SetParameter(5, cur_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子要素の数

                    //子要素リスト
                    StringBuilder s2 = new StringBuilder();
                    cur_Ec.List_Expression_Child.ForEach(
                        delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak)
                        {
                            s2.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n");
                        });
                    tmpl.SetParameter(6, s2.ToString(), log_Reports);

                    tmpl.SetParameter(7, NamesNode.S_ARG, log_Reports);//期待の親設定ノード名
                    tmpl.SetParameter(8, PmNames.S_WHERE.Name_Pm, log_Reports);//期待の親設定関数名
                }
                else
                {
                    tmpl.SetParameter(3, "ヌル", log_Reports);//設定属性の数
                    tmpl.SetParameter(4, "ヌル", log_Reports);//設定属性リスト
                    tmpl.SetParameter(5, "ヌル", log_Reports);//設定子要素の数
                    tmpl.SetParameter(6, "ヌル", log_Reports);//設定子要素リスト
                    tmpl.SetParameter(7, "ヌル", log_Reports);//期待の親設定ノード名
                    tmpl.SetParameter(8, "ヌル", log_Reports);//期待の親設定関数名
                }

                if (null != parent_Ec)
                {
                    tmpl.SetParameter(9, parent_Ec.Cur_Configuration.Name, log_Reports);//実際の親Expression要素ノード名
                    tmpl.SetParameter(10, parent_SName_Fnc, log_Reports);//実際の親Expression要素関数名
                    tmpl.SetParameter(11, parent_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//Expression属性の数

                    StringBuilder s3 = new StringBuilder();
                    parent_Ec.Dictionary_Expression_Attribute.ForEach(
                        delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak)
                        {
                            s3.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n");
                        });
                    tmpl.SetParameter(12, s3.ToString(), log_Reports);//子Expression属性リスト

                    tmpl.SetParameter(13, parent_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子Expression要素数

                    StringBuilder s4 = new StringBuilder();
                    parent_Ec.List_Expression_Child.ForEach(
                        delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak)
                        {
                            s4.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n");
                        });
                    tmpl.SetParameter(14, s4.ToString(), log_Reports);//子Expression要素リスト

                }
                else
                {
                    tmpl.SetParameter(9, "ヌル", log_Reports);//実際の親Expression要素ノード名
                    tmpl.SetParameter(10, "ヌル", log_Reports);//実際の親Expression要素関数名
                    tmpl.SetParameter(11, "ヌル", log_Reports);//Expression属性の数
                    tmpl.SetParameter(12, "ヌル", log_Reports);//子Expression属性リスト
                    tmpl.SetParameter(13, "ヌル", log_Reports);//子Expression要素数
                    tmpl.SetParameter(14, "ヌル", log_Reports);//子Expression要素リスト
                }

                tmpl.SetParameter(15, Log_RecordReportsImpl.ToText_Configuration(parent_Ec.Cur_Configuration), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7022;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_NoNameParent1:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名
                tmpl.SetParameter(2, sName_MyFnc, log_Reports);//関数名

                if (null != cur_Ec)
                {
                    tmpl.SetParameter(3, cur_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//属性の数

                    //属性リスト
                    StringBuilder s1 = new StringBuilder();
                    cur_Ec.Dictionary_Expression_Attribute.ForEach(
                        delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak)
                        {
                            s1.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n");
                        });
                    tmpl.SetParameter(4, s1.ToString(), log_Reports);

                    tmpl.SetParameter(5, cur_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子要素の数

                    //子要素リスト
                    StringBuilder s2 = new StringBuilder();
                    cur_Ec.List_Expression_Child.ForEach(
                        delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak)
                        {
                            s2.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n");
                        });
                    tmpl.SetParameter(6, s2.ToString(), log_Reports);

                    tmpl.SetParameter(7, NamesNode.S_ARG, log_Reports);//期待の親設定ノード名
                    tmpl.SetParameter(8, PmNames.S_WHERE.Name_Pm, log_Reports);//期待の親設定関数名
                }
                else
                {
                    tmpl.SetParameter(3, "ヌル", log_Reports);//設定属性の数
                    tmpl.SetParameter(4, "ヌル", log_Reports);//設定属性リスト
                    tmpl.SetParameter(5, "ヌル", log_Reports);//設定子要素の数
                    tmpl.SetParameter(6, "ヌル", log_Reports);//設定子要素リスト
                    tmpl.SetParameter(7, "ヌル", log_Reports);//期待の親設定ノード名
                    tmpl.SetParameter(8, "ヌル", log_Reports);//期待の親設定関数名
                }

                if (null != parent_Ec)
                {
                    tmpl.SetParameter(9, parent_Ec.Cur_Configuration.Name, log_Reports);//実際の親Expression要素ノード名
                    tmpl.SetParameter(10, parent_SName_Fnc, log_Reports);//実際の親Expression要素関数名
                    tmpl.SetParameter(11, parent_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//Expression属性の数

                    StringBuilder s3 = new StringBuilder();
                    parent_Ec.Dictionary_Expression_Attribute.ForEach(
                        delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak)
                        {
                            s3.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n");
                        });
                    tmpl.SetParameter(12, s3.ToString(), log_Reports);//子Expression属性リスト

                    tmpl.SetParameter(13, parent_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子Expression要素数

                    StringBuilder s4 = new StringBuilder();
                    parent_Ec.List_Expression_Child.ForEach(
                        delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak)
                        {
                            s4.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n");
                        });
                    tmpl.SetParameter(14, s4.ToString(), log_Reports);//子Expression要素リスト

                }
                else
                {
                    tmpl.SetParameter(9, "ヌル", log_Reports);//実際の親Expression要素ノード名
                    tmpl.SetParameter(10, "ヌル", log_Reports);//実際の親Expression要素関数名
                    tmpl.SetParameter(11, "ヌル", log_Reports);//Expression属性の数
                    tmpl.SetParameter(12, "ヌル", log_Reports);//子Expression属性リスト
                    tmpl.SetParameter(13, "ヌル", log_Reports);//子Expression要素数
                    tmpl.SetParameter(14, "ヌル", log_Reports);//子Expression要素リスト
                }

                tmpl.SetParameter(15, Log_RecordReportsImpl.ToText_Configuration(parent_Ec.Cur_Configuration), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7023;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_NullParent:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7004;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #24
0
        //────────────────────────────────────────

        /// <summary>
        ///
        /// </summary>
        /// <param name="s_cur"></param>
        /// <param name="e_parent"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,      //Sf:case;
            Expression_Node_String parent_Expr, //Sf:switch;
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。");

            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(8)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            string parent_SName_Fnc;

            parent_Expr.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One, log_Reports);


            if (NamesFnc.S_SWITCH != parent_SName_Fnc)
            {
                goto gt_Error_Parent;
            }



            //
            // 親
            //
            Expression_SfswitchImpl parent_Expression_Fswitch = (Expression_SfswitchImpl)parent_Expr;

            //
            // 自
            //
            Expression_SfcaseImpl cur_Ec = (Expression_SfcaseImpl)Expression_SfcaseImpl.Create(parent_Expression_Fswitch, cur_Cf);

            //
            // 属性
            //
            {
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    true,  //name属性は必須。
                    false, //value属性は無い。
                    log_Reports
                    );
            }



            //
            //
            //
            // 子
            //
            //
            //
            Configurationtree_Node err_Child_Cf;

            {
                //
                // <fnc name=”Sf:case;”>
                //   <arg1 name=”caseValue” value=”★”>要素の value値を、nFallTrue に セット。
                //

                cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node child_Cf_Arg1, ref bool bBreak)
                {
                    if (
                        // <arg >
                        NamesNode.S_ARG == child_Cf_Arg1.Name
                        )
                    {
                        string sName_Child_Fnc;
                        child_Cf_Arg1.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Child_Fnc, true, log_Reports);

                        if (log_Method.CanDebug(1))
                        {
                            log_Method.WriteDebug_ToConsole(" ・" + child_Cf_Arg1.Name + " name=”[" + sName_Child_Fnc + "]”");
                        }

                        if (
                            //s_ChildArg1.Dictionary_Attribute.ContainsKey(PmNames.NAME.SAttrName) &&
                            // name=”caseValue”
                            PmNames.S_VALUE_CASE.Name_Pm == sName_Child_Fnc
                            )
                        {
                            //
                            // caseValueは、直接 value=""属性で指定されたものだけが有効です。子要素は指定できません。
                            //
                            if (child_Cf_Arg1.Dictionary_Attribute.ContainsKey(PmNames.S_VALUE.Name_Pm))
                            {
                                log_Reports.Log_Callstack.Push(log_Method, "SToE②s_Cur→e_Cur");
                                this.ParseChild_InConfigurationtreeToExpression(
                                    cur_Cf, //Sf:case;
                                    cur_Ec, // e_Cur, e_Parent, //Sf:case;
                                    memoryApplication,
                                    pg_ParsingLog,
                                    log_Reports
                                    );
                                log_Reports.Log_Callstack.Pop(log_Method, "SToE②s_Cur→e_Cur");


                                //
                                // 最初のcaseValueのみ有効。
                                //
                                bBreak = true;
                            }
                            else
                            {
                                // エラー
                                err_Child_Cf = child_Cf_Arg1;
                                bBreak       = true;
                                goto gt_Error_NotConstCaseValue;
                            }
                        }
                        else
                        {
                        }
                    }
                    else
                    {
                        if (log_Method.CanDebug(1))
                        {
                            log_Method.WriteDebug_ToConsole(" ・" + child_Cf_Arg1.Name);
                        }
                    }

                    goto gt_End2;
                    //
                    //
                    gt_Error_NotConstCaseValue:
                    {
                        Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                        tmpl.SetParameter(1, PmNames.S_VALUE_CASE.Name_Pm, log_Reports);                             //ケース名
                        tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(err_Child_Cf), log_Reports); //設定位置パンくずリスト

                        memoryApplication.CreateErrorReport("Er:7017;", tmpl, log_Reports);
                    }
                    goto gt_End2;
                    //
                    gt_End2:
                    ;
                });
            }


            //
            //
            //
            // 親
            //
            //
            //
            parent_Expression_Fswitch.List_Expression_Sfcase.Add(cur_Ec);


            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole(" ┌────┐ 子要素数=[" + cur_Cf.List_Child.Count + "]");
                cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak)
                {
                    if (NamesNode.S_ARG == s_Child.Name)
                    {
                        string sName;
                        s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName, true, log_Reports);
                        log_Method.WriteDebug_ToConsole(" ・" + s_Child.Name + " name=”[" + sName + "]”");
                    }
                    else
                    {
                        log_Method.WriteDebug_ToConsole(" ・" + s_Child.Name);
                    }
                });
                log_Method.WriteDebug_ToConsole(" └────┘");


                log_Method.WriteDebug_ToConsole(" ┌────┐ string属性数=[" + cur_Cf.Dictionary_Attribute.Count + "]");
                cur_Cf.Dictionary_Attribute.ForEach(delegate(string sKey, string sValue, ref bool bBreak)
                {
                    log_Method.WriteDebug_ToConsole(" s属 [" + sKey + "]=[" + sValue + "]");
                });
                log_Method.WriteDebug_ToConsole(" └────┘");
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
gt_Error_Parent:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, parent_Expr.Cur_Configuration.Name, log_Reports);                 //親設定ノード名
                tmpl.SetParameter(2, parent_SName_Fnc, log_Reports);                                   //親設定ノード関数名
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7018;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void Translate(
            Configurationtree_Node cur_Cf,//<a-select-record>
            Expressionv_3FListboxValidationImpl parent_Exprv,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(36)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_4ASelectRecordImpl cur_Exprv = new Expressionv_4ASelectRecordImpl(parent_Exprv, cur_Cf, memoryApplication);

            //
            //
            //
            // 属性
            //
            //
            //
            {
                {
                    PmName pmName = PmNames.S_FIELD_KEY;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_Field = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_VALUE_KEY;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_LookupVal = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_REQUIRED;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_Required = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_FROM;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_From = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_STORAGE;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_Storage = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_DESCRIPTION;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_Description = ec_Str;
                    }
                }

            }//属性

            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Exprv.List_Expressionv_ASelectRecord.Add(cur_Exprv);//.Add(nA66, EnumHitcount.Unconstraint, log_Reports);

            //
            //
            //
            // 子
            //
            //
            //
            {
                // <f-cell>要素のリスト
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Exprv,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            goto gt_EndMethod;
            //
            //
            //
            //
            gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void Translate(
            Configurationtree_Node cur_Cf,//コントロール
            Expression_Node_String ec_Cur,//「E■form-component」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            List<Configurationtree_Node> cfList_Data = cur_Cf.GetChildrenByNodename(NamesNode.S_DATA, false, log_Reports);
            foreach (Configurationtree_Node cf_Data in cfList_Data)
            {
                string sAccess;
                cf_Data.Dictionary_Attribute.TryGetValue(PmNames.S_ACCESS, out sAccess, false, log_Reports);

                List<string> sList_Access = new CsvTo_ListImpl().Read(sAccess);

                if (sList_Access.Contains(ValuesAttr.S_FROM))
                {
                    // <data>要素(access="from")を S→E。

                    ConfigurationtreeToExpression_F12_ to = new ConfigurationtreeToExpression_F12_DataImpl_();
                    to.Translate(
                        cf_Data,
                        ec_Cur,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }

                // fromとtoは、両方持つこともある。

                if (sList_Access.Contains(ValuesAttr.S_TO))
                {
                    // <data>(access="to")要素要素を S→E。

                    ConfigurationtreeToExpression_F12_ to = new ConfigurationtreeToExpression_F12_DataImpl_();
                    to.Translate(
                        cf_Data,
                        ec_Cur,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
            }

            //
            // <view>要素を S→E。
            List<Configurationtree_Node> sList_View = cur_Cf.GetChildrenByNodename(NamesNode.S_VIEW, false, log_Reports);
            if(1<sList_View.Count)
            {
                // <view>要素は1個だけあるという前提。
                throw new Exception("<[" + NamesNode.S_VIEW + "]>要素が2個以上あるのはエラー。");
            }
            else if (0 < sList_View.Count)
            {
                Configurationtree_Node cf_View = sList_View[0];

                ConfigurationtreeToExpression_F12_ViewImpl_ to = new ConfigurationtreeToExpression_F12_ViewImpl_();
                to.Translate(
                    cf_View,
                    ec_Cur,//.E_View,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }
            else
            {
            }
        }
 //────────────────────────────────────────
 public abstract void Translate(
     Configurationtree_Node cur_Cf,
     Expression_Node_String parent_Ec,
     MemoryApplication memoryApplication,
     Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
     Log_Reports log_Reports
     );
Beispiel #28
0
        //────────────────────────────────────────
        #endregion



        #region アクション
        //────────────────────────────────────────

        public virtual void Translate_Step1(
            ConfigurationtreeToFunction_Item parentProcesser,
            Configurationtree_Node action_Conf,
            Expression_Node_Function cur_Expr_Func,
            MemoryApplication owner_MemoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);

            log_Method.BeginMethod(Info_Functions.Name_Library, this, "Translate_Step1", log_Reports);

            //
            // アクション型引数の引数
            //
            string err_sName_Attr;

            action_Conf.List_Child.ForEach(delegate(Configurationtree_Node s_Arg, ref bool bBreak)
            {
                string sName_Attr;
                s_Arg.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Attr, true, log_Reports);

                if (cur_Expr_Func.ContainsName_ArgumentDefinition(sName_Attr, log_Reports))
                {
                    //
                    // 自解析
                    //
                    ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl();
                    to.Translate(
                        s_Arg,
                        cur_Expr_Func,
                        owner_MemoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else
                {
                    // エラー
                    err_sName_Attr = sName_Attr;
                    goto gt_Error_UndefinedArgName;
                }

                goto gt_EndMethod2;
                //
                //
                gt_Error_UndefinedArgName:
                bBreak = true;
                {
                    Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                    tmpl.SetParameter(1, err_sName_Attr, log_Reports);                                                //引数名
                    tmpl.SetParameter(2, cur_Expr_Func.ToString_ListNameargumentDefinition_ForReport(), log_Reports); //引数名リスト

                    owner_MemoryApplication.CreateErrorReport("Er:110001;", tmpl, log_Reports);
                }
                //
                gt_EndMethod2:
                ;
            });

            goto gt_EndMethod;

gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
Beispiel #29
0
        //────────────────────────────────────────

        public void Translate(
            Configurationtree_Node cur_Cf, //コントロール
            Expression_Node_String ec_Cur, //「E■form-component」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            List <Configurationtree_Node> cfList_Data = cur_Cf.GetChildrenByNodename(NamesNode.S_DATA, false, log_Reports);

            foreach (Configurationtree_Node cf_Data in cfList_Data)
            {
                string sAccess;
                cf_Data.Dictionary_Attribute.TryGetValue(PmNames.S_ACCESS, out sAccess, false, log_Reports);

                List <string> sList_Access = new CsvTo_ListImpl().Read(sAccess);

                if (sList_Access.Contains(ValuesAttr.S_FROM))
                {
                    // <data>要素(access="from")を S→E。

                    ConfigurationtreeToExpression_F12_ to = new ConfigurationtreeToExpression_F12_DataImpl_();
                    to.Translate(
                        cf_Data,
                        ec_Cur,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }

                // fromとtoは、両方持つこともある。

                if (sList_Access.Contains(ValuesAttr.S_TO))
                {
                    // <data>(access="to")要素要素を S→E。

                    ConfigurationtreeToExpression_F12_ to = new ConfigurationtreeToExpression_F12_DataImpl_();
                    to.Translate(
                        cf_Data,
                        ec_Cur,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
            }



            //
            // <view>要素を S→E。
            List <Configurationtree_Node> sList_View = cur_Cf.GetChildrenByNodename(NamesNode.S_VIEW, false, log_Reports);

            if (1 < sList_View.Count)
            {
                // <view>要素は1個だけあるという前提。
                throw new Exception("<[" + NamesNode.S_VIEW + "]>要素が2個以上あるのはエラー。");
            }
            else if (0 < sList_View.Count)
            {
                Configurationtree_Node cf_View = sList_View[0];

                ConfigurationtreeToExpression_F12_ViewImpl_ to = new ConfigurationtreeToExpression_F12_ViewImpl_();
                to.Translate(
                    cf_View,
                    ec_Cur,//.E_View,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }
            else
            {
            }
        }
Beispiel #30
0
        //────────────────────────────────────────

        public void ConfigurationtreeToUsercontrol(
            Configurationtree_Node cur_Cf,//Sv_3Validator <validator>
            Usercontrol ucontrol,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToFc", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(41)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            string    err_SParameterValue = null;
            Exception err_Excp            = null;
            string    err_SValue          = null;
            string    err_SName_Validator = null;



            EnumValidation_Old enumResult = EnumValidation_Old.Thru;

            if (cur_Cf.Dictionary_Attribute.ContainsKey(PmNames.S_VALUE_RESULT.Name_Pm))
            {
                string sValue_Parameter;
                cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE_RESULT, out sValue_Parameter, true, log_Reports);
                switch (sValue_Parameter)
                {
                case "OK":
                    enumResult = EnumValidation_Old.Ok;
                    break;

                case "NG":
                    enumResult = EnumValidation_Old.Ng;
                    break;

                case "THRU":
                    enumResult = EnumValidation_Old.Thru;
                    break;

                default:
                    //
                    // エラー。
                    goto gt_Error_UndefinedValidator02;
                }
            }



            string sName;
            string sName_ValidatorTrim;

            {
                PmName pmName = PmNames.S_NAME;
                if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                {
                    cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sName, true, log_Reports);
                    sName_ValidatorTrim = sName.Trim();
                }
                else
                {
                    sName = "";
                    sName_ValidatorTrim = "";
                }
            }



            //
            // バリデーターの選択
            switch (sName_ValidatorTrim)
            {
            case NamesFnc.S_VLD_SPACES:
            {
                // SToE:
                Expressionv_SpacesTextValidator_Old nValidator = new Expressionv_SpacesTextValidator_Old(enumResult);

                ucontrol.AddValidator(
                    nValidator,
                    log_Reports
                    );
            }
            break;

            case NamesFnc.S_VLD_MATCH:
            {
                string sValue_Parameter;
                cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_EXPECTED, out sValue_Parameter, false, log_Reports);
                err_SParameterValue = sValue_Parameter;

                // SToE:
                Expressionv_MatchTextValidator_Old ecv_Validator = new Expressionv_MatchTextValidator_Old(sValue_Parameter);

                ucontrol.AddValidator(
                    ecv_Validator,
                    log_Reports
                    );
            }
            break;

            case NamesFnc.S_VLD_INT_RANGE:
            {
                bool bSuccessful = true;
                int  nBeginValue = 0;
                if (bSuccessful)
                {
                    string sBegin;
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_BEGIN, out sBegin, false, log_Reports);

                    if (!int.TryParse(sBegin, out nBeginValue))
                    {
                        // エラー。
                        err_Excp   = null;
                        err_SValue = sBegin;
                        goto gt_Error_InvalidatedBegin02;
                    }
                }

                int nEndValue = 0;
                if (bSuccessful)
                {
                    string sEnd;
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_END, out sEnd, false, log_Reports);

                    if (!int.TryParse(sEnd, out nEndValue))
                    {
                        // エラー。
                        err_Excp   = null;
                        err_SValue = sEnd;
                        goto gt_Error_InvalidatedEnd02;
                    }
                }

                if (bSuccessful)
                {
                    // SToE:
                    Expressionv_IntRangeTextValidator_Old nValidator = new Expressionv_IntRangeTextValidator_Old(nBeginValue, nEndValue);

                    ucontrol.AddValidator(
                        nValidator,
                        log_Reports
                        );
                }
            }
            break;

            case NamesFnc.S_VLD_ALL:
            {
                // SToE:
                Expressionv_AllTextValidator_Old ecv_Validator = new Expressionv_AllTextValidator_Old(enumResult);

                ucontrol.AddValidator(
                    ecv_Validator,
                    log_Reports
                    );
            }
            break;

            default:
                //
                // エラー。
                err_SName_Validator = sName;
                goto gt_Error_UndefinedValidator03;
            }//switch

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
gt_Error_UndefinedValidator02:
            // TODO 未定義のバリデーターの場合。
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, PmNames.S_VALUE_RESULT.Name_Pm, log_Reports); //引数名
                tmpl.SetParameter(2, err_SParameterValue, log_Reports);            //バリデーター名

                ucontrol.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:7012;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_InvalidatedBegin02:
            // 設定エラー
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, PmNames.S_BEGIN.Name_Pm, log_Reports);                          //属性名
                tmpl.SetParameter(2, err_SValue, log_Reports);                                       //属性値
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ

                ucontrol.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:7013;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_InvalidatedEnd02:
            // 設定エラー
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, PmNames.S_END.Name_Pm, log_Reports);                            //属性名
                tmpl.SetParameter(2, err_SValue, log_Reports);                                       //属性値
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ

                ucontrol.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:7014;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_UndefinedValidator03:
            // TODO 未定義のバリデーターの場合。
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, err_SName_Validator, log_Reports);//バリデーター名

                ucontrol.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:7015;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void Translate(
            Configurationtree_Node cur_Cf,
            Expressionv_3FListboxValidationImpl parent_Exprv,
            UsercontrolListbox uctLst,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(35)" + cur_Cf.Name);
            }

            //
            //

            string err_Child_SName_Node = "";
            string err_Parent_SName_Node = "";
            Configurationtree_Node err_Child_CfNode = null;

            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_4ADisplayImpl cur_Exprv = new Expressionv_4ADisplayImpl(parent_Exprv, cur_Cf, memoryApplication);

            //
            //
            //
            // 属性
            //
            //
            //
            {
                {
                    PmName pmName = PmNames.S_TYPE;
                    string sValue;
                    bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                    if (bHit)
                    {
                        cur_Exprv.Dictionary_SAttribute.Add(pmName.Name_Pm, sValue);
                    }
                }

                {
                    PmName pmName = PmNames.S_DESCRIPTION;
                    string sValue;
                    bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                    if (bHit)
                    {
                        cur_Exprv.Dictionary_SAttribute.Add(pmName.Name_Pm, sValue);
                    }
                }
            }

            parent_Exprv.List_Expressionv_ADisplay.Add(cur_Exprv);
            uctLst.AddValidator_FListboxForItems(parent_Exprv, log_Reports);

            // #デバッグ中
            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole(" 子<f-●●>数=[" + cur_Cf.List_Child.Count + "]");
            }

            //
            //
            //
            // 子
            //
            //
            //
            cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node child_Cf, ref bool bBreak)
            {
                if (child_Cf is Configurationtree_Node)
                {
                    Configurationtree_Node child_Configurationtree_Node = (Configurationtree_Node)child_Cf;

                    string sName_Fnc;
                    child_Configurationtree_Node.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports);

                    if (NamesFnc.S_VLD_ALL_FIELDS_IS_EMPTY == sName_Fnc)
                    {
                        //
                        // <f-all-fields-is-empty>要素
                        ConfigurationtreeToExpression_V54_FAllFieldsIsEmptyImpl_ to = new ConfigurationtreeToExpression_V54_FAllFieldsIsEmptyImpl_();
                        to.Translate(
                            child_Configurationtree_Node,
                            cur_Exprv,
                            memoryApplication,
                            pg_ParsingLog,
                            log_Reports
                            );
                    }
                    else if (NamesFnc.S_ALL_TRUE == sName_Fnc)
                    {
                        //
                        // <f-all-true>要素
                        ConfigurationtreeToExpression_V54_FAllTrueImpl_ to = new ConfigurationtreeToExpression_V54_FAllTrueImpl_();
                        to.Translate(
                            child_Configurationtree_Node,
                            cur_Exprv,
                            memoryApplication,
                            pg_ParsingLog,
                            log_Reports
                            );

                    }
                    else
                    {
                        //
                        // エラー。
                        err_Child_SName_Node = child_Configurationtree_Node.Name;
                        err_Parent_SName_Node = cur_Cf.Name;
                        err_Child_CfNode = child_Configurationtree_Node;
                        bBreak = true;
                    }
                }
            });
            if (null != err_Child_SName_Node)
            {
                goto undefined_element;
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
            undefined_element:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, err_Child_SName_Node, log_Reports);//子設定ノード名
                tmpl.SetParameter(2, err_Parent_SName_Node, log_Reports);//親設定ノード名
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(err_Child_CfNode), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7020;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #32
0
        //────────────────────────────────────────

        public override void Translate(
            Configurationtree_Node cur_Cf,    //<lookup-id>
            Expression_Node_String parent_Ec, //< Sf:text-template;>
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(9)" + cur_Cf.Name);
            }

            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf);


            //
            //
            //
            // 親へ連結 (value属性)
            //
            //
            //
            {
                //
                // 自要素の value="" 属性を、親へ連結
                //
                PmName pmName = PmNames.S_VALUE;

                string sValue;
                bool   bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                if (bHit)
                {
                    cur_Ec.AppendTextNode(
                        sValue,
                        cur_Cf,
                        log_Reports
                        );

                    //
                    //
                    //
                    // 子
                    //
                    //
                    //
                    this.ParseChild_InConfigurationtreeToExpression(
                        cur_Cf,
                        cur_Ec,//自
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                    //
                    //
                    //
                    // 親へ連結 ※属性連結
                    //
                    //
                    //
                    parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports);

                    goto gt_EndMethod;
                }
                else
                {
                }
            }


            //
            //
            //
            // 子
            //
            //
            //
            {
                //<a-default>の子要素を確認し、親<f-switch>のdefault属性に追加します。

                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }


            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports);


            //
            //
            //
            // 親へ連結 debug
            //
            //
            //
            if (log_Method.CanDebug(1))
            {
                string parent_SName_Fnc;
                parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports);
                log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 親<[" + parent_Ec.Cur_Configuration.Name + "] name=”[" + parent_SName_Fnc + "]” >");

                string sName_MyFnc;
                cur_Ec.TrySelectAttribute(out sName_MyFnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports);
                log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 自<[" + cur_Ec.Cur_Configuration.Name + "] name=”[" + sName_MyFnc + "]” >");
            }


            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        private void ParseChild_SpecialTextTemplate_(
            Configurationtree_Node cur_Cf,
            Expression_Node_String owner_Ec,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_Special_",log_Reports);

            //
            //
            //
            //

            //
            // データ_ソース、データ_ターゲット、<fnc >の子要素。

            string sName_OwnerNode = owner_Ec.Cur_Configuration.Name;
            string sName_OwnerFnc = "";
            {
                EnumHitcount enumHitcount;
                if (NamesNode.S_FNC == sName_OwnerNode
                    //||
                    //NamesNode.S_F_TEXT_TEMPLATE2 == sOwnerNodeName
                    )
                {
                    enumHitcount = EnumHitcount.One;
                }
                else
                {
                    enumHitcount = EnumHitcount.One_Or_Zero;
                }
                bool bHit = owner_Ec.TrySelectAttribute(out sName_OwnerFnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports);
            }

            //
            //
            //
            // 子
            //
            //
            //
            string err_SAtFncName;
            Configurationtree_Node err_Cf_AtElm;
            Exception err_E;

            cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node cf_Child, ref bool bBreak)
            {

                if (log_Reports.Successful)
                {
                    if (null == cf_Child)
                    {
                        bBreak = true;
                        goto gt_errorNullValue;
                    }
                    else
                    {
                        string sName_AtNode = cf_Child.Name;
                        string sName_AtFnc = "";
                        {
                            bool bRequired;

                            if (
                                NamesNode.S_FNC == sName_AtNode ||
                                NamesNode.S_ARG == sName_AtNode
                                )
                            {
                                // 「S■fnc」
                                // 「S■arg」
                                bRequired = true;
                            }
                            else
                            {
                                bRequired = false;
                            }

                            cf_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_AtFnc, bRequired, log_Reports);
                        }

                        if (NamesNode.S_ARG == sName_AtNode)
                        {
                            // 「S■arg」

                            int nP1p;
                            bool bP1pNameSuccessful = Utility_TexttemplateP1p.TryParseName(sName_AtFnc, out nP1p);

                            if (bP1pNameSuccessful)
                            {
                                //
                                // 例: <attribute name=”p1p”>
                                ConfigurationtreeToExpression_F16_P1pImpl_ to = new ConfigurationtreeToExpression_F16_P1pImpl_();

                                // Sf:case;文はここには来ない。

                                to.NP1p = nP1p;
                                to.Translate(
                                    cf_Child,
                                    owner_Ec,
                                    memoryApplication,
                                    pg_ParsingLog,
                                    log_Reports
                                    );
                            }
                            else if (
                                NamesFnc.S_TEXT_TEMPLATE == sName_OwnerFnc &&
                                //NamesNode.S_F_TEXT_TEMPLATE2 == sOwnerNodeName &&
                                PmNames.S_TABLE.Name_Pm == sName_AtFnc
                                )
                            {
                                // 【追加 2012-06-05】
                                // <fnc name=”Sf:text-template;”>
                                //      <arg name=”table” value=”~”>

                                // 旧仕様?
                                // 「S■f-text-template name=””」
                                //     「S■table name=””」

                                if (log_Method.CanDebug(2))
                                {
                                    log_Method.WriteDebug_ToConsole("テキストテンプレートのテーブル属性。親要素「S■[" + sName_OwnerNode + "] name=”[" + sName_OwnerFnc + "]”」 自要素「[" + sName_AtNode + "] name=”[" + sName_AtFnc + "]”」 子要素数=[" + cf_Child.List_Child.Count + "] string属性数=[" + cf_Child.Dictionary_Attribute.Count + "] S_Elm属性数=[" + cf_Child.Dictionary_Attribute.Count + "]");
                                }

                                //
                                //
                                // 自
                                //
                                //
                                string sValue;
                                cf_Child.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, true, log_Reports);

                                Expression_Node_String ec_Tbl = new Expression_Node_StringImpl(owner_Ec, cf_Child);
                                ec_Tbl.AppendTextNode(
                                    sValue,
                                    cf_Child,
                                    log_Reports
                                    );

                                owner_Ec.SetAttribute(
                                    PmNames.S_TABLE.Name_Pm,
                                    ec_Tbl,
                                    log_Reports
                                    );

                                // 無視します。
                                goto gt_nextAttr;
                            }
                            else if (this.Dic_B.ContainsKey(sName_AtFnc))
                            {
                                // キー有り。
                                ConfigurationtreeToExpression_F14n16 to = this.Dic_B[sName_AtFnc];
                                to.Translate(
                                    cf_Child,
                                    owner_Ec,
                                    memoryApplication,
                                    pg_ParsingLog,
                                    log_Reports
                                    );
                            }
                            else
                            {
                                // キー無し。
                                err_Cf_AtElm = cf_Child;
                                err_SAtFncName = sName_AtFnc;
                                err_E = null;
                                goto gt_Error_KeyNotFound_Arg3;
                            }

                        }
                        else
                        {

                            ConfigurationtreeToExpression_F14n16 to;
                            if (this.Dic_B.ContainsKey(sName_AtNode))//todo:ノード名と比べるのはおかしい?
                            {
                                // キー有り。
                                to = this.Dic_B[sName_AtNode];
                            }
                            else
                            {
                                // キー無し。
                                err_Cf_AtElm = cf_Child;
                                err_E = null;
                                goto gt_Error_KeyNotFound1;
                            }

                            to.Translate(
                                cf_Child,
                                owner_Ec,
                                memoryApplication,
                                pg_ParsingLog,
                                log_Reports
                                );
                        }
                        // <a-case>要素は、次のループで。

                    }

                }

                goto gt_nextAttr;
            //
            //
            //
            //

            gt_errorNullValue:
                {
                    Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                    tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名
                    tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_Child), log_Reports);//設定位置パンくずリスト

                    memoryApplication.CreateErrorReport("Er:7007;", tmpl, log_Reports);
                }
                goto gt_nextAttr;

            gt_Error_KeyNotFound_Arg3:
                {
                    Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                    tmpl.SetParameter(1, err_Cf_AtElm.Name, log_Reports);//設定ノード名
                    tmpl.SetParameter(2, err_SAtFncName, log_Reports);//関数名
                    tmpl.SetParameter(3, err_Cf_AtElm.GetType().Name, log_Reports);//関数のクラス名
                    tmpl.SetParameter(4, sName_OwnerNode, log_Reports);//親設定ノード名
                    tmpl.SetParameter(5, sName_OwnerFnc, log_Reports);//親設定関数名
                    tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Configuration(err_Cf_AtElm), log_Reports);//設定位置パンくずリスト
                    tmpl.SetParameter(7, Log_RecordReportsImpl.ToText_Exception(err_E), log_Reports);//例外メッセージ

                    memoryApplication.CreateErrorReport("Er:7008;", tmpl, log_Reports);
                }
                goto gt_nextAttr;

            gt_Error_KeyNotFound1:
                {
                    Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                    tmpl.SetParameter(1, err_Cf_AtElm.Name, log_Reports);//設定ノード名
                    tmpl.SetParameter(2, err_Cf_AtElm.GetType().Name, log_Reports);//設定ノードのクラス名
                    tmpl.SetParameter(3, sName_OwnerNode, log_Reports);//親設定ノード名
                    tmpl.SetParameter(4, sName_OwnerFnc, log_Reports);//親設定関数名
                    tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Configuration(err_Cf_AtElm), log_Reports);//設定位置パンくずリスト
                    tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Exception(err_E), log_Reports);//例外メッセージ

                    memoryApplication.CreateErrorReport("Er:7009;", tmpl, log_Reports);
                }
                goto gt_nextAttr;

            gt_nextAttr:
                ;
            });

            goto gt_EndMethod;

            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
 //────────────────────────────────────────
 public virtual void Translate_Step2(
     ConfigurationtreeToFunction_Item parentProcesser,
     Configurationtree_Node action_Conf,
     Expression_Node_Function parent_Ec_Sf,//todo:何これ?
     MemoryApplication owner_MemoryApplication,
     Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
     Log_Reports log_Reports
     )
 {
 }
        //────────────────────────────────────────
        public override void Translate(
            Configurationtree_Node cur_Cf,//<lookup-id>
            Expression_Node_String parent_Ec,//< Sf:text-template;>
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(9)" + cur_Cf.Name);
            }

            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf);

            //
            //
            //
            // 親へ連結 (value属性)
            //
            //
            //
            {
                //
                // 自要素の value="" 属性を、親へ連結
                //
                PmName pmName = PmNames.S_VALUE;

                string sValue;
                bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                if (bHit)
                {

                    cur_Ec.AppendTextNode(
                        sValue,
                        cur_Cf,
                        log_Reports
                        );

                    //
                    //
                    //
                    // 子
                    //
                    //
                    //
                    this.ParseChild_InConfigurationtreeToExpression(
                        cur_Cf,
                        cur_Ec,//自
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                    //
                    //
                    //
                    // 親へ連結 ※属性連結
                    //
                    //
                    //
                    parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports);

                    goto gt_EndMethod;
                }
                else
                {
                }

            }

            //
            //
            //
            // 子
            //
            //
            //
            {
                //<a-default>の子要素を確認し、親<f-switch>のdefault属性に追加します。

                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Ec.SetAttribute(PmNames.S_LOOKUP_ID.Name_Pm, cur_Ec, log_Reports);

            //
            //
            //
            // 親へ連結 debug
            //
            //
            //
            if (log_Method.CanDebug(1))
            {
                string parent_SName_Fnc;
                parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports);
                log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 親<[" + parent_Ec.Cur_Configuration.Name + "] name=”[" + parent_SName_Fnc + "]” >");

                string sName_MyFnc;
                cur_Ec.TrySelectAttribute(out sName_MyFnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports);
                log_Method.WriteDebug_ToConsole(" ☆☆☆☆☆☆☆☆ 自<[" + cur_Ec.Cur_Configuration.Name + "] name=”[" + sName_MyFnc + "]” >");
            }

            goto gt_EndMethod;
            //
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void ConfigurationtreeToUsercontrol(
            Configurationtree_Node cur_Cf,//Sv_3Validator <validator>
            Usercontrol ucontrol,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToFc",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(41)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            string err_SParameterValue = null;
            Exception err_Excp = null;
            string err_SValue = null;
            string err_SName_Validator = null;

            EnumValidation_Old enumResult = EnumValidation_Old.Thru;

            if (cur_Cf.Dictionary_Attribute.ContainsKey(PmNames.S_VALUE_RESULT.Name_Pm))
            {
                string sValue_Parameter;
                cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE_RESULT, out sValue_Parameter, true, log_Reports);
                switch (sValue_Parameter)
                {
                    case "OK":
                        enumResult = EnumValidation_Old.Ok;
                        break;
                    case "NG":
                        enumResult = EnumValidation_Old.Ng;
                        break;
                    case "THRU":
                        enumResult = EnumValidation_Old.Thru;
                        break;
                    default:
                        //
                        // エラー。
                        goto gt_Error_UndefinedValidator02;
                }
            }

            string sName;
            string sName_ValidatorTrim;
            {
                PmName pmName = PmNames.S_NAME;
                if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                {
                    cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sName, true, log_Reports);
                    sName_ValidatorTrim = sName.Trim();
                }
                else
                {
                    sName = "";
                    sName_ValidatorTrim = "";
                }
            }

            //
            // バリデーターの選択
            switch (sName_ValidatorTrim)
            {
                case NamesFnc.S_VLD_SPACES:
                    {
                        // SToE:
                        Expressionv_SpacesTextValidator_Old nValidator = new Expressionv_SpacesTextValidator_Old(enumResult);

                        ucontrol.AddValidator(
                            nValidator,
                            log_Reports
                            );
                    }
                    break;

                case NamesFnc.S_VLD_MATCH:
                    {
                        string sValue_Parameter;
                        cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_EXPECTED, out sValue_Parameter, false, log_Reports);
                        err_SParameterValue = sValue_Parameter;

                        // SToE:
                        Expressionv_MatchTextValidator_Old ecv_Validator = new Expressionv_MatchTextValidator_Old(sValue_Parameter);

                        ucontrol.AddValidator(
                            ecv_Validator,
                            log_Reports
                            );
                    }
                    break;

                case NamesFnc.S_VLD_INT_RANGE:
                    {
                        bool bSuccessful = true;
                        int nBeginValue = 0;
                        if (bSuccessful)
                        {
                            string sBegin;
                            cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_BEGIN, out sBegin, false, log_Reports);

                            if (!int.TryParse(sBegin, out nBeginValue))
                            {
                                // エラー。
                                err_Excp = null;
                                err_SValue = sBegin;
                                goto gt_Error_InvalidatedBegin02;
                            }
                        }

                        int nEndValue = 0;
                        if (bSuccessful)
                        {
                            string sEnd;
                            cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_END, out sEnd, false, log_Reports);

                            if (!int.TryParse(sEnd, out nEndValue))
                            {
                                // エラー。
                                err_Excp = null;
                                err_SValue = sEnd;
                                goto gt_Error_InvalidatedEnd02;
                            }
                        }

                        if (bSuccessful)
                        {
                            // SToE:
                            Expressionv_IntRangeTextValidator_Old nValidator = new Expressionv_IntRangeTextValidator_Old(nBeginValue, nEndValue);

                            ucontrol.AddValidator(
                                nValidator,
                                log_Reports
                                );
                        }
                    }
                    break;

                case NamesFnc.S_VLD_ALL:
                    {
                        // SToE:
                        Expressionv_AllTextValidator_Old ecv_Validator = new Expressionv_AllTextValidator_Old(enumResult);

                        ucontrol.AddValidator(
                            ecv_Validator,
                            log_Reports
                            );
                    }
                    break;

                default:
                    //
                    // エラー。
                    err_SName_Validator = sName;
                    goto gt_Error_UndefinedValidator03;
            }//switch

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
            gt_Error_UndefinedValidator02:
            // TODO 未定義のバリデーターの場合。
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, PmNames.S_VALUE_RESULT.Name_Pm, log_Reports);//引数名
                tmpl.SetParameter(2, err_SParameterValue, log_Reports);//バリデーター名

                ucontrol.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:7012;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_InvalidatedBegin02:
            // 設定エラー
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, PmNames.S_BEGIN.Name_Pm, log_Reports);//属性名
                tmpl.SetParameter(2, err_SValue, log_Reports);//属性値
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ

                ucontrol.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:7013;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_InvalidatedEnd02:
            // 設定エラー
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, PmNames.S_END.Name_Pm, log_Reports);//属性名
                tmpl.SetParameter(2, err_SValue, log_Reports);//属性値
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ

                ucontrol.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:7014;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_UndefinedValidator03:
            // TODO 未定義のバリデーターの場合。
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, err_SName_Validator, log_Reports);//バリデーター名

                ucontrol.ControlCommon.Owner_MemoryApplication.CreateErrorReport("Er:7015;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        private void ParseChild_SpecialSwitch_(
            Configurationtree_Node cur_Cf,//「S■fnc」
            Expression_Node_String owner_Ec,// 「E■fnc」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            // a-●●要素や、switch要素など。

            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_SpecialSwitch_",log_Reports);

            //
            //
            //
            //

            //
            // データ_ソース、データ_ターゲット、<fnc >の子要素。

            string sName_OwnerNode = owner_Ec.Cur_Configuration.Name;
            string sName_OwnerFnc = "";
            {
                EnumHitcount enumHitcount;
                if (NamesNode.S_FNC == sName_OwnerNode
                    //||
                    //NamesNode.S_F_TEXT_TEMPLATE2 == sOwnerNodeName
                    )
                {
                    enumHitcount = EnumHitcount.One;
                }
                else
                {
                    enumHitcount = EnumHitcount.One_Or_Zero;
                }
                bool bHit = owner_Ec.TrySelectAttribute(out sName_OwnerFnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports);
            }

            string sName_MyFnc;
            cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, true, log_Reports);

            //
            // <f-switch>要素であれば、子Sf:case;要素が何個もある。
            //
            if (log_Reports.Successful)
            {
                if (NamesFnc.S_SWITCH == sName_MyFnc)
                {
                    cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak)
                    {
                        Configurationtree_Node err_CfAttr;
                        if (log_Reports.Successful)
                        {
                            string sName;
                            s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName, true, log_Reports);

                            if (
                                NamesNode.S_FNC == s_Child.Name
                                && NamesFnc.S_CASE == sName
                                )
                            {
                                ConfigurationtreeToExpression_F14n16_AbstractImpl_ to = new ConfigurationtreeToExpression_F16_CaseImpl_();
                                to.Translate(
                                    s_Child,//Sf:case;
                                    owner_Ec,//Sf:switch;
                                    memoryApplication,
                                    pg_ParsingLog,
                                    log_Reports
                                    );
                            }
                            else if (NamesNode.S_ARG == s_Child.Name)
                            {
                                // todo:<arg>。恐らくswitchValueなど。
                                ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl();
                                to.Translate(
                                    s_Child,
                                    owner_Ec,//<f-switch >
                                    memoryApplication,
                                    pg_ParsingLog,
                                    log_Reports
                                    );
                            }
                            else
                            {
                                err_CfAttr = s_Child;
                                bBreak = true;
                                goto gt_Error_NotACase;
                            }
                        }

                        goto gt_EndMethod2;
                    //
                    gt_Error_NotACase:
                        {
                            Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                            tmpl.SetParameter(1, err_CfAttr.Name, log_Reports);//設定ノード名
                            tmpl.SetParameter(2, err_CfAttr.GetType().Name, log_Reports);//ノードのクラス名
                            tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(err_CfAttr), log_Reports);//設定位置パンくずリスト

                            memoryApplication.CreateErrorReport("Er:7006;", tmpl, log_Reports);
                        }
                        goto gt_EndMethod2;
                    //
                    gt_EndMethod2:
                        ;
                    });
                }
            }

            goto gt_EndMethod;

            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void Translate(
            Configurationtree_Node cur_Conf,
            Expression_Node_String parent_Expr,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(40)" + cur_Conf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String ec_Value = new Expression_Node_StringImpl(parent_Expr, cur_Conf);
            ec_Value.AppendTextNode(
                cur_Conf.Name,
                cur_Conf,
                log_Reports
                );

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_StringImpl cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Conf);

            //
            //
            //
            // 属性
            //
            //
            //
            {
                cur_Expr.SetAttribute(
                    PmNames.S_NAME.Name_Pm,
                    ec_Value,
                    log_Reports
                    );

                parent_Expr.SetAttribute(
                    NamesNode.S_RECORD_SET_LOAD_FROM,
                    ((Expression_Node_String)cur_Expr),
                    log_Reports
                    );
            }

            //
            //
            //
            // 子要素
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Conf,
                    cur_Expr,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            //
            //
            //
            //

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Conf.Name);
            }

            log_Method.EndMethod(log_Reports);
        }
Beispiel #39
0
        //────────────────────────────────────────

        public void Translate(
            Configurationtree_Node cur_Cf,
            Expressionv_3FListboxValidationImpl parent_Exprv,
            UsercontrolListbox uctLst,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(35)" + cur_Cf.Name);
            }

            //
            //

            string err_Child_SName_Node             = "";
            string err_Parent_SName_Node            = "";
            Configurationtree_Node err_Child_CfNode = null;



            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_4ADisplayImpl cur_Exprv = new Expressionv_4ADisplayImpl(parent_Exprv, cur_Cf, memoryApplication);


            //
            //
            //
            // 属性
            //
            //
            //
            {
                {
                    PmName pmName = PmNames.S_TYPE;
                    string sValue;
                    bool   bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                    if (bHit)
                    {
                        cur_Exprv.Dictionary_SAttribute.Add(pmName.Name_Pm, sValue);
                    }
                }

                {
                    PmName pmName = PmNames.S_DESCRIPTION;
                    string sValue;
                    bool   bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                    if (bHit)
                    {
                        cur_Exprv.Dictionary_SAttribute.Add(pmName.Name_Pm, sValue);
                    }
                }
            }

            parent_Exprv.List_Expressionv_ADisplay.Add(cur_Exprv);
            uctLst.AddValidator_FListboxForItems(parent_Exprv, log_Reports);

            // #デバッグ中
            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole(" 子<f-●●>数=[" + cur_Cf.List_Child.Count + "]");
            }

            //
            //
            //
            // 子
            //
            //
            //
            cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node child_Cf, ref bool bBreak)
            {
                if (child_Cf is Configurationtree_Node)
                {
                    Configurationtree_Node child_Configurationtree_Node = (Configurationtree_Node)child_Cf;

                    string sName_Fnc;
                    child_Configurationtree_Node.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports);

                    if (NamesFnc.S_VLD_ALL_FIELDS_IS_EMPTY == sName_Fnc)
                    {
                        //
                        // <f-all-fields-is-empty>要素
                        ConfigurationtreeToExpression_V54_FAllFieldsIsEmptyImpl_ to = new ConfigurationtreeToExpression_V54_FAllFieldsIsEmptyImpl_();
                        to.Translate(
                            child_Configurationtree_Node,
                            cur_Exprv,
                            memoryApplication,
                            pg_ParsingLog,
                            log_Reports
                            );
                    }
                    else if (NamesFnc.S_ALL_TRUE == sName_Fnc)
                    {
                        //
                        // <f-all-true>要素
                        ConfigurationtreeToExpression_V54_FAllTrueImpl_ to = new ConfigurationtreeToExpression_V54_FAllTrueImpl_();
                        to.Translate(
                            child_Configurationtree_Node,
                            cur_Exprv,
                            memoryApplication,
                            pg_ParsingLog,
                            log_Reports
                            );
                    }
                    else
                    {
                        //
                        // エラー。
                        err_Child_SName_Node  = child_Configurationtree_Node.Name;
                        err_Parent_SName_Node = cur_Cf.Name;
                        err_Child_CfNode      = child_Configurationtree_Node;
                        bBreak = true;
                    }
                }
            });
            if (null != err_Child_SName_Node)
            {
                goto undefined_element;
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
undefined_element:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, err_Child_SName_Node, log_Reports);                                         //子設定ノード名
                tmpl.SetParameter(2, err_Parent_SName_Node, log_Reports);                                        //親設定ノード名
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(err_Child_CfNode), log_Reports); //設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7020;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #40
0
        //────────────────────────────────────────

        public void Translate(
            Configurationtree_Node cur_Conf,//Sv_3FListboxValidation
            UsercontrolListbox uctLst,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(34)" + cur_Conf.Name);
            }

            //
            //

            // バリデーター設定要素
            Configurationtree_Node cf_ValidatorConfig;
            {
                List <Configurationtree_Node> cfList_ValidatorConfig = uctLst.ControlCommon.Configurationtree_Control.GetChildrenByNodename(NamesNode.S_CODEFILE_VALIDATORS, false, log_Reports);

                if (1 < cfList_ValidatorConfig.Count)
                {
                    throw new Exception("バリデーター設定要素が2つ以上ありました。");
                }
                else if (0 < cfList_ValidatorConfig.Count)
                {
                    cf_ValidatorConfig = cfList_ValidatorConfig[0];
                }
                else
                {
                    cf_ValidatorConfig = null;
                }
            }



            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_3FListboxValidationImpl cur_Exprv = new Expressionv_3FListboxValidationImpl(null, cf_ValidatorConfig, memoryApplication);

            //
            //
            //
            // 子
            //
            //
            //
            List <Configurationtree_Node> cfList_Fnc = cur_Conf.GetChildrenByNodename(NamesNode.S_FNC, false, log_Reports);

            // #デバッグ中
            //d_InMethod.WriteDebug_ToConsole(1, " <a-display>数=[" + sv_Cur.Sv_ADisplayList.Count + "]");
            //d_InMethod.WriteDebug_ToConsole(1, " <fnc name=”a-record-set-save-to”>数=[" + sv_Cur.Sv_ASelectRecordList.Count + "]");

            foreach (Configurationtree_Node child_Cf in cfList_Fnc)
            {
                string sName_Fnc;
                child_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, true, log_Reports);

                if (NamesFnc.S_VLD_SELECT_RECORD == sName_Fnc)
                {
                    ConfigurationtreeToExpression_V53_ASelectRecordImpl_ to = new ConfigurationtreeToExpression_V53_ASelectRecordImpl_();
                    to.Translate(
                        child_Cf,
                        cur_Exprv,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else if (NamesFnc.S_VLD_DISPLAY == sName_Fnc)
                {
                    // <a-display>要素
                    ConfigurationtreeToExpression_V53_ADisplayImpl_ to = new ConfigurationtreeToExpression_V53_ADisplayImpl_();
                    to.Translate(
                        child_Cf,
                        cur_Exprv,
                        uctLst,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else
                {
                    log_Method.WriteError_ToConsole("未実装です。");
                    throw new Exception("未実装です。");
                }
            }


            goto gt_EndMethod;


            //
            //
            //
            //
gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Conf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #41
0
        //────────────────────────────────────────

        public void Translate(
            Configurationtree_Node cur_Cf,//<a-select-record>
            Expressionv_3FListboxValidationImpl parent_Exprv,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(36)" + cur_Cf.Name);
            }

            //
            //
            //
            //


            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_4ASelectRecordImpl cur_Exprv = new Expressionv_4ASelectRecordImpl(parent_Exprv, cur_Cf, memoryApplication);


            //
            //
            //
            // 属性
            //
            //
            //
            {
                {
                    PmName pmName = PmNames.S_FIELD_KEY;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_Field = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_VALUE_KEY;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_LookupVal = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_REQUIRED;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_Required = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_FROM;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_From = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_STORAGE;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_Storage = ec_Str;
                    }
                }

                {
                    PmName pmName = PmNames.S_DESCRIPTION;
                    if (cur_Cf.Dictionary_Attribute.ContainsKey(pmName.Name_Pm))
                    {
                        string sValue;
                        cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, true, log_Reports);

                        Expression_Node_StringImpl ec_Str = new Expression_Node_StringImpl(parent_Exprv, cur_Cf);
                        ec_Str.AppendTextNode(
                            sValue,
                            cur_Cf,
                            log_Reports
                            );
                        cur_Exprv.Expression_Description = ec_Str;
                    }
                }
            }//属性


            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Exprv.List_Expressionv_ASelectRecord.Add(cur_Exprv);//.Add(nA66, EnumHitcount.Unconstraint, log_Reports);


            //
            //
            //
            // 子
            //
            //
            //
            {
                // <f-cell>要素のリスト
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Exprv,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            goto gt_EndMethod;
            //
            //
            //
            //
gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void ParseChild_InConfigurationtreeToExpression(
            Configurationtree_Node cur_Conf,//S_NodeList s_curNodeList,
            Expression_Node_String parent_Expr,//nAcase,nFelemの両方の場合がある。
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_InSToE",log_Reports);
            //
            //

            if (null == parent_Expr)
            {
                goto gt_Error_NullNFAelem;
            }

            //
            // 親ノード名、親ファンク名
            //
            string parent_SName_Node = parent_Expr.Cur_Configuration.Name;
            string parent_SName_Fnc = "";
            {
                EnumHitcount enumHitcount;
                if (NamesNode.S_FNC == parent_SName_Node)
                {
                    //todo: enumHitcount = EnumHitcount.One;
                    enumHitcount = EnumHitcount.One_Or_Zero;
                }
                else
                {
                    enumHitcount = EnumHitcount.One_Or_Zero;
                }

                log_Reports.Log_Callstack.Push(log_Method, "①");
                bool bHit = parent_Expr.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports);
                log_Reports.Log_Callstack.Pop(log_Method, "①");
            }

            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole( "開始┌──┐ s_Curノード名=[" + cur_Conf.Name + "] 子要素数=[" + cur_Conf.List_Child.Count + "]");
            }

            //
            //
            //
            // 子
            //
            //
            //
            Configurationtree_Node err_Configurationtree_Node2 = null;
            cur_Conf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak)
            {

                if (!log_Reports.Successful)
                {
                    // 強制終了。
                    bBreak = true;
                    return;
                }

                string sName_MyNode = s_Child.Name;
                string sName_MyFnc = "";
                {
                    bool bRequired;

                    if (NamesNode.S_ARG == sName_MyNode)
                    {
                        bRequired = true;
                    }
                    else
                    {
                        bRequired = false;
                    }

                    log_Reports.Log_Callstack.Push(log_Method, "②");
                    s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, bRequired, log_Reports);
                    log_Reports.Log_Callstack.Pop(log_Method, "②");
                }

                if (this.Dictionary_ConfigurationtreeToExpression.ContainsKey(sName_MyNode))
                {
                    if (log_Method.CanDebug(1))
                    {
                        log_Method.WriteDebug_ToConsole( "親「S■[" + parent_SName_Fnc + "] name=”[" + parent_SName_Fnc + "]”」 自「S■[" + sName_MyNode + "] name=”[" + sName_MyFnc + "]”」");
                    }

                    this.Dictionary_ConfigurationtreeToExpression[sName_MyNode].Translate(
                        s_Child,
                        parent_Expr,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                }
                else
                {
                    //
                    // それ以外、エラー。
                    //
                    err_Configurationtree_Node2 = s_Child;
                    bBreak = true;
                }
            });
            //
            if (null != err_Configurationtree_Node2)
            {
                goto gt_Error_UndefinedElement;
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
            gt_Error_NullNFAelem:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(parent_Expr.Cur_Configuration), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7010;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_UndefinedElement:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, err_Configurationtree_Node2.Name, log_Reports);//設定ノード名
                tmpl.SetParameter(2, err_Configurationtree_Node2.GetType().Name, log_Reports);//設定ノードのクラス名
                tmpl.SetParameter(3, this.Dictionary_ConfigurationtreeToExpression.Count.ToString(), log_Reports);//キーの個数

                StringBuilder s1 = new StringBuilder();
                foreach (string sKey in this.Dictionary_ConfigurationtreeToExpression.Keys)
                {
                    s1.Append(sKey);
                    s1.Append(System.Environment.NewLine);
                }
                tmpl.SetParameter(4, s1.ToString(), log_Reports);//キーのリスト

                //設定親ノード名
                if (null != parent_Expr)
                {
                    tmpl.SetParameter(5, parent_Expr.Cur_Configuration.Name, log_Reports);
                }
                else
                {
                    tmpl.SetParameter(5, "ヌル", log_Reports);
                }

                tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Configuration(err_Configurationtree_Node2), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7011;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                //d_ParsingLog.Decrement(s_Cur.Name_Node);
            }
            log_Method.EndMethod(log_Reports);

            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole( "終了└──┘");
            }
        }
Beispiel #43
0
        //────────────────────────────────────────

        /// <summary>
        /// <f-param>
        /// </summary>
        /// <param name="oFStrNode"></param>
        /// <param name="nFAelem"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,    //<f-param>
            Expression_Node_String parent_Ec, //親<●●>要素。汎用。
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(28)" + cur_Cf.Name);
            }

            //
            //
            //
            //


            //
            //
            //
            // 自
            //
            //
            //
            Expression_FparamImpl cur_Ec = new Expression_FparamImpl(parent_Ec, cur_Cf, memoryApplication);


            //
            //
            //
            // 属性
            //
            //
            //
            if (log_Reports.Successful)
            {
                // 非必須 call=”” call属性がなくても正常です。子要素を見に行きます。
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    false, //name属性は無い。
                    true,  //valueは子f-strに変換。
                    log_Reports
                    );
            }


            //
            //
            //
            // 子
            //
            //
            //
            {
                // 子<●●> TODO:子call属性要素。
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }
            //ystem.Console.WriteLine(this.GetType().Name + "#SToE: ──────────属性ここまで");


            //
            //
            //
            // 親へ連結
            //
            //
            //
            {
                parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports);
            }

            //
            //
            //
            //

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #44
0
        //────────────────────────────────────────

        /// <summary>
        /// S → E。
        /// </summary>
        public void Translate(
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(41)バリデーションファイル");
            }

            //
            //
            //
            //

            if (log_Reports.Successful)
            {
                //
                // コントロール順
                memoryApplication.MemoryForms.ForEach_Children(delegate(string sKey, Usercontrol uct, ref bool bRemove, ref bool bBreak)
                {
                    if (uct is UsercontrolListbox)
                    {
                        //
                        // リストボックスなら。
                        UsercontrolListbox uctLst = (UsercontrolListbox)uct;

                        List <Configurationtree_Node> cfList_ValidatorConfig = uctLst.ControlCommon.Configurationtree_Control.GetChildrenByNodename(NamesNode.S_CODEFILE_VALIDATORS, false, log_Reports);
                        if (1 < cfList_ValidatorConfig.Count)
                        {
                            throw new Exception("バリデーター設定要素が2つ以上ありました。");
                        }
                        else if (0 < cfList_ValidatorConfig.Count)
                        {
                            Configurationtree_Node cf_ValidatorConfig = cfList_ValidatorConfig[0];

                            // (Sv)コントロールのSv
                            {
                                ConfigurationtreeToExpression_V52_FListboxValidationImpl_ to = new ConfigurationtreeToExpression_V52_FListboxValidationImpl_();

                                List <Configurationtree_Node> cfList_Validation = cf_ValidatorConfig.GetChildrenByNodename(NamesNode.S_F_LISTBOX_VALIDATION, false, log_Reports);

                                foreach (Configurationtree_Node child_Cf in cfList_Validation)
                                {
                                    //
                                    // <f-list-box-validation>
                                    to.Translate(
                                        child_Cf,
                                        uctLst,
                                        memoryApplication,
                                        pg_ParsingLog,
                                        log_Reports
                                        );
                                }//foreach
                            }

                            {
                                ConfigurationtreeToUsercontrol_V52_ValidatorImpl_ to = new ConfigurationtreeToUsercontrol_V52_ValidatorImpl_();

                                List <Configurationtree_Node> cfList_Validator = cf_ValidatorConfig.GetChildrenByNodename(NamesNode.S_VALIDATOR, false, log_Reports);
                                foreach (Configurationtree_Node cf in cfList_Validator)
                                {
                                    to.ConfigurationtreeToUsercontrol(
                                        cf,
                                        uct,
                                        pg_ParsingLog,
                                        log_Reports
                                        );
                                }
                            }
                        }//Ov
                    }
                    else
                    {
                    }
                });
            }

            goto gt_EndMethod;


            //
            //
            //
            //
gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement("(41)バリデーションファイル");
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #45
0
        //────────────────────────────────────────

        /// <summary>
        /// <f-str>
        /// </summary>
        /// <param name="oFStrNode"></param>
        /// <param name="nFAelem"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,    //<f-str>
            Expression_Node_String parent_Ec, //親<●●>。
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(30)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            if (null == parent_Ec)
            {
                goto gt_Error_NullFAelem;
            }


            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String ec_Cur = new Expression_Node_StringImpl(parent_Ec, cur_Cf);


            //
            //
            //
            // 属性
            //
            //
            //
            if (log_Reports.Successful)
            {
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    ec_Cur,
                    false, //name属性は無い。
                    true,  //value属性を、子<f-str>にする場合、真。
                    log_Reports
                    );
            }


            //
            //
            //
            // 子
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    ec_Cur,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }


            //
            //
            //
            // 親へ連結 ※子連結が基本
            //
            //
            //
            {
                parent_Ec.List_Expression_Child.Add(ec_Cur, log_Reports);
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
gt_Error_NullFAelem:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7016;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        /// <summary>
        /// S → E。
        /// </summary>
        public void Translate(
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(41)バリデーションファイル");
            }

            //
            //
            //
            //

            if (log_Reports.Successful)
            {

                //
                // コントロール順
                memoryApplication.MemoryForms.ForEach_Children(delegate(string sKey, Usercontrol uct, ref bool bRemove, ref bool bBreak)
                {
                    if (uct is UsercontrolListbox)
                    {
                        //
                        // リストボックスなら。
                        UsercontrolListbox uctLst = (UsercontrolListbox)uct;

                        List<Configurationtree_Node> cfList_ValidatorConfig = uctLst.ControlCommon.Configurationtree_Control.GetChildrenByNodename(NamesNode.S_CODEFILE_VALIDATORS, false, log_Reports);
                        if (1 < cfList_ValidatorConfig.Count)
                        {
                            throw new Exception("バリデーター設定要素が2つ以上ありました。");
                        }
                        else if (0 < cfList_ValidatorConfig.Count)
                        {
                            Configurationtree_Node cf_ValidatorConfig = cfList_ValidatorConfig[0];

                            // (Sv)コントロールのSv
                            {
                                ConfigurationtreeToExpression_V52_FListboxValidationImpl_ to = new ConfigurationtreeToExpression_V52_FListboxValidationImpl_();

                                List<Configurationtree_Node> cfList_Validation = cf_ValidatorConfig.GetChildrenByNodename(NamesNode.S_F_LISTBOX_VALIDATION, false, log_Reports);

                                foreach (Configurationtree_Node child_Cf in cfList_Validation)
                                {

                                    //
                                    // <f-list-box-validation>
                                    to.Translate(
                                        child_Cf,
                                        uctLst,
                                        memoryApplication,
                                        pg_ParsingLog,
                                        log_Reports
                                        );

                                }//foreach
                            }

                            {
                                ConfigurationtreeToUsercontrol_V52_ValidatorImpl_ to = new ConfigurationtreeToUsercontrol_V52_ValidatorImpl_();

                                List<Configurationtree_Node> cfList_Validator = cf_ValidatorConfig.GetChildrenByNodename(NamesNode.S_VALIDATOR, false, log_Reports);
                                foreach (Configurationtree_Node cf in cfList_Validator)
                                {
                                    to.ConfigurationtreeToUsercontrol(
                                        cf,
                                        uct,
                                        pg_ParsingLog,
                                        log_Reports
                                        );
                                }
                            }

                        }//Ov

                    }
                    else
                    {
                    }
                });
            }

            goto gt_EndMethod;

            //
            //
            //
            //
            gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement("(41)バリデーションファイル");
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        /// <summary>
        /// <arg1>
        /// </summary>
        /// <param name="oFStrNode"></param>
        /// <param name="nFAelem"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,//「S■arg1」
            Expression_Node_String parent_Ec,//親「E■fnc」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            //
            // デバッグオープンの前に。
            //
            // 「S■arg1 name=”★”」属性
            //
            string sName_MyFnc;
            cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, false, log_Reports);

            if (log_Method.CanDebug(1))
            {
                Dictionary<string, string> s_Dic = new Dictionary<string, string>();
                s_Dic.Add(PmNames.S_NAME.Name_Pm, sName_MyFnc);
                pg_ParsingLog.Increment("(6.arg1・3要素)" + cur_Cf.Name, s_Dic);
            }

            //
            //

            if (log_Method.CanDebug(2))
            {
                log_Method.WriteDebug_ToConsole("「S■arg1・3」要素 解析開始┌────────────────┐ 自arg1・3は、e_Parent=[" + parent_Ec.Cur_Configuration.Name + "]の”" + sName_MyFnc + "”属性になる。");
            }

            string parent_SName_Fnc;
            {
                // ヒット必須にするとエラーになる?
                parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports);
                if (!log_Reports.Successful)
                {
                    goto gt_EndMethod;
                }

                //if (0 < d_InMethod.NDebugLevel)
                //{
                //    if (NamesNode.S_FNC != e_Parent.Cur_Configurationtree.Name)
                //    {
                //        d_InMethod.WriteDebug_ToConsole(1, "fnc以外の親要素「E■[" + e_Parent.Cur_Configurationtree.Name + "]」");
                //    }
                //}
            }

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf);

            //
            //
            //
            // 属性
            //
            //
            //
            if (log_Reports.Successful)
            {
                // 元からあった。
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    true,//name属性は必須。
                    true,//value属性は、子<f-str>にする。
                    log_Reports
                    );
            }

            //
            //
            //
            // 子
            //
            //
            //
            if (log_Reports.Successful)
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            //
            //
            //
            // 親へ連結 ※属性連結。
            //
            //
            //
            if (log_Reports.Successful)
            {
                parent_Ec.SetAttribute(sName_MyFnc, cur_Ec, log_Reports);
            }

            goto gt_EndMethod;
            //
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }

            if (log_Method.CanDebug(2))
            {
                log_Method.WriteDebug_ToConsole( "「S■arg1・3」要素 解析終了└────────────────┘");
            }

            log_Method.EndMethod(log_Reports);
        }
Beispiel #48
0
        //────────────────────────────────────────

        /// <summary>
        /// 「S■f-var」
        /// </summary>
        /// <param name="oFStrNode"></param>
        /// <param name="nFAelem"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,    //「S■f-var」
            Expression_Node_String parent_Ec, //親<●●>
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(33)" + cur_Cf.Name);
            }

            //
            //
            //
            //


            //
            //
            //
            // 自
            //
            //
            //
            Expression_FvarImpl cur_Ec = new Expression_FvarImpl(parent_Ec, cur_Cf, memoryApplication);


            //
            //
            //
            // 属性
            //
            //
            //
            if (log_Reports.Successful)
            {
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    false, //name属性は無い。
                    false, //value属性は、子<f-str>にしない。
                    log_Reports
                    );
            }


            //
            //
            //
            // 子
            //
            //
            //
            {
                // 非必須 value=”” value属性がなくても正常です。子要素を見に行きます。
                if (cur_Cf.Dictionary_Attribute.ContainsKey(PmNames.S_VALUE.Name_Pm))
                {
                    string sValue;
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, true, log_Reports);
                    cur_Ec.AppendTextNode(
                        sValue,
                        cur_Cf,
                        log_Reports
                        );
                }
            }


            //
            //
            //
            // 子
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }


            //
            //
            //
            // 親へ連結
            //
            //
            //
            {
                parent_Ec.List_Expression_Child.Add(
                    cur_Ec,
                    log_Reports
                    );
            }

            //
            //
            //
            //

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public void Translate(
            Configurationtree_Node cur_Cf,//<a-empty-field>
            Expression_Node_String parent_Expr,//Expressionv_5FAllTrueImpl
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(39)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_6AEmptyFieldImpl ecv_AEmptyFld = new Expressionv_6AEmptyFieldImpl(parent_Expr, cur_Cf, memoryApplication);

            //
            //
            //
            // 属性
            //
            //
            //
            {
                {
                    PmName pmName = PmNames.S_TYPE;
                    string sValue;
                    bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                    if (bHit)
                    {
                        Expression_Leaf_String ec_Leaf = new Expression_Leaf_StringImpl(sValue, parent_Expr, cur_Cf);
                        ecv_AEmptyFld.SetAttribute(pmName.Name_Pm, ec_Leaf, log_Reports);
                        //evAEmptyFld.Dictionary_SAttribute.Add(sAttrName, s_Cur.SAttrDic.Get(sAttrName, true, log_Reports));
                    }
                    else
                    {
                        // クリアー上書きしない。
                    }
                }

                {
                    PmName pmName = PmNames.S_DESCRIPTION;
                    string sValue;
                    bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports);
                    if (bHit)
                    {
                        Expression_Leaf_String ec_Leaf = new Expression_Leaf_StringImpl(sValue, parent_Expr, cur_Cf);
                        ecv_AEmptyFld.SetAttribute(pmName.Name_Pm, ec_Leaf, log_Reports);
                    }
                    else
                    {
                        // クリアー上書きしない。
                    }
                }
            }

            //
            //
            //
            // 親へ連結
            //
            //
            //
            {
                // TODO:?
                parent_Expr.List_Expression_Child.Add(ecv_AEmptyFld, log_Reports);
            }

            //
            //
            //
            // 子
            //
            //
            //
            {
                // <f-cell>要素のリスト
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    ecv_AEmptyFld,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            goto gt_EndMethod;
            //
            //
            //
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #50
0
        //────────────────────────────────────────

        public void ParseChild_InConfigurationtreeToExpression(
            Configurationtree_Node cur_Conf,    //S_NodeList s_curNodeList,
            Expression_Node_String parent_Expr, //nAcase,nFelemの両方の場合がある。
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_InSToE", log_Reports);
            //
            //

            if (null == parent_Expr)
            {
                goto gt_Error_NullNFAelem;
            }


            //
            // 親ノード名、親ファンク名
            //
            string parent_SName_Node = parent_Expr.Cur_Configuration.Name;
            string parent_SName_Fnc  = "";

            {
                EnumHitcount enumHitcount;
                if (NamesNode.S_FNC == parent_SName_Node)
                {
                    //todo: enumHitcount = EnumHitcount.One;
                    enumHitcount = EnumHitcount.One_Or_Zero;
                }
                else
                {
                    enumHitcount = EnumHitcount.One_Or_Zero;
                }



                log_Reports.Log_Callstack.Push(log_Method, "①");
                bool bHit = parent_Expr.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports);
                log_Reports.Log_Callstack.Pop(log_Method, "①");
            }

            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole("開始┌──┐ s_Curノード名=[" + cur_Conf.Name + "] 子要素数=[" + cur_Conf.List_Child.Count + "]");
            }



            //
            //
            //
            // 子
            //
            //
            //
            Configurationtree_Node err_Configurationtree_Node2 = null;

            cur_Conf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak)
            {
                if (!log_Reports.Successful)
                {
                    // 強制終了。
                    bBreak = true;
                    return;
                }


                string sName_MyNode = s_Child.Name;
                string sName_MyFnc  = "";
                {
                    bool bRequired;

                    if (NamesNode.S_ARG == sName_MyNode)
                    {
                        bRequired = true;
                    }
                    else
                    {
                        bRequired = false;
                    }

                    log_Reports.Log_Callstack.Push(log_Method, "②");
                    s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, bRequired, log_Reports);
                    log_Reports.Log_Callstack.Pop(log_Method, "②");
                }



                if (this.Dictionary_ConfigurationtreeToExpression.ContainsKey(sName_MyNode))
                {
                    if (log_Method.CanDebug(1))
                    {
                        log_Method.WriteDebug_ToConsole("親「S■[" + parent_SName_Fnc + "] name=”[" + parent_SName_Fnc + "]”」 自「S■[" + sName_MyNode + "] name=”[" + sName_MyFnc + "]”」");
                    }


                    this.Dictionary_ConfigurationtreeToExpression[sName_MyNode].Translate(
                        s_Child,
                        parent_Expr,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );
                }
                else
                {
                    //
                    // それ以外、エラー。
                    //
                    err_Configurationtree_Node2 = s_Child;
                    bBreak = true;
                }
            });
            //
            if (null != err_Configurationtree_Node2)
            {
                goto gt_Error_UndefinedElement;
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
gt_Error_NullNFAelem:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(parent_Expr.Cur_Configuration), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7010;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_UndefinedElement:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, err_Configurationtree_Node2.Name, log_Reports);                               //設定ノード名
                tmpl.SetParameter(2, err_Configurationtree_Node2.GetType().Name, log_Reports);                     //設定ノードのクラス名
                tmpl.SetParameter(3, this.Dictionary_ConfigurationtreeToExpression.Count.ToString(), log_Reports); //キーの個数

                StringBuilder s1 = new StringBuilder();
                foreach (string sKey in this.Dictionary_ConfigurationtreeToExpression.Keys)
                {
                    s1.Append(sKey);
                    s1.Append(System.Environment.NewLine);
                }
                tmpl.SetParameter(4, s1.ToString(), log_Reports);//キーのリスト

                //設定親ノード名
                if (null != parent_Expr)
                {
                    tmpl.SetParameter(5, parent_Expr.Cur_Configuration.Name, log_Reports);
                }
                else
                {
                    tmpl.SetParameter(5, "ヌル", log_Reports);
                }

                tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Configuration(err_Configurationtree_Node2), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:7011;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                //d_ParsingLog.Decrement(s_Cur.Name_Node);
            }
            log_Method.EndMethod(log_Reports);

            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole("終了└──┘");
            }
        }
        //────────────────────────────────────────
        public override void Translate(
            Configurationtree_Node cur_Cf,
            Expression_Node_String parent_Ec,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            // throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。");

            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(18)" + cur_Cf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String ec_Value;
            {
                ec_Value = new Expression_Node_StringImpl(parent_Ec, cur_Cf);
                ec_Value.AppendTextNode(
                    cur_Cf.Name,
                    cur_Cf,
                    log_Reports
                    );
            }

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_StringImpl ec_Ap1p = new Expression_Node_StringImpl(parent_Ec, cur_Cf);

            ec_Ap1p.SetAttribute(
                PmNames.S_NAME.Name_Pm,
                ec_Value,
                log_Reports
                );

            StringBuilder sb = new StringBuilder();
            sb.Append("p");
            sb.Append(this.NP1p);
            sb.Append("p");

            //
            //
            //
            // 属性
            //
            //
            //
            parent_Ec.SetAttribute(
                sb.ToString(),
                ((Expression_Node_String)ec_Ap1p),
                log_Reports
                );

            //
            // 子要素
            //
            this.ParseChild_InConfigurationtreeToExpression(
                cur_Cf,
                ec_Ap1p,
                memoryApplication,
                pg_ParsingLog,
                log_Reports
                );

            goto gt_EndMethod;
            //
            //
            //
            //
            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #52
0
        //────────────────────────────────────────

        public override void Translate(
            Configurationtree_Node cur_Cf,      //「S■fnc name=”Sf:f-list-box-labels;”」
            Expression_Node_String parent_Expr, //「E■view」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
            }

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Cf);


            //
            //
            //
            // 属性
            //
            //
            //
            this.ParseAttr_InConfigurationtreeToExpression(
                cur_Cf,
                cur_Expr,
                true,
                true,
                log_Reports
                );


            //
            //
            //
            // 子
            //
            //
            //
            cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node child_Cf, ref bool bBreak2)
            {
                string sName_Fnc;
                child_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports);

                if (log_Method.CanDebug(1))
                {
                    log_Method.WriteDebug_ToConsole(" 子解析。 <~ name=”[" + sName_Fnc + "]”>");
                }



                // todo: Sf:item-value;
                if (NamesFnc.S_ITEM_VALUE == sName_Fnc)
                {
                    //
                    // 自
                    //
                    Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf);

                    //
                    // 属性
                    //
                    this.ParseAttr_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        true,
                        true,
                        log_Reports
                        );

                    //
                    // 子
                    //
                    this.ParseChild_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                    //
                    // 親
                    //
                    cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports);
                }
                else if (NamesFnc.S_ITEM_LABEL2 == sName_Fnc)
                {
                    //
                    // 自
                    //
                    Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf);

                    //
                    // 属性
                    //
                    this.ParseAttr_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        true,
                        true,
                        log_Reports
                        );

                    //
                    // 子
                    //
                    this.ParseChild_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                    //
                    // 親
                    //
                    cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports);
                }
                else if (NamesFnc.S_ITEM_GRAY_OUT == sName_Fnc)
                {
                    //
                    // 自
                    //
                    Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf);

                    //
                    // 属性
                    //
                    this.ParseAttr_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        true,
                        true,
                        log_Reports
                        );

                    //
                    // 子
                    //
                    this.ParseChild_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                    //
                    // 親
                    //
                    cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports);
                }
                else
                {
                    {
                        Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                        tmpl.SetParameter(1, child_Cf.Name, log_Reports);//子設定ノード名

                        memoryApplication.CreateErrorReport("Er:7019;", tmpl, log_Reports);
                    }

                    bBreak2 = true;
                    goto gt_gt_EndMethod2;
                }
                goto gt_gt_EndMethod2;

                //
                //
                //
                //
                gt_gt_EndMethod2:
                ;
            });


            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Expr.List_Expression_Child.Add(cur_Expr, log_Reports);
            //
            log_Method.EndMethod(log_Reports);
        }
Beispiel #53
0
        //────────────────────────────────────────

        public void Translate(
            Configurationtree_Node cur_Conf,
            Expression_Node_String parent_Expr,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(40)" + cur_Conf.Name);
            }

            //
            //
            //
            //


            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String ec_Value = new Expression_Node_StringImpl(parent_Expr, cur_Conf);

            ec_Value.AppendTextNode(
                cur_Conf.Name,
                cur_Conf,
                log_Reports
                );


            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_StringImpl cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Conf);


            //
            //
            //
            // 属性
            //
            //
            //
            {
                cur_Expr.SetAttribute(
                    PmNames.S_NAME.Name_Pm,
                    ec_Value,
                    log_Reports
                    );

                parent_Expr.SetAttribute(
                    NamesNode.S_RECORD_SET_LOAD_FROM,
                    ((Expression_Node_String)cur_Expr),
                    log_Reports
                    );
            }


            //
            //
            //
            // 子要素
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Conf,
                    cur_Expr,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }

            //
            //
            //
            //

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Conf.Name);
            }

            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        /// <summary>
        /// 読取。
        /// </summary>
        /// <param name="s_View"></param>
        /// <param name="ef_View"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public void Translate(
            Configurationtree_Node cur_Cf,//<view>
            Expression_Node_String parent_Ec,//「E■form-component」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(3)"+cur_Cf.Name);
            }

            //
            //
            //
            //

            //
            //
            //
            // 自
            //
            //
            //

            Expression_Node_StringImpl cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf);

            //
            //
            //
            // 子
            //
            //
            //
            {
                //<●●>要素を全検索。<f-list-box-labels>があることが期待されます。

                cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node cf_Child, ref bool bBreak)
                {
                    if (cf_Child is Configurationtree_Node)
                    {
                        Configurationtree_Node cf_Node = (Configurationtree_Node)cf_Child;

                        string sName_Node = cf_Node.Name;
                        string sName_Fnc = "";
                        {
                            bool bRequired;

                            if (NamesNode.S_FNC == sName_Node)
                            {
                                bRequired = true;
                            }
                            else
                            {
                                bRequired = false;
                            }

                            // todo; 子要素のnameも取りたい。
                            cf_Node.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, bRequired, log_Reports);
                        }

                        if (NamesNode.S_FNC == sName_Node && NamesFnc.S_LISTBOX_LABELS == sName_Fnc)
                        {
                            // 「S■fnc name=”Sf:f-listbox-labels;”」

                            ConfigurationtreeToExpression_F91_FListboxLabelsImpl_ to = new ConfigurationtreeToExpression_F91_FListboxLabelsImpl_();
                            to.Translate(
                                cf_Child,
                                cur_Ec,
                                memoryApplication,
                                pg_ParsingLog,
                                log_Reports
                                );
                        }
                        else
                        {
                            // エラー
                            {
                                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                                tmpl.SetParameter(1, sName_Node, log_Reports);//設定ノード名
                                tmpl.SetParameter(2, sName_Fnc, log_Reports);//関数名

                                memoryApplication.CreateErrorReport("Er:7003;", tmpl, log_Reports);
                            }

                            bBreak = true;
                        }
                    }
                });
            }

            //
            //
            //
            // 親へ連結
            //
            //
            //
            {
                parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports);
            }

            goto gt_EndMethod;
            //
            //

            gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }
Beispiel #55
0
        //────────────────────────────────────────

        /// <summary>
        /// <arg1>
        /// </summary>
        /// <param name="oFStrNode"></param>
        /// <param name="nFAelem"></param>
        /// <param name="moOpyopyo"></param>
        /// <param name="log_Reports"></param>
        public override void Translate(
            Configurationtree_Node cur_Cf,    //「S■arg1」
            Expression_Node_String parent_Ec, //親「E■fnc」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            //
            // デバッグオープンの前に。
            //
            // 「S■arg1 name=”★”」属性
            //
            string sName_MyFnc;

            cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, false, log_Reports);

            if (log_Method.CanDebug(1))
            {
                Dictionary <string, string> s_Dic = new Dictionary <string, string>();
                s_Dic.Add(PmNames.S_NAME.Name_Pm, sName_MyFnc);
                pg_ParsingLog.Increment("(6.arg1・3要素)" + cur_Cf.Name, s_Dic);
            }

            //
            //

            if (log_Method.CanDebug(2))
            {
                log_Method.WriteDebug_ToConsole("「S■arg1・3」要素 解析開始┌────────────────┐ 自arg1・3は、e_Parent=[" + parent_Ec.Cur_Configuration.Name + "]の”" + sName_MyFnc + "”属性になる。");
            }


            string parent_SName_Fnc;
            {
                // ヒット必須にするとエラーになる?
                parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports);
                if (!log_Reports.Successful)
                {
                    goto gt_EndMethod;
                }

                //if (0 < d_InMethod.NDebugLevel)
                //{
                //    if (NamesNode.S_FNC != e_Parent.Cur_Configurationtree.Name)
                //    {
                //        d_InMethod.WriteDebug_ToConsole(1, "fnc以外の親要素「E■[" + e_Parent.Cur_Configurationtree.Name + "]」");
                //    }
                //}
            }

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf);


            //
            //
            //
            // 属性
            //
            //
            //
            if (log_Reports.Successful)
            {
                // 元からあった。
                this.ParseAttr_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    true, //name属性は必須。
                    true, //value属性は、子<f-str>にする。
                    log_Reports
                    );
            }


            //
            //
            //
            // 子
            //
            //
            //
            if (log_Reports.Successful)
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }



            //
            //
            //
            // 親へ連結 ※属性連結。
            //
            //
            //
            if (log_Reports.Successful)
            {
                parent_Ec.SetAttribute(sName_MyFnc, cur_Ec, log_Reports);
            }

            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }

            if (log_Method.CanDebug(2))
            {
                log_Method.WriteDebug_ToConsole("「S■arg1・3」要素 解析終了└────────────────┘");
            }

            log_Method.EndMethod(log_Reports);
        }
Beispiel #56
0
        //────────────────────────────────────────

        /// <summary>
        /// 2010年11月22日追加。
        /// </summary>
        /// <returns></returns>
        public virtual Expression_Node_Function Translate(
            string sName_Action,
            Configurationtree_Node action_Conf,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            MemoryApplication owner_MemoryApplication,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_Functions.Name_Library, this, "Translate", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment(action_Conf.Name);
            }

            //

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_Function expr_Func;

            {
                Expression_Node_String parent_Expression_Null = null;

                expr_Func = Collection_Function.NewFunction2(
                    sName_Action,
                    parent_Expression_Null,
                    action_Conf,
                    owner_MemoryApplication,
                    log_Reports
                    );
            }

            this.Translate_Step1(
                this,
                action_Conf,
                expr_Func,
                owner_MemoryApplication,
                pg_ParsingLog,
                log_Reports
                );

            this.Translate_Step2(
                this,
                action_Conf,
                expr_Func,
                owner_MemoryApplication,
                pg_ParsingLog,
                log_Reports
                );


            //
            //
            //
            //

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(action_Conf.Name);
            }

            log_Method.EndMethod(log_Reports);

            return(expr_Func);
        }
        //────────────────────────────────────────
        public override void Translate(
            Configurationtree_Node cur_Cf,//「S■fnc name=”Sf:f-list-box-labels;”」
            Expression_Node_String parent_Expr,//「E■view」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);
            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
            }

            //
            //
            //
            // 自
            //
            //
            //
            Expression_Node_String cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Cf);

            //
            //
            //
            // 属性
            //
            //
            //
            this.ParseAttr_InConfigurationtreeToExpression(
                cur_Cf,
                cur_Expr,
                true,
                true,
                log_Reports
                );

            //
            //
            //
            // 子
            //
            //
            //
            cur_Cf.List_Child.ForEach(delegate( Configurationtree_Node child_Cf, ref bool bBreak2)
            {
                string sName_Fnc;
                child_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports);

                if (log_Method.CanDebug(1))
                {
                    log_Method.WriteDebug_ToConsole( " 子解析。 <~ name=”[" + sName_Fnc + "]”>");
                }

                // todo: Sf:item-value;
                if(NamesFnc.S_ITEM_VALUE == sName_Fnc)
                {
                    //
                    // 自
                    //
                    Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf);

                    //
                    // 属性
                    //
                    this.ParseAttr_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        true,
                        true,
                        log_Reports
                        );

                    //
                    // 子
                    //
                    this.ParseChild_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                    //
                    // 親
                    //
                    cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports);
                }
                else if (NamesFnc.S_ITEM_LABEL2 == sName_Fnc)
                {
                    //
                    // 自
                    //
                    Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf);

                    //
                    // 属性
                    //
                    this.ParseAttr_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        true,
                        true,
                        log_Reports
                        );

                    //
                    // 子
                    //
                    this.ParseChild_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                    //
                    // 親
                    //
                    cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports);
                }
                else if (NamesFnc.S_ITEM_GRAY_OUT == sName_Fnc)
                {
                    //
                    // 自
                    //
                    Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf);

                    //
                    // 属性
                    //
                    this.ParseAttr_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        true,
                        true,
                        log_Reports
                        );

                    //
                    // 子
                    //
                    this.ParseChild_InConfigurationtreeToExpression(
                        child_Cf,
                        child_Expr,
                        memoryApplication,
                        pg_ParsingLog,
                        log_Reports
                        );

                    //
                    // 親
                    //
                    cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports);
                }
                else
                {
                    {
                        Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                        tmpl.SetParameter(1, child_Cf.Name, log_Reports);//子設定ノード名

                        memoryApplication.CreateErrorReport("Er:7019;", tmpl, log_Reports);
                    }

                    bBreak2 = true;
                    goto gt_gt_EndMethod2;
                }
                goto gt_gt_EndMethod2;

                //
            //
            //
            //
            gt_gt_EndMethod2:
                ;
            });

            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Expr.List_Expression_Child.Add(cur_Expr, log_Reports);
            //
            log_Method.EndMethod(log_Reports);
        }
Beispiel #58
0
        //────────────────────────────────────────

        /// <summary>
        /// <data>要素の読取。
        /// </summary>
        /// <param select="xDataSource"></param>
        /// <param select="fcUc"></param>
        public void Translate(
            Configurationtree_Node cur_Cf,    //<data>要素
            Expression_Node_String parent_Ec, //「S■form-component」
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "CfToEc", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(2)" + cur_Cf.Name);
            }

            //
            //
            //
            //


            //
            //
            //
            // 自
            //
            //
            //
            Expression_NodeImpl cur_Ec = new Expression_NodeImpl(parent_Ec, cur_Cf, memoryApplication);


            //
            //
            //
            // 属性
            //
            //
            //
            string err_SAttrName;

            cur_Cf.Dictionary_Attribute.ForEach(delegate(string sPmName, string sValue, ref bool bBreak)
            {
                if (
                    PmNames.S_MEMORY.Name_Pm == sPmName ||
                    PmNames.S_ACCESS.Name_Pm == sPmName ||
                    PmNames.S_NAME_TABLE.Name_Pm == sPmName ||
                    PmNames.S_NAME_VAR.Name_Pm == sPmName || //.Z_ITEM_VALUE_TO_VARIABLE
                    PmNames.S_DESCRIPTION.Name_Pm == sPmName
                    )
                {
                    //ystem.Console.WriteLine(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: <データT >に属性追加 [" + sKey + "]←[" + sValue + "]");

                    // なんでも属性として追加。
                    Expression_Node_String ec_Value = new Expression_Leaf_StringImpl(sValue, cur_Ec, cur_Cf);
                    cur_Ec.SetAttribute(sPmName, ec_Value, log_Reports);
                }
                else
                {
                    err_SAttrName = sPmName;
                    bBreak        = true;
                    goto gt_Error_UndefinedAttr;
                }

                goto gt_gt_EndMethod2;
                //
                //
                //
                //
                gt_Error_UndefinedAttr:
                {
                    Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                    tmpl.SetParameter(1, cur_Cf.Name, log_Reports);                                        //設定ノード名
                    tmpl.SetParameter(2, err_SAttrName, log_Reports);                                      //属性名
                    tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト

                    memoryApplication.CreateErrorReport("Er:7002;", tmpl, log_Reports);
                }
                goto gt_gt_EndMethod2;

                gt_gt_EndMethod2:
                ;
            });


            //
            //
            //
            // 子
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Cf,
                    cur_Ec,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }


            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports);



            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Cf.Name);
            }

            log_Method.EndMethod(log_Reports);
        }
Beispiel #59
0
        //────────────────────────────────────────

        public void Translate(
            Configurationtree_Node cur_Conf,
            Expressionv_4ADisplayImpl parent_Exprv,
            MemoryApplication memoryApplication,
            Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

            log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports);

            if (log_Method.CanDebug(1))
            {
                pg_ParsingLog.Increment("(37)" + cur_Conf.Name);
            }

            //
            //


            //
            //
            //
            // 自
            //
            //
            //
            Expressionv_5FAllFieldsIsEmptyImpl cur_Exprv = new Expressionv_5FAllFieldsIsEmptyImpl(parent_Exprv, cur_Conf, memoryApplication);


            //
            //
            //
            // 子
            //
            //
            //
            {
                this.ParseChild_InConfigurationtreeToExpression(
                    cur_Conf,
                    cur_Exprv,
                    memoryApplication,
                    pg_ParsingLog,
                    log_Reports
                    );
            }


            //
            //
            //
            // 親へ連結
            //
            //
            //
            parent_Exprv.List_Expression_Child.Add(
                cur_Exprv,
                log_Reports
                );


            // #デバッグ中
            if (log_Method.CanDebug(1))
            {
                log_Method.WriteDebug_ToConsole(" ★★ <f-all-fields-is-empty> 子要素数=[" + cur_Exprv.List_Expression_Child.Count + "] 属性数=[" + cur_Exprv.Dictionary_Expression_Attribute.Count + "]");
            }

            goto gt_EndMethod;
            //
            //
            //
            //
gt_EndMethod:

            if (Log_ReportsImpl.BDebugmode_Static)
            {
                pg_ParsingLog.Decrement(cur_Conf.Name);
            }
            log_Method.EndMethod(log_Reports);
        }