//────────────────────────────────────────
        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
            {
            }
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        //────────────────────────────────────────
        #endregion



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

        public override void XmlToConfigurationtree( //override
            XmlElement cur_X,
            Configurationtree_Node parent_Cf,        //トゥゲザー設定ファイル
            MemoryApplication memoryApplication,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(1);

            log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports);
            //
            //



            //
            //
            //
            // 自
            //
            //
            //
            Configurationtree_Node cur_Cf = this.CreateMyself(cur_X, parent_Cf, memoryApplication, log_Reports);


            //
            //
            //
            //「トゥゲザー登録ファイル」に書かれているのか、
            //「コントロール設定ファイル」に書かれているのかで、処理を変えます。
            //
            //
            //
            bool bGlobalRfr;

            if (NamesNode.S_CODEFILE_TOGETHERS == parent_Cf.Name)
            {
                bGlobalRfr = true;

                //if (log_Method.CanDebug(1))
                //{
                //    log_Method.WriteDebug_ToConsole("親要素がトゥゲザーコンフィグってことは、グローバル・トゥゲザー?");
                //}
            }
            else
            {
                bGlobalRfr = false;

                //if (log_Method.CanDebug(1))
                //{
                //    log_Method.WriteDebug_ToConsole("トゥゲザーコンフィグじゃないって何?");
                //}
            }



            //
            //
            //
            // 属性
            //
            //
            //

            //name(未設定可)
            if (log_Reports.Successful)
            {
                XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_NAME.Name_Attribute);
                if (null != xNd)
                {
                    cur_Cf.Dictionary_Attribute.Add(PmNames.S_NAME.Name_Pm, xNd.Value, cur_Cf, false, log_Reports);
                }
            }

            //in(未設定可。コントロール設定ファイルには無い)
            if (log_Reports.Successful)
            {
                if (bGlobalRfr)
                {
                    XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_IN.Name_Pm);
                    if (null != xNd)
                    {
                        cur_Cf.Dictionary_Attribute.Set(PmNames.S_IN.Name_Pm, xNd.Value, log_Reports);
                    }
                }
            }

            //on(コントロール設定ファイルでは必須、グローバル・トゥゲザー登録ファイルには無い)
            if (log_Reports.Successful)
            {
                if (!bGlobalRfr)
                {
                    XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_ON.Name_Attribute);
                    if (null != xNd)
                    {
                        cur_Cf.Dictionary_Attribute.Add(PmNames.S_ON.Name_Pm, xNd.Value, cur_Cf, false, log_Reports);
                    }
                    else
                    {
                        // エラー
                        goto gt_Error_NoOn;
                    }
                }
            }

            // target(コントロール設定ファイルでは必須、グローバル・トゥゲザー登録ファイルには無い)
            if (log_Reports.Successful)
            {
                if (!bGlobalRfr)
                {
                    XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_TARGET1.Name_Attribute);
                    if (null != xNd)
                    {
                        cur_Cf.Dictionary_Attribute.Add(PmNames.S_TARGET1.Name_Pm, xNd.Value, cur_Cf, false, log_Reports);
                    }
                    else
                    {
                        // エラー
                        goto gt_Error_NoTarget;
                    }
                }
            }

            //description(未設定可)
            if (log_Reports.Successful)
            {
                XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_DESCRIPTION.Name_Attribute);
                if (null != xNd)
                {
                    cur_Cf.Dictionary_Attribute.Add(PmNames.S_DESCRIPTION.Name_Pm, xNd.Value, cur_Cf, true, log_Reports);
                }
            }



            //
            //
            //
            // 子
            //
            //
            //
            XmlElement err_Child_X;

            if (log_Reports.Successful)
            {
                if (bGlobalRfr)
                {
                    if (log_Reports.Successful)
                    {
                        //
                        // target要素
                        //
                        XmlNodeList child_XNl = cur_X.ChildNodes;

                        foreach (XmlNode child_XNode in child_XNl)
                        {
                            if (XmlNodeType.Element == child_XNode.NodeType)
                            {
                                XmlElement xChild = (XmlElement)child_XNode;

                                if (NamesNode.S_TARGET == xChild.Name)
                                {
                                    //
                                    // target要素
                                    //
                                    string sName_Target = xChild.Attributes.GetNamedItem(PmNames.S_NAME.Name_Attribute).Value;

                                    Configurationtree_Node cfRfr_Target = new Configurationtree_NodeImpl(NamesNode.S_TARGET, cur_Cf);
                                    cfRfr_Target.Dictionary_Attribute.Set(PmNames.S_NAME.Name_Pm, sName_Target, log_Reports);

                                    cur_Cf.List_Child.Add(cfRfr_Target, log_Reports);
                                }
                                else
                                {
                                    // エラー
                                    err_Child_X = xChild;
                                    goto gt_Error_Child;
                                }
                            }
                        }
                    }
                }
            }


            //
            //
            //
            // 親
            //
            //
            //
            string err_SIn;

            if (bGlobalRfr)
            {
                string sIn;
                if (log_Reports.Successful)
                {
                    // 重複チェック用。
                    List <string> sList_In   = new List <string>();
                    List <string> sList_Name = new List <string>();


                    //
                    //
                    //
                    // (1)in属性が付いていれば そちらへ、
                    // (2)nameが付いていれば そちらへ。
                    // 重複名があれば発見したい。
                    //
                    //
                    //
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_IN, out sIn,
                                                            false,//空文字列でも構わない。
                                                            log_Reports);

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


                    if ("" != sIn)
                    {
                        // トゥゲザー登録ファイルに、in指定での<together>要素を追加。

                        // 重複チェック。
                        if (!sList_In.Contains(sIn))
                        {
                            sList_In.Add(sIn);
                            parent_Cf.List_Child.Add(cur_Cf, log_Reports);
                        }
                        else
                        {
                            // エラー。
                            err_SIn = sIn;
                            goto gtj_Error_DuplicationIn;
                        }
                    }
                    else if ("" != sName_Rfr)
                    {
                        // トゥゲザー設定ファイルに、name指定での<together>要素を追加。

                        // 重複チェック。
                        if (!sList_Name.Contains(sName_Rfr))
                        {
                            sList_Name.Add(sName_Rfr);
                            parent_Cf.List_Child.Add(cur_Cf, log_Reports);
                        }
                        else
                        {
                            // エラー
                            goto gt_Error_DuplicationTogether;
                        }
                    }
                    else
                    {
                        // エラー
                        goto gt_Error_Attr;
                    }
                }



                goto gt_EndMethod;
            }
            else
            {
                //
                //
                //
                // 親
                //
                //
                //
                if (log_Reports.Successful)
                {
                    string sOn;
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_ON, out sOn, false, log_Reports);

                    List <Configurationtree_Node> listCf_Together = parent_Cf.GetChildrenByNodename(NamesNode.S_TOGETHER, false, log_Reports);
                    foreach (Configurationtree_Node cf_Together in listCf_Together)
                    {
                        string sOn2;
                        cf_Together.Dictionary_Attribute.TryGetValue(PmNames.S_ON, out sOn2, false, log_Reports);

                        if (sOn == sOn2)
                        {
                            // エラー
                            goto gt_Error_DuplicationOn;
                        }
                    }

                    parent_Cf.List_Child.Add(cur_Cf, log_Reports);
                }
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
gtj_Error_DuplicationIn:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);                               //ノード名
                tmpl.SetParameter(2, PmNames.S_IN.Name_Attribute, log_Reports);                        //引数名
                tmpl.SetParameter(3, err_SIn, log_Reports);                                            //in属性値
                tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8026;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_DuplicationTogether:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);//ノード名

                string sName_Tg;
                cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Tg, false, log_Reports);
                tmpl.SetParameter(2, sName_Tg, log_Reports);                                           //指定したtogether名

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

                memoryApplication.CreateErrorReport("Er:8027;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_DuplicationOn:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, PmNames.S_ON.Name_Attribute, log_Reports);                           //属性名on
                tmpl.SetParameter(2, NamesNode.S_TOGETHER, log_Reports);                                  //ノード名トゥゲザー
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(parent_Cf), log_Reports); //設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8028;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_Attr:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);                               //ノード名

                tmpl.SetParameter(2, "in,name", log_Reports);                                          //属性名リスト

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

                memoryApplication.CreateErrorReport("Er:8029;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_Child:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);                               //ノード名
                tmpl.SetParameter(2, NamesNode.S_TARGET, log_Reports);                                 //期待する子ノード名
                tmpl.SetParameter(3, err_Child_X.Name, log_Reports);                                   //実際の子ノード名
                tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8030;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_NoTarget:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);                                  //ノード名
                tmpl.SetParameter(2, PmNames.S_TARGET1.Name_Attribute, log_Reports);                      //期待する属性名
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(parent_Cf), log_Reports); //設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8031;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
gt_Error_NoOn:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);                                  //ノード名
                tmpl.SetParameter(2, PmNames.S_ON.Name_Attribute, log_Reports);                           //期待する属性名
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(parent_Cf), log_Reports); //設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8032;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return;
        }
