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