Exemplo n.º 5
0
        //────────────────────────────────────────

        /// <summary>
        /// トゥゲザー名で指定しなかった場合の、
        /// (1)「コントロール設定ファイル(Fcnf)」の<refresher>を読みにいく。
        ///
        /// なければヌル。
        /// </summary>
        /// <param name="log_Reports"></param>
        private void Execute3b_ByNoName_1Fcnf(
            out Configurationtree_Node cf_TgTogether,
            Configurationtree_Node cf_Fc,
            Configurationtree_Node cf_Event,
            Log_Reports log_Reports)
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);

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

            //
            //
            // 11:トゥゲザー名の作成
            // 所要時間目安[0]ミリ秒ほど
            //
            //
            string sEventNameTrim;
            string sIn;

            {
                string sFcName3;
                cf_Fc.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sFcName3, true, log_Reports);
                if (!log_Reports.Successful)
                {
                    cf_TgTogether = null;
                    goto gt_EndMethod;
                }

                // これはトゥゲザーが書いてあるコントロールの名前なので、
                // 末尾に「*」は無い。

                string sEventName;
                cf_Event.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sEventName, true, log_Reports);
                if (!log_Reports.Successful)
                {
                    cf_TgTogether = null;
                    goto gt_EndMethod;
                }

                sEventNameTrim = sEventName.Trim();

                StringBuilder sbIn_ = new StringBuilder();
                sbIn_.Append(sFcName3);
                sbIn_.Append("/");
                sbIn_.Append(sEventNameTrim);
                sIn = sbIn_.ToString();
            }



            cf_TgTogether = null;
            List <Configurationtree_Node> listCf_Together = cf_Fc.GetChildrenByNodename(NamesNode.S_TOGETHER, false, log_Reports);

            foreach (Configurationtree_Node cf_Together in listCf_Together)
            {
                string sOn2;
                cf_Together.Dictionary_Attribute.TryGetValue(PmNames.S_ON, out sOn2, false, log_Reports);

                if (sEventNameTrim == sOn2)
                {
                    cf_TgTogether = new Configurationtree_NodeImpl(
                        NamesNode.S_TOGETHER,
                        this.Owner_MemoryApplication.MemoryTogethers.Configurationtree_Togetherconfig
                        );

                    cf_TgTogether.Dictionary_Attribute.Set(PmNames.S_IN.Name_Pm, sIn, log_Reports);


                    //
                    // <refresher>→子<target>
                    //


                    // <refresher>が、target属性を持っていれば、それを子要素とする。
                    List <Configurationtree_Node> cfList = this.ConvertTarget2(cf_Together, log_Reports);
                    foreach (Configurationtree_Node cf_Node in cfList)
                    {
                        cf_TgTogether.List_Child.Add(cf_Node, log_Reports);
                    }

                    // 1件のみ処理。
                    //break;
                }
            }

            goto gt_EndMethod;
            //
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
        //────────────────────────────────────────
        public override void XmlToConfigurationtree(//override
            XmlElement cur_X,
            Configurationtree_Node parent_Cf,//トゥゲザー設定ファイル
            MemoryApplication memoryApplication,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(1);
            log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports);
            //
            //

            //
            //
            //
            // 自
            //
            //
            //
            Configurationtree_Node cur_Cf = this.CreateMyself(cur_X, parent_Cf, memoryApplication, log_Reports);

            //
            //
            //
            //「トゥゲザー登録ファイル」に書かれているのか、
            //「コントロール設定ファイル」に書かれているのかで、処理を変えます。
            //
            //
            //
            bool bGlobalRfr;
            if (NamesNode.S_CODEFILE_TOGETHERS == parent_Cf.Name)
            {
                bGlobalRfr = true;

                //if (log_Method.CanDebug(1))
                //{
                //    log_Method.WriteDebug_ToConsole("親要素がトゥゲザーコンフィグってことは、グローバル・トゥゲザー?");
                //}
            }
            else
            {
                bGlobalRfr = false;

                //if (log_Method.CanDebug(1))
                //{
                //    log_Method.WriteDebug_ToConsole("トゥゲザーコンフィグじゃないって何?");
                //}
            }

            //
            //
            //
            // 属性
            //
            //
            //

            //name(未設定可)
            if (log_Reports.Successful)
            {
                XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_NAME.Name_Attribute);
                if (null != xNd)
                {
                    cur_Cf.Dictionary_Attribute.Add(PmNames.S_NAME.Name_Pm, xNd.Value, cur_Cf, false, log_Reports);
                }
            }

            //in(未設定可。コントロール設定ファイルには無い)
            if (log_Reports.Successful)
            {
                if (bGlobalRfr)
                {
                    XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_IN.Name_Pm);
                    if (null != xNd)
                    {
                        cur_Cf.Dictionary_Attribute.Set(PmNames.S_IN.Name_Pm, xNd.Value, log_Reports);
                    }
                }
            }

            //on(コントロール設定ファイルでは必須、グローバル・トゥゲザー登録ファイルには無い)
            if (log_Reports.Successful)
            {
                if (!bGlobalRfr)
                {
                    XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_ON.Name_Attribute);
                    if (null != xNd)
                    {
                        cur_Cf.Dictionary_Attribute.Add(PmNames.S_ON.Name_Pm, xNd.Value, cur_Cf, false, log_Reports);
                    }
                    else
                    {
                        // エラー
                        goto gt_Error_NoOn;
                    }
                }
            }

            // target(コントロール設定ファイルでは必須、グローバル・トゥゲザー登録ファイルには無い)
            if (log_Reports.Successful)
            {
                if (!bGlobalRfr)
                {
                    XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_TARGET1.Name_Attribute);
                    if (null != xNd)
                    {
                        cur_Cf.Dictionary_Attribute.Add(PmNames.S_TARGET1.Name_Pm, xNd.Value, cur_Cf, false, log_Reports);
                    }
                    else
                    {
                        // エラー
                        goto gt_Error_NoTarget;
                    }
                }

            }

            //description(未設定可)
            if (log_Reports.Successful)
            {
                XmlNode xNd = cur_X.Attributes.GetNamedItem(PmNames.S_DESCRIPTION.Name_Attribute);
                if (null != xNd)
                {
                    cur_Cf.Dictionary_Attribute.Add(PmNames.S_DESCRIPTION.Name_Pm, xNd.Value, cur_Cf, true, log_Reports);
                }
            }

            //
            //
            //
            // 子
            //
            //
            //
            XmlElement err_Child_X;
            if (log_Reports.Successful)
            {
                if (bGlobalRfr)
                {
                    if (log_Reports.Successful)
                    {
                        //
                        // target要素
                        //
                        XmlNodeList child_XNl = cur_X.ChildNodes;

                        foreach (XmlNode child_XNode in child_XNl)
                        {
                            if (XmlNodeType.Element == child_XNode.NodeType)
                            {
                                XmlElement xChild = (XmlElement)child_XNode;

                                if (NamesNode.S_TARGET == xChild.Name)
                                {
                                    //
                                    // target要素
                                    //
                                    string sName_Target = xChild.Attributes.GetNamedItem(PmNames.S_NAME.Name_Attribute).Value;

                                    Configurationtree_Node cfRfr_Target = new Configurationtree_NodeImpl(NamesNode.S_TARGET, cur_Cf);
                                    cfRfr_Target.Dictionary_Attribute.Set(PmNames.S_NAME.Name_Pm, sName_Target, log_Reports);

                                    cur_Cf.List_Child.Add(cfRfr_Target, log_Reports);
                                }
                                else
                                {
                                    // エラー
                                    err_Child_X = xChild;
                                    goto gt_Error_Child;
                                }
                            }

                        }
                    }
                }
            }

            //
            //
            //
            // 親
            //
            //
            //
            string err_SIn;
            if (bGlobalRfr)
            {
                string sIn;
                if (log_Reports.Successful)
                {
                    // 重複チェック用。
                    List<string> sList_In = new List<string>();
                    List<string> sList_Name = new List<string>();

                    //
                    //
                    //
                    // (1)in属性が付いていれば そちらへ、
                    // (2)nameが付いていれば そちらへ。
                    // 重複名があれば発見したい。
                    //
                    //
                    //
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_IN, out sIn,
                        false,//空文字列でも構わない。
                        log_Reports);

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

                    if ("" != sIn)
                    {
                        // トゥゲザー登録ファイルに、in指定での<together>要素を追加。

                        // 重複チェック。
                        if (!sList_In.Contains(sIn))
                        {
                            sList_In.Add(sIn);
                            parent_Cf.List_Child.Add(cur_Cf, log_Reports);
                        }
                        else
                        {
                            // エラー。
                            err_SIn = sIn;
                            goto gtj_Error_DuplicationIn;
                        }
                    }
                    else if ("" != sName_Rfr)
                    {
                        // トゥゲザー設定ファイルに、name指定での<together>要素を追加。

                        // 重複チェック。
                        if (!sList_Name.Contains(sName_Rfr))
                        {
                            sList_Name.Add(sName_Rfr);
                            parent_Cf.List_Child.Add(cur_Cf, log_Reports);
                        }
                        else
                        {
                            // エラー
                            goto gt_Error_DuplicationTogether;
                        }
                    }
                    else
                    {
                        // エラー
                        goto gt_Error_Attr;
                    }
                }

                goto gt_EndMethod;
            }
            else
            {

                //
                //
                //
                // 親
                //
                //
                //
                if (log_Reports.Successful)
                {
                    string sOn;
                    cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_ON, out sOn, false, log_Reports);

                    List<Configurationtree_Node> listCf_Together = parent_Cf.GetChildrenByNodename(NamesNode.S_TOGETHER, false, log_Reports);
                    foreach (Configurationtree_Node cf_Together in listCf_Together)
                    {
                        string sOn2;
                        cf_Together.Dictionary_Attribute.TryGetValue(PmNames.S_ON, out sOn2, false, log_Reports);

                        if (sOn == sOn2)
                        {
                            // エラー
                            goto gt_Error_DuplicationOn;
                        }
                    }

                    parent_Cf.List_Child.Add(cur_Cf, log_Reports);
                }
            }

            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
            gtj_Error_DuplicationIn:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);//ノード名
                tmpl.SetParameter(2, PmNames.S_IN.Name_Attribute, log_Reports);//引数名
                tmpl.SetParameter(3, err_SIn, log_Reports);//in属性値
                tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8026;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_DuplicationTogether:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);//ノード名

                string sName_Tg;
                cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Tg, false, log_Reports);
                tmpl.SetParameter(2, sName_Tg, log_Reports);//指定したtogether名

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

                memoryApplication.CreateErrorReport("Er:8027;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_DuplicationOn:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, PmNames.S_ON.Name_Attribute, log_Reports);//属性名on
                tmpl.SetParameter(2, NamesNode.S_TOGETHER, log_Reports);//ノード名トゥゲザー
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(parent_Cf), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8028;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_Attr:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);//ノード名

                tmpl.SetParameter(2, "in,name", log_Reports);//属性名リスト

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

                memoryApplication.CreateErrorReport("Er:8029;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_Child:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);//ノード名
                tmpl.SetParameter(2, NamesNode.S_TARGET, log_Reports);//期待する子ノード名
                tmpl.SetParameter(3, err_Child_X.Name, log_Reports);//実際の子ノード名
                tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8030;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_NoTarget:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);//ノード名
                tmpl.SetParameter(2, PmNames.S_TARGET1.Name_Attribute, log_Reports);//期待する属性名
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(parent_Cf), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8031;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            gt_Error_NoOn:
            {
                Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl();
                tmpl.SetParameter(1, NamesNode.S_TOGETHER, log_Reports);//ノード名
                tmpl.SetParameter(2, PmNames.S_ON.Name_Attribute, log_Reports);//期待する属性名
                tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(parent_Cf), log_Reports);//設定位置パンくずリスト

                memoryApplication.CreateErrorReport("Er:8032;", tmpl, log_Reports);
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return;
        }
Exemplo n.º 7
0
        //────────────────────────────────────────
        /// <summary>
        /// コントロールに、最新のデータを表示します。
        /// </summary>
        /// <param select="cfTg_Together">トゥゲザー要素です。</param>
        /// <param select="cfTg_Config_Hint">トゥゲザー登録ファイルです。ヒント用。</param>
        /// <param select="log_Reports"></param>
        public void RefreshDataByTogether(
            Configurationtree_Node cfTg_Together,
            Configurationtree_Node cfTg_Config_Hint,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_MiddleImpl.Name_Library, this, "RefreshDataByTogether",log_Reports);
            //
            //

            // <refresher>が無いものもある。その場合は無視する。
            if (null == cfTg_Together)
            {
                goto gt_EndMethod;
            }

            if (log_Reports.Successful)
            {
                //
                //
                //
                // (1)ターゲット名(コントロール名)のリスト
                //
                //
                //
                List<Configurationtree_Node> cfList_RfrTarget = cfTg_Together.GetChildrenByNodename(NamesNode.S_TARGET, false, log_Reports);

                foreach (Configurationtree_Node cf_RfrTarget in cfList_RfrTarget)
                {
                    this.RefreshUsercontrol(
                        cf_RfrTarget,
                        cfTg_Together,
                        cfTg_Config_Hint,
                        log_Reports
                        );
                }

            }

            goto gt_EndMethod;
            //
            //
            gt_EndMethod:
            log_Method.EndMethod(log_Reports);
        }
Exemplo n.º 8
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
            {
            }
        }
        //────────────────────────────────────────
        /// <summary>
        /// トゥゲザー名で指定しなかった場合の、
        /// (1)「コントロール設定ファイル(Fcnf)」の<refresher>を読みにいく。
        /// 
        /// なければヌル。
        /// </summary>
        /// <param name="log_Reports"></param>
        private void Execute3b_ByNoName_1Fcnf(
            out Configurationtree_Node cf_TgTogether,
            Configurationtree_Node cf_Fc,
            Configurationtree_Node cf_Event,
            Log_Reports log_Reports)
        {
            Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static);
            log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute3b_ByNoName_1Fcnf", log_Reports);

            //
            //
            // 11:トゥゲザー名の作成
            // 所要時間目安[0]ミリ秒ほど
            //
            //
            string sEventNameTrim;
            string sIn;
            {
                string sFcName3;
                cf_Fc.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sFcName3, true, log_Reports);
                if (!log_Reports.Successful)
                {
                    cf_TgTogether = null;
                    goto gt_EndMethod;
                }

                // これはトゥゲザーが書いてあるコントロールの名前なので、
                // 末尾に「*」は無い。

                string sEventName;
                cf_Event.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sEventName, true, log_Reports);
                if (!log_Reports.Successful)
                {
                    cf_TgTogether = null;
                    goto gt_EndMethod;
                }

                sEventNameTrim = sEventName.Trim();

                StringBuilder sbIn_ = new StringBuilder();
                sbIn_.Append(sFcName3);
                sbIn_.Append("/");
                sbIn_.Append(sEventNameTrim);
                sIn = sbIn_.ToString();
            }

            cf_TgTogether = null;
            List<Configurationtree_Node> listCf_Together = cf_Fc.GetChildrenByNodename(NamesNode.S_TOGETHER, false, log_Reports);
            foreach (Configurationtree_Node cf_Together in listCf_Together)
            {
                string sOn2;
                cf_Together.Dictionary_Attribute.TryGetValue(PmNames.S_ON, out sOn2, false, log_Reports);

                if (sEventNameTrim==sOn2)
                {
                    cf_TgTogether = new Configurationtree_NodeImpl(
                        NamesNode.S_TOGETHER,
                        this.Owner_MemoryApplication.MemoryTogethers.Configurationtree_Togetherconfig
                        );

                    cf_TgTogether.Dictionary_Attribute.Set(PmNames.S_IN.Name_Pm, sIn, log_Reports);

                    //
                    // <refresher>→子<target>
                    //

                    // <refresher>が、target属性を持っていれば、それを子要素とする。
                    List<Configurationtree_Node> cfList = this.ConvertTarget2(cf_Together, log_Reports);
                    foreach (Configurationtree_Node cf_Node in cfList)
                    {
                        cf_TgTogether.List_Child.Add(cf_Node, log_Reports);
                    }

                    // 1件のみ処理。
                    //break;
                }
            }

            goto gt_EndMethod;
            //
            //
            gt_EndMethod:
            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);
        }
Exemplo n.º 11
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);
        }
        //────────────────────────────────────────
        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);
        }