public void TryGetBool(out bool out_BValue, string sName, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "TryGetBool", log_Reports); // if (!this.Dictionary_Field.ContainsKey(sName)) { //該当なし。 out_BValue = false; goto gt_Error_NotFound; } FieldUserformtable fo_Field = this.Dictionary_Field[sName]; if (EnumTypedb.Bool != fo_Field.EnumTypedb) { //型が異なる。 out_BValue = false; goto gt_Error_Type; } out_BValue = (bool)fo_Field.Data; goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFound: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//フィールド名 memoryApplication.CreateErrorReport("Er:6005;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Type: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports); //フィールド名 tmpl.SetParameter(2, fo_Field.EnumTypedb.ToString(), log_Reports); //フィールドの型名 memoryApplication.CreateErrorReport("Er:6006;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
/// <summary> /// レコードセットの取得。 /// </summary> /// <param name="eName"></param> /// <param name="log_Reports"></param> /// <returns>該当がなければヌル。</returns> public RecordSet Get(Expression_Node_String ec_Name, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Get", log_Reports); // // string sName = ec_Name.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports).Trim(); RecordSet nResult; try { //ystem.Console.WriteLine(Info_N.LibraryName + ":" + this.GetType().Name + "#Remove: 【レコードセット削除】sName=[" + sName + "]"); nResult = this.dictionary_Recordset[sName]; } catch (KeyNotFoundException ex) { nResult = null; { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports); //名前 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(ec_Name.Cur_Configuration), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(ex), log_Reports); //例外メッセージ memoryApplication.CreateErrorReport("Er:6043;", tmpl, log_Reports); } } catch (Exception ex) { nResult = null; { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports); //名前 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(ec_Name.Cur_Configuration), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(ex), log_Reports); //例外メッセージ memoryApplication.CreateErrorReport("Er:6044;", tmpl, log_Reports); } } // // // // log_Method.EndMethod(log_Reports); return(nResult); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// イベント アクション リストを作成します。 /// </summary> /// <param nFcName="eventName"></param> /// <param nFcName="nActionSuper"></param> /// <param nFcName="log_Reports"></param> public Functionlist CreateFunctionlist( ConfigurationtreeToExpression_Event sToE_Event, MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method pg_Method = new Log_MethodImpl(); pg_Method.BeginMethod(Info_Controls.Name_Library, this, "CreateFunctionlist", log_Reports); // // Functionlist fw_Result = null; //.WriteLine(this.GetType().Name + "#CreateEventActionList: <構築>【開始】 イベントに対応ついたアクションリストを追加します。 (ピクチャー)"); switch (sToE_Event.Name) { case NamesSe.S_LOAD: { // // このコントロールの「アプリケーション起動時」。 // // (NActionPerformEnum.O_EA) // // // 無視します。 // } break; default: goto gt_Error_NotSupportEvent; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotSupportEvent: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, this.GetType().Name, log_Reports); //クラス名 tmpl.SetParameter(2, sToE_Event.Name, log_Reports); //イベント名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(sToE_Event.Configurationtree_Event), log_Reports); //位置パンくずリスト owner_MemoryApplication.CreateErrorReport("Er:525;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: pg_Method.EndMethod(log_Reports); return(fw_Result); }
//──────────────────────────────────────── public void Resume( MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method pg_Method = new Log_MethodImpl(0); pg_Method.BeginMethod(Info_Controls.Name_Library, this, "Resume", log_Reports); Exception err_Excp; if (log_Reports.Successful) { try { if (dictionary_EventHandler == null) { throw new ApplicationException("Events have not been suppressed."); } foreach (KeyValuePair <object, Delegate[]> pair in dictionary_EventHandler) { for (int nX = 0; nX < pair.Value.Length; nX++) { this.eventHandlerList_Control.AddHandler(pair.Key, pair.Value[nX]); } } dictionary_EventHandler = null; } catch (Exception e) { err_Excp = e; goto gt_Error_Exception; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_Exception: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Excp.GetType().Name, log_Reports); //例外の型 tmpl.SetParameter(2, err_Excp.Message, log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:530;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: pg_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 必須属性の有無テスト。 /// </summary> /// <param name="x_Cur"></param> /// <param name="s_Cur"></param> /// <param name="log_Reports"></param> protected virtual void Test_Attributes(XmlElement cur_X, Configurationtree_Node cur_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports) { // // // //()メソッド開始 // // // Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "Test_Attributes", log_Reports); // // 必須属性の有無テスト // string err_SName_Attr; if (null != this.List_SName_RequiredPm) { foreach (string sName_Attr in this.List_SName_RequiredPm) { if (!cur_Cf.Dictionary_Attribute.ContainsKey(sName_Attr)) { // エラー。 err_SName_Attr = sName_Attr; goto gt_Error_NothingAttr; } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NothingAttr: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_X.Name, log_Reports); //要素名 tmpl.SetParameter(2, err_SName_Attr, log_Reports); //属性名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8009;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// レコードセットの追加。 /// </summary> /// <param name="eName"></param> /// <param name="recordSet"></param> /// <param name="log_Reports"></param> public void Add( Expression_Node_String ec_Name, RecordSet recordSet, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Add", log_Reports); // // string sName = ec_Name.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports).Trim(); try { this.dictionary_Recordset.Add(sName, recordSet); //// debug: 追加したレコードセットの内容。 //{ // ystem.Console.WriteLine(Info_N.LibraryName + ":" + this.GetType().Name + "#Add: 追加したレコードセットの内容"+ // " fld=["+oRecordSet.NField.E_Execute(EnumHitcount.Unconstraint, log_Reports)+"]" + // " lookup-value=["+oRecordSet.NLookupValue.E_Execute(EnumHitcount.Unconstraint, log_Reports)+"]" + // " required=[" + oRecordSet.NRequired.E_Execute(EnumHitcount.Unconstraint, log_Reports) + "]" + // " from=[" + oRecordSet.NFrom.E_Execute(EnumHitcount.Unconstraint, log_Reports) + "]" + // " description=[" + oRecordSet.NDescription.E_Execute(EnumHitcount.Unconstraint, log_Reports) + "]" + // " Storage=[" + oRecordSet.NStorage.E_Execute(EnumHitcount.Unconstraint, log_Reports) + "]" // ); //} } catch (ArgumentException ex) { //return; { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports); //名前 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(ec_Name.Cur_Configuration), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(ex), log_Reports); //例外メッセージ memoryApplication.CreateErrorReport("Er:6042;", tmpl, log_Reports); } } // // // // log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// レコードセットの追加。 /// </summary> /// <param name="eName"></param> /// <param name="recordSet"></param> /// <param name="log_Reports"></param> public void Add( Expression_Node_String ec_Name, RecordSet recordSet, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Add",log_Reports); // // string sName = ec_Name.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports).Trim(); try { this.dictionary_Recordset.Add(sName, recordSet); //// debug: 追加したレコードセットの内容。 //{ // ystem.Console.WriteLine(Info_N.LibraryName + ":" + this.GetType().Name + "#Add: 追加したレコードセットの内容"+ // " fld=["+oRecordSet.NField.E_Execute(EnumHitcount.Unconstraint, log_Reports)+"]" + // " lookup-value=["+oRecordSet.NLookupValue.E_Execute(EnumHitcount.Unconstraint, log_Reports)+"]" + // " required=[" + oRecordSet.NRequired.E_Execute(EnumHitcount.Unconstraint, log_Reports) + "]" + // " from=[" + oRecordSet.NFrom.E_Execute(EnumHitcount.Unconstraint, log_Reports) + "]" + // " description=[" + oRecordSet.NDescription.E_Execute(EnumHitcount.Unconstraint, log_Reports) + "]" + // " Storage=[" + oRecordSet.NStorage.E_Execute(EnumHitcount.Unconstraint, log_Reports) + "]" // ); //} } catch (ArgumentException ex) { //return; { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//名前 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(ec_Name.Cur_Configuration), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(ex), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:6042;", tmpl, log_Reports); } } // // // // log_Method.EndMethod(log_Reports); }
/// <summary> /// レコードセットの削除。 /// </summary> /// <param name="eStorage"></param> /// <param name="log_Reports"></param> public void Remove(Expression_Node_String ec_Storage, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Remove", log_Reports); // // string sStorage = ec_Storage.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports).Trim(); Exception err_Excp; try { this.dictionary_Recordset.Remove(sStorage); // #デバッグ中 System.Console.WriteLine(Info_Expr.Name_Library + ":" + this.GetType().Name + "#Remove: 【レコードセット削除】sName=[" + sStorage + "]"); } catch (Exception ex) { err_Excp = ex; goto gt_Error_Exception; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_Exception: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sStorage, log_Reports); //名前 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(ec_Storage.Cur_Configuration), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ memoryApplication.CreateErrorReport("Er:6045;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// <data>要素の読取。 /// </summary> /// <param select="xDataSource"></param> /// <param select="fcUc"></param> public void Translate( Configurationtree_Node cur_Cf,//<data>要素 Expression_Node_String parent_Ec,//「S■form-component」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "CfToEc",log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(2)" + cur_Cf.Name); } // // // // // // // // 自 // // // Expression_NodeImpl cur_Ec = new Expression_NodeImpl(parent_Ec, cur_Cf, memoryApplication); // // // // 属性 // // // string err_SAttrName; cur_Cf.Dictionary_Attribute.ForEach(delegate(string sPmName, string sValue, ref bool bBreak) { if ( PmNames.S_MEMORY.Name_Pm == sPmName || PmNames.S_ACCESS.Name_Pm == sPmName || PmNames.S_NAME_TABLE.Name_Pm == sPmName || PmNames.S_NAME_VAR.Name_Pm == sPmName || //.Z_ITEM_VALUE_TO_VARIABLE PmNames.S_DESCRIPTION.Name_Pm == sPmName ) { //ystem.Console.WriteLine(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: <データT >に属性追加 [" + sKey + "]←[" + sValue + "]"); // なんでも属性として追加。 Expression_Node_String ec_Value = new Expression_Leaf_StringImpl(sValue, cur_Ec, cur_Cf); cur_Ec.SetAttribute(sPmName, ec_Value, log_Reports); } else { err_SAttrName = sPmName; bBreak = true; goto gt_Error_UndefinedAttr; } goto gt_gt_EndMethod2; // // // // gt_Error_UndefinedAttr: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, err_SAttrName, log_Reports);//属性名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7002;", tmpl, log_Reports); } goto gt_gt_EndMethod2; gt_gt_EndMethod2: ; }); // // // // 子 // // // { this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // 親へ連結 // // // parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports); goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// システム定義関数の実行。 /// </summary> /// <param name="fc_EventHandler"></param> /// <param name="sender"></param> /// <param name="eventMonitor"></param> /// <param name="log_Reports"></param> public void Execute3_Function( Expression_Node_Function expr_Func, object sender, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute3_Function", log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Begin(); } // // // // string sFncName; expr_Func.TrySelectAttribute(out sFncName, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); // // アクションの実行 // //ystem.Console.WriteLine(this.GetType().Name + "#: 【開始】E_Action実行します。"); if (log_Reports.Successful) { if (null != expr_Func) { if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole(" 【実行】イベント=[" + expr_Func.EnumEventhandler + "] システム関数=[" + sFncName + "] "); } switch (expr_Func.EnumEventhandler) { case EnumEventhandler.O_Lr: { expr_Func.Execute4_OnLr( sender, log_Reports ); } break; case EnumEventhandler.O_Ea: { // 変換 OEa → WrRhn。 expr_Func.Execute4_OnLr( sender, log_Reports ); } break; //case EnumEventhandler.O_DEA_P_S_B_WR: // break; default: //エラー goto gt_Error_NotSupportedEnum; } } } else { // // アクションしていない、アクションは終了したという判断。 // } goto gt_EndMethod; // #region 異常系 //──────────────────────────────────────── gt_Error_NotSupportedEnum: // アクションしていない、アクションは終了したという判断。 { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sFncName, log_Reports); //関数名 tmpl.SetParameter(2, expr_Func.EnumEventhandler.ToString(), log_Reports); //イベントハンドラー名 tmpl.SetParameter(3, log_Method.Fullname, log_Reports); //問題のあったメソッド memoryApplication.CreateErrorReport("Er:110029;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void XmlToConfigurationtree( XmlElement cur_X, //<key-event> Configurationtree_Node parent_Cf, //<control> MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports); // // // // // // 自 // // // Configurationtree_Node cur_Cf = this.CreateMyself(cur_X, parent_Cf, memoryApplication, log_Reports); // // // // 属性 // // // this.Parse_SAttribute(cur_X, cur_Cf, memoryApplication, log_Reports); // // コントロールの、key-eventリストに、S_KeyEventを追加。 // if (log_Reports.Successful) { XmlToConfigurationtree_C15_Elm to = XmlToConfigurationtree_Collection.GetTranslatorByNodeName(NamesNode.S_KEY_ACTION, log_Reports); //List<string> li = new List<string>(); //li.Add(PmNames.TYPE.Name_Pm); //li.Add(PmNames.S_DESCRIPTION.Name_Attribute); //xToS.List_AttrName = li; // // // fncノードを列挙 // XmlNodeList child_XNl = cur_X.ChildNodes; foreach (XmlNode xChild in child_XNl) { if (XmlNodeType.Element == xChild.NodeType) { if (NamesNode.S_FNC == xChild.Name) { XmlElement xFnc = (XmlElement)xChild; to.XmlToConfigurationtree( xFnc, cur_Cf, memoryApplication, log_Reports ); } else { //#連続エラー { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, xChild.Name, log_Reports); //ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8025;", tmpl, log_Reports); } } } } } // // // // 親へ連結 // // // if (log_Reports.Successful) { parent_Cf.List_Child.Add(cur_Cf, log_Reports); } // // // // log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// X → S /// /// event要素の読取と、処理の実行。 /// </summary> /// <param select="xEvent"></param> /// <param select="fcUc"></param> public void XmlToConfigurationtree( string sName_Control, Configurationtree_Node cf_ControlConfig, XmlElement xControl,//<control>要素。子要素の読取りに利用。 MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XToCf",log_Reports); // // Expression_Node_String ec_Name_Control; XmlElement err_11elm; Exception err_Excp; Configurationtree_Node cur_Cf; if (log_Reports.Successful) { // コントロール名。 ec_Name_Control = new Expression_Node_StringImpl(null, cf_ControlConfig); ec_Name_Control.AppendTextNode( sName_Control, cf_ControlConfig, log_Reports ); List<Usercontrol> list_Usercontrol = owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_Name_Control, true, log_Reports ); Usercontrol uct; if (list_Usercontrol.Count < 1) { // // エラー。 goto gt_Error_NotFoundFc; } else { uct = list_Usercontrol[0]; } //if (null == uct.ControlCommon.Configurationtree_Control) //{ // uct.ControlCommon.Configurationtree_Control = new Configurationtree_NodeImpl(NamesNode.S_CONTROL+"(ヌル時の代替)", cf_ControlConfig); //} // // // // 自 // // // cur_Cf = new Configurationtree_NodeImpl(NamesNode.S_CONTROL1, cf_ControlConfig); //上書きします。 uct.ControlCommon.Configurationtree_Control = cur_Cf; // // コントロール名。 uct.ControlCommon.Configurationtree_Control.Dictionary_Attribute.Add(PmNames.S_NAME.Name_Pm, sName_Control, uct.ControlCommon.Configurationtree_Control, true, log_Reports); // // // // 子 // // // { // <data>、<event>、<view>要素を列挙 XmlNodeList child_XNl = xControl.ChildNodes; foreach (XmlNode child_XNode in child_XNl) { if (XmlNodeType.Element == child_XNode.NodeType) { XmlElement child_XElm = (XmlElement)child_XNode; try { XmlToConfigurationtree_C15_Elm to = this.Dictionary_XmlToConfigurationtree_Elm[child_XElm.Name]; to.XmlToConfigurationtree( child_XElm, cur_Cf, owner_MemoryApplication, log_Reports ); } catch (ArgumentException e) { // // エラー。 err_11elm = child_XElm; err_Excp = e; goto gt_Error_UndefinedChild; } catch (Exception e) { // // エラー。 err_11elm = child_XElm; err_Excp = e; goto gt_Error_Exception03; } } } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundFc: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); string sFcName = ec_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); tmpl.SetParameter(1, sFcName, log_Reports);//コントロール名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_ControlConfig), log_Reports);//設定位置パンくずリスト owner_MemoryApplication.CreateErrorReport("Er:8017;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedChild: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); string sFcName = ec_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); tmpl.SetParameter(1, NamesNode.S_CONTROL1, log_Reports);//期待するノード名 tmpl.SetParameter(2, err_11elm.Name, log_Reports);//実際のノード名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8018;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Exception03: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_11elm.Name, log_Reports);//ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8019;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 読取。 /// </summary> /// <param name="s_View"></param> /// <param name="ef_View"></param> /// <param name="moOpyopyo"></param> /// <param name="log_Reports"></param> public void Translate( Configurationtree_Node cur_Cf,//<view> Expression_Node_String parent_Ec,//「E■form-component」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(3)"+cur_Cf.Name); } // // // // // // // // 自 // // // Expression_Node_StringImpl cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf); // // // // 子 // // // { //<●●>要素を全検索。<f-list-box-labels>があることが期待されます。 cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node cf_Child, ref bool bBreak) { if (cf_Child is Configurationtree_Node) { Configurationtree_Node cf_Node = (Configurationtree_Node)cf_Child; string sName_Node = cf_Node.Name; string sName_Fnc = ""; { bool bRequired; if (NamesNode.S_FNC == sName_Node) { bRequired = true; } else { bRequired = false; } // todo; 子要素のnameも取りたい。 cf_Node.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, bRequired, log_Reports); } if (NamesNode.S_FNC == sName_Node && NamesFnc.S_LISTBOX_LABELS == sName_Fnc) { // 「S■fnc name=”Sf:f-listbox-labels;”」 ConfigurationtreeToExpression_F91_FListboxLabelsImpl_ to = new ConfigurationtreeToExpression_F91_FListboxLabelsImpl_(); to.Translate( cf_Child, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else { // エラー { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Node, log_Reports);//設定ノード名 tmpl.SetParameter(2, sName_Fnc, log_Reports);//関数名 memoryApplication.CreateErrorReport("Er:7003;", tmpl, log_Reports); } bBreak = true; } } }); } // // // // 親へ連結 // // // { parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports); } goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
public void TryGetFilepath_Configurationtree(out Configurationtree_NodeFilepath out_Value, string sName, bool bRequired, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "TryGetFilepath_Configurationtree", log_Reports); // if (!this.Dictionary_Field.ContainsKey(sName)) { //該当なし。 if (bRequired) { out_Value = new Configurationtree_NodeFilepathImpl(log_Method.Fullname,null);//ヌル・オブジェクト。 goto gt_Error_NotFound; } else { out_Value = new Configurationtree_NodeFilepathImpl(log_Method.Fullname, null);//ヌル・オブジェクト。 goto gt_EndMethod; } } FieldUserformtable fo_Field = this.Dictionary_Field[sName]; if (EnumTypedb.ConfFilepath != fo_Field.EnumTypedb) { //型が異なる。 if (bRequired) { out_Value = new Configurationtree_NodeFilepathImpl(log_Method.Fullname, null);//ヌル・オブジェクト。 goto gt_Error_Type; } else { out_Value = new Configurationtree_NodeFilepathImpl(log_Method.Fullname, null);//ヌル・オブジェクト。 goto gt_EndMethod; } } out_Value = (Configurationtree_NodeFilepath)fo_Field.Data; goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFound: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//フィールド名 memoryApplication.CreateErrorReport("Er:6007;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Type: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//フィールド名 tmpl.SetParameter(2, fo_Field.EnumTypedb.ToString(), log_Reports);//フィールドの型名 memoryApplication.CreateErrorReport("Er:6008;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public void XmlToConfigurationtree( XmlElement cur_X, Configurationtree_Node cur_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports ) { // // // //()メソッド開始 // // // Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports); // // // //()子要素 // // // XmlNodeList child_XNl = cur_X.ChildNodes; string err_SName_CurNode = ""; XmlElement err_XElm = null; Exception err_Excp = null; foreach (XmlNode child_XNode in child_XNl) { if (XmlNodeType.Element == child_XNode.NodeType) { XmlElement xChild = (XmlElement)child_XNode; string sName_Node = xChild.Name; XmlToConfigurationtree_C15_Elm to; bool bHit = this.Dictionary_XmlToConfigurationtree_ElmP.ContainsKey(sName_Node); if (!bHit) { // 未該当=エラー err_SName_CurNode = cur_X.Name; err_XElm = xChild; goto gt_Error_UndefinedElement; } to = this.Dictionary_XmlToConfigurationtree_ElmP[sName_Node]; if (log_Reports.Successful) { try { to.XmlToConfigurationtree(xChild, cur_Cf, memoryApplication, log_Reports); } catch (Exception ex) { // // エラー。 err_XElm = xChild; err_Excp = ex; goto gt_Error_Exception; } } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_UndefinedElement: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_XElm.Name, log_Reports); //子要素名 tmpl.SetParameter(2, err_SName_CurNode, log_Reports); //自要素名 StringBuilder s1 = new StringBuilder(); foreach (string key in this.Dictionary_XmlToConfigurationtree_ElmP.Keys) { s1.Append(" <"); s1.Append(key); s1.Append(">"); s1.Append(Environment.NewLine); } tmpl.SetParameter(3, s1.ToString(), log_Reports); //要素リスト tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8033;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Exception: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_XElm.Name, log_Reports); //要素名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ memoryApplication.CreateErrorReport("Er:8034;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 読取。 /// </summary> /// <param name="s_View"></param> /// <param name="ef_View"></param> /// <param name="moOpyopyo"></param> /// <param name="log_Reports"></param> public void Translate( Configurationtree_Node cur_Cf, //<view> Expression_Node_String parent_Ec, //「E■form-component」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(3)" + cur_Cf.Name); } // // // // // // // // 自 // // // Expression_Node_StringImpl cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf); // // // // 子 // // // { //<●●>要素を全検索。<f-list-box-labels>があることが期待されます。 cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node cf_Child, ref bool bBreak) { if (cf_Child is Configurationtree_Node) { Configurationtree_Node cf_Node = (Configurationtree_Node)cf_Child; string sName_Node = cf_Node.Name; string sName_Fnc = ""; { bool bRequired; if (NamesNode.S_FNC == sName_Node) { bRequired = true; } else { bRequired = false; } // todo; 子要素のnameも取りたい。 cf_Node.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, bRequired, log_Reports); } if (NamesNode.S_FNC == sName_Node && NamesFnc.S_LISTBOX_LABELS == sName_Fnc) { // 「S■fnc name=”Sf:f-listbox-labels;”」 ConfigurationtreeToExpression_F91_FListboxLabelsImpl_ to = new ConfigurationtreeToExpression_F91_FListboxLabelsImpl_(); to.Translate( cf_Child, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else { // エラー { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Node, log_Reports); //設定ノード名 tmpl.SetParameter(2, sName_Fnc, log_Reports); //関数名 memoryApplication.CreateErrorReport("Er:7003;", tmpl, log_Reports); } bBreak = true; } } }); } // // // // 親へ連結 // // // { parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports); } goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 属性テスト /// </summary> /// <param name="x_Cur"></param> /// <param name="s_Cur"></param> /// <param name="log_Reports"></param> protected override void Test_Attributes(XmlElement cur_X, Configurationtree_Node cur_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "Test_Attributes", log_Reports); string sMemory; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_MEMORY, out sMemory, false, log_Reports); string sAccess_Src; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_ACCESS, out sAccess_Src, false, log_Reports); // // access // bool bExists_To = false; string err_sAccess; { CsvTo_ListImpl to = new CsvTo_ListImpl(); List <string> listS = to.Read(sAccess_Src); foreach (string sAccess1 in listS) { if (ValuesAttr.S_FROM == sAccess1) { // ・読取り。(読取り専用とは限らない。writeは別<data>で書く可能性もある)。 } else if (ValuesAttr.S_TO == sAccess1) { // ・書出し。(書出し専用とは限らない。readは別<data>で書く可能性もある)。 bExists_To = true; } //else if (ValuesAttr.S_FROM + "," + ValuesAttr.S_TO == sAccess)//"from,to" //{ // // ・読み書き両用。 //} else { // fromでも、toでもないものが指定されていれば、エラー。 err_sAccess = sAccess1; goto gt_Error_AttrAccess; } } } // //memory // if (!( ValuesAttr.S_NONE == sMemory || ValuesAttr.S_CELL == sMemory || ValuesAttr.S_RECORDS == sMemory || ValuesAttr.S_VARIABLE == sMemory )) { // 無いものを指定したらエラー goto gt_Error_AttrType; } // //access属性に「to」が指定されていない時に、memory属性に「none」「cell」「records」以外のものが設定されていれば、エラー。 // if (!bExists_To && (ValuesAttr.S_NONE != sMemory && ValuesAttr.S_CELL != sMemory && ValuesAttr.S_RECORDS != sMemory)) { goto gt_Error_GhostTarget; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_GhostTarget: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, PmNames.S_ACCESS.Name_Attribute, log_Reports); //属性名access tmpl.SetParameter(2, ValuesAttr.S_TO, log_Reports); //属性値to tmpl.SetParameter(3, PmNames.S_MEMORY.Name_Attribute, log_Reports); //属性名memory StringBuilder s1 = new StringBuilder(); s1.Append("「"); s1.Append(ValuesAttr.S_NONE); s1.Append("」「"); s1.Append(ValuesAttr.S_CELL); s1.Append("」「"); s1.Append(ValuesAttr.S_RECORDS); s1.Append("」"); tmpl.SetParameter(4, s1.ToString(), log_Reports); //属性値 tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト //access属性に「to」が指定されていない時に、target属性に「none」「cell」「listbox」以外のものが設定されていました。これはエラーです。 // //access属性に「to」が指定されていない場合は、target属性は「none」「cell」「listbox」のいずれかにしなければなりません。 memoryApplication.CreateErrorReport("Er:8020;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_AttrType: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, PmNames.S_MEMORY.Name_Attribute, log_Reports); //属性名memory tmpl.SetParameter(2, sMemory, log_Reports); //属性名memoryの値 StringBuilder s1 = new StringBuilder(); s1.Append("「"); s1.Append(ValuesAttr.S_CELL); s1.Append("」「"); s1.Append(ValuesAttr.S_RECORDS); s1.Append("」「"); s1.Append(ValuesAttr.S_VARIABLE); s1.Append("」"); tmpl.SetParameter(3, s1.ToString(), log_Reports); //属性値 tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8021;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_AttrAccess: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, PmNames.S_ACCESS.Name_Attribute, log_Reports); //属性名access tmpl.SetParameter(2, err_sAccess, log_Reports); //access属性の値 tmpl.SetParameter(3, sAccess_Src, log_Reports); //access指定値全文 StringBuilder s1 = new StringBuilder(); s1.Append("「"); s1.Append(ValuesAttr.S_FROM); s1.Append("」「"); s1.Append(ValuesAttr.S_TO); s1.Append("」指定なし"); tmpl.SetParameter(4, s1.ToString(), log_Reports); //属性値 tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8022;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// S → E /// /// データソース、 /// データターゲット、 /// <view> /// の3つを変換。 /// </summary> /// <param oNodeName="sList_Name_Control"></param> /// <param oNodeName="s_FcConfig"></param> /// <param oNodeName="moOpyopyo"></param> /// <param oNodeName="log_Reports"></param> public void Translate( List<string> sList_Name_Control, Configurationtree_Node cf_FcConfig, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。"); // // // // デバッグ開始 // // // Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE_DsrcDtrg",log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(1)データソース・データターゲット・SSR"); } // // // // string sName_Usercontrol; if (log_Reports.Successful) { // 正常時 foreach(string sFcName in sList_Name_Control) { // コントロール名。 Expression_Node_StringImpl ec_FcName = new Expression_Node_StringImpl(null,cf_FcConfig); ec_FcName.AppendTextNode( sFcName, cf_FcConfig, log_Reports ); // コントロール名の指定は、1件のみと想定。 List<Usercontrol> list_Usercontrol = memoryApplication.MemoryForms.GetUsercontrolsByName( ec_FcName, true, log_Reports ); Usercontrol fcUc; if (list_Usercontrol.Count<1) { sName_Usercontrol = sFcName; goto gt_Error_NotFoundUsercontrol; } else { fcUc = list_Usercontrol[0]; } Configurationtree_Node cf_Control = fcUc.ControlCommon.Configurationtree_Control; if (null == cf_Control) { // // O_コントロール要素を新規作成。 cf_Control = new Configurationtree_NodeImpl(NamesNode.S_CONTROL1, cf_FcConfig); fcUc.ControlCommon.Configurationtree_Control = cf_Control; } else { // // O_コントロール要素は既存。 } // // コントロール名。 fcUc.ControlCommon.Configurationtree_Control.Dictionary_Attribute.Set(PmNames.S_NAME.Name_Pm, sFcName, log_Reports); ConfigurationtreeToExpression_F11_ControlImpl_ to0 = new ConfigurationtreeToExpression_F11_ControlImpl_(); to0.Translate( cf_Control, fcUc.ControlCommon.Expression_Control, memoryApplication, pg_ParsingLog, log_Reports ); } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundUsercontrol: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Usercontrol, log_Reports);//コントロール名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_FcConfig), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7001;", tmpl, log_Reports); } // 処理を中断。 goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement("データソース・データターゲット・SSR"); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf,//「S■fnc」 Expression_Node_String parent_Ec,//「S■fnc」、や「S■event」か? MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(29)" + cur_Cf.Name); } // // // // if (!log_Reports.Successful) { goto gt_EndMethod; } if (null == parent_Ec) { goto gt_Error_NullParent; } // // // // 自 // // // Expression_Node_String cur_Ec = null; //「E■fnc」 // // 親ファンク名 // 自ファンク名 // string parent_SName_Fnc = ""; string sName_MyFnc = ""; { bool bHit9 = parent_Ec.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } else if (NamesNode.S_FNC == parent_Ec.Cur_Configuration.Name && "" == parent_SName_Fnc) { // // エラー。親要素が、name属性を持たない「E■fnc」だった。 // goto gt_Error_NoNameParent1; } } // 「E■fnc」には、name=”★”属性が必須。 bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, true, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } // // // // 自 // // // if (log_Reports.Successful) { // 「E■fnc」要素を作成。 if (NamesFnc.S_ALL_TRUE == sName_MyFnc) { cur_Ec = Expressionv_5FAllTrueImpl.Create(parent_Ec, cur_Cf, memoryApplication); } else if (NamesFnc.S_TEXT_TEMPLATE == sName_MyFnc) { cur_Ec = Expression_SftextTemplate.Create(parent_Ec, cur_Cf, memoryApplication); } else if (NamesFnc.S_CELL == sName_MyFnc) { if (log_Method.CanDebug(10)) { log_Method.WriteDebug_ToConsole( "(2) 「S■fnc name=”[" + sName_MyFnc + "]”」要素 属性解析開始。"); } cur_Ec = Expression_SfcellImpl.Create(parent_Ec, cur_Cf, memoryApplication); } else if (NamesFnc.S_VALUE_CONTROL == sName_MyFnc) { // コントロール名を取得し、コントロールの値を返すように設定。 string sFcName; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sFcName, true, log_Reports); if (!log_Reports.Successful) { goto gt_EndMethod; } Expression_Node_String ec_FcName = new Expression_Leaf_StringImpl(sFcName, parent_Ec, cur_Cf); cur_Ec = new Expression_ValuecontrolImpl(ec_FcName, memoryApplication, parent_Ec, cur_Cf); } else if (NamesFnc.S_SWITCH == sName_MyFnc) { if(log_Method.CanDebug(1)) { Log_TextIndented s = new Log_TextIndentedImpl(); parent_Ec.ToText_Snapshot(s); log_Method.WriteDebug_ToConsole( "E■switch生成。s=" + s.ToString()); } cur_Ec = Expression_SfswitchImpl.Create(parent_Ec, cur_Cf); } else { if(sName_MyFnc.StartsWith(NamesFnc.S_UF)) { // ユーザー定義関数 cur_Ec = new Expression_FfncImpl(parent_Ec, cur_Cf, memoryApplication); } else { // システム定義関数 cur_Ec = new Expression_Node_StringImpl(parent_Ec, cur_Cf); } } } else { goto gt_EndMethod; } // // // // 属性 // // // if (log_Reports.Successful) { // 元からあった。 this.ParseAttr_InConfigurationtreeToExpression( cur_Cf, cur_Ec, true,//name属性は必須。 false,//value属性は、子<f-str>にしない。 log_Reports ); } // // // // 子 // // // if (log_Reports.Successful) { if(NamesFnc.S_TEXT_TEMPLATE == sName_MyFnc) { this.ParseChild_SpecialTextTemplate_( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesFnc.S_SWITCH == sName_MyFnc) { this.ParseChild_SpecialSwitch_( cur_Cf,//「S■fnc」 cur_Ec,//「E■fnc」 memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesFnc.S_VLD_EMPTY_FIELD == sName_MyFnc) { // <a-empty-field>要素 ConfigurationtreeToExpression_V55_AEmptyFieldImpl_ to = new ConfigurationtreeToExpression_V55_AEmptyFieldImpl_(); to.Translate( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else { // この「S□fnc」の子を解析。 // 「Sf:cell;」 // 「Sf:where;」 // 「Sf:rec-cond;」 // 【追加 2012-06-02】 this.ParseChild_SpecialFnc_( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } } else { goto gt_EndMethod; } // // // // 親へ連結 // // // if (log_Reports.Successful) { // // "hardcoding-control" に追加する子要素としては、f-cellなどがある。 // if ( sName_MyFnc.StartsWith(NamesFnc.S_UF)//ユーザー定義関数 || NamesFnc.S_TEXT_TEMPLATE == sName_MyFnc//テンプレート || NamesFnc.S_SWITCH == sName_MyFnc//スイッチ文 || (NamesNode.S_FNC == cur_Cf.Name && NamesFnc.S_VALUE_CONTROL == sName_MyFnc)//todo: || (NamesNode.S_FNC == parent_Ec.Cur_Configuration.Name) || (NamesFnc.S_CELL == sName_MyFnc || NamesFnc.S_TEXT_TEMPLATE == sName_MyFnc) || (sName_MyFnc == NamesFnc.S_REC_COND && NamesNode.S_FNC == parent_Ec.Cur_Configuration.Name && NamesFnc.S_WHERE == parent_SName_Fnc)//親が<rec-cond>で、自<fnc name=”Sf:Where;”>要素 ) { parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports); } else { // エラー goto gt_Error_CanNotAddParent; // todo: //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE:(18)★★親要素へ連結不能 ・親「E■[" + e_Parent.Cur_Configurationtree.Name + "] name=”[" + sParentFncName + "]”」 ← 自「S■[" + s_AFnc.Name_Node + "] name=”[" + sFncName + "]”」中止。 /エラー。親要素に追加しようとしましたが、予想しない親要素でした。"); } } // // // 終わり際に、デバッグ // // if (log_Method.CanDebug(10) && log_Reports.Successful) { if (null != cur_Ec)//既にエラーが出ている場合。 { log_Method.WriteDebug_ToConsole("(19) 自要素の属性の数=[" + cur_Ec.Dictionary_Expression_Attribute.Count + "]"); log_Method.WriteDebug_ToConsole("(21) ┌────┐自要素。その子要素の数=[" + cur_Ec.List_Expression_Child.Count + "]"); cur_Ec.List_Expression_Child.ForEach( delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak) { log_Method.WriteDebug_ToConsole("「S■" + e_Child.Cur_Configuration.Name + "」"); }); log_Method.WriteDebug_ToConsole( "(22) └────┘"); log_Method.WriteDebug_ToConsole( "(23)└────────────────┘ 「S■[" + cur_Cf.Name + "] name=”[" + sName_MyFnc + "]”」(fnc)要素解析終了。"); // // name属性の指定は必須です。 // string sName8; bool bHit8 = cur_Ec.TrySelectAttribute(out sName8, PmNames.S_NAME.Name_Pm, EnumHitcount.One, log_Reports); if (!bHit8) { // todo: throw new Exception(Info_ConfigurationtreeToExpression.Name_Library + ":" + this.GetType().Name + "#SToE:(24)fnc要素にname属性が指定されていないのはエラーです①。"); } else if ("" == sName8) { // todo: //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE:(24)fnc要素に空文字列のname属性が指定されているのはエラーです。"); goto gt_Error_NoNameParent2; } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_CanNotAddParent: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, sName_MyFnc, log_Reports);//関数名 if (null != cur_Ec) { tmpl.SetParameter(3, cur_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//属性の数 //属性リスト StringBuilder s1 = new StringBuilder(); cur_Ec.Dictionary_Expression_Attribute.ForEach( delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak) { s1.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n"); }); tmpl.SetParameter(4, s1.ToString(), log_Reports); tmpl.SetParameter(5, cur_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子要素の数 //子要素リスト StringBuilder s2 = new StringBuilder(); cur_Ec.List_Expression_Child.ForEach( delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak) { s2.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n"); }); tmpl.SetParameter(6, s2.ToString(), log_Reports); tmpl.SetParameter(7, NamesNode.S_ARG, log_Reports);//期待の親設定ノード名 tmpl.SetParameter(8, PmNames.S_WHERE.Name_Pm, log_Reports);//期待の親設定関数名 } else { tmpl.SetParameter(3, "ヌル", log_Reports);//設定属性の数 tmpl.SetParameter(4, "ヌル", log_Reports);//設定属性リスト tmpl.SetParameter(5, "ヌル", log_Reports);//設定子要素の数 tmpl.SetParameter(6, "ヌル", log_Reports);//設定子要素リスト tmpl.SetParameter(7, "ヌル", log_Reports);//期待の親設定ノード名 tmpl.SetParameter(8, "ヌル", log_Reports);//期待の親設定関数名 } if (null != parent_Ec) { tmpl.SetParameter(9, parent_Ec.Cur_Configuration.Name, log_Reports);//実際の親Expression要素ノード名 tmpl.SetParameter(10, parent_SName_Fnc, log_Reports);//実際の親Expression要素関数名 tmpl.SetParameter(11, parent_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//Expression属性の数 StringBuilder s3 = new StringBuilder(); parent_Ec.Dictionary_Expression_Attribute.ForEach( delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak) { s3.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n"); }); tmpl.SetParameter(12, s3.ToString(), log_Reports);//子Expression属性リスト tmpl.SetParameter(13, parent_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子Expression要素数 StringBuilder s4 = new StringBuilder(); parent_Ec.List_Expression_Child.ForEach( delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak) { s4.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n"); }); tmpl.SetParameter(14, s4.ToString(), log_Reports);//子Expression要素リスト } else { tmpl.SetParameter(9, "ヌル", log_Reports);//実際の親Expression要素ノード名 tmpl.SetParameter(10, "ヌル", log_Reports);//実際の親Expression要素関数名 tmpl.SetParameter(11, "ヌル", log_Reports);//Expression属性の数 tmpl.SetParameter(12, "ヌル", log_Reports);//子Expression属性リスト tmpl.SetParameter(13, "ヌル", log_Reports);//子Expression要素数 tmpl.SetParameter(14, "ヌル", log_Reports);//子Expression要素リスト } tmpl.SetParameter(15, Log_RecordReportsImpl.ToText_Configuration(parent_Ec.Cur_Configuration), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7021;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_NoNameParent2: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, sName_MyFnc, log_Reports);//関数名 if (null != cur_Ec) { tmpl.SetParameter(3, cur_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//属性の数 //属性リスト StringBuilder s1 = new StringBuilder(); cur_Ec.Dictionary_Expression_Attribute.ForEach( delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak) { s1.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n"); }); tmpl.SetParameter(4, s1.ToString(), log_Reports); tmpl.SetParameter(5, cur_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子要素の数 //子要素リスト StringBuilder s2 = new StringBuilder(); cur_Ec.List_Expression_Child.ForEach( delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak) { s2.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n"); }); tmpl.SetParameter(6, s2.ToString(), log_Reports); tmpl.SetParameter(7, NamesNode.S_ARG, log_Reports);//期待の親設定ノード名 tmpl.SetParameter(8, PmNames.S_WHERE.Name_Pm, log_Reports);//期待の親設定関数名 } else { tmpl.SetParameter(3, "ヌル", log_Reports);//設定属性の数 tmpl.SetParameter(4, "ヌル", log_Reports);//設定属性リスト tmpl.SetParameter(5, "ヌル", log_Reports);//設定子要素の数 tmpl.SetParameter(6, "ヌル", log_Reports);//設定子要素リスト tmpl.SetParameter(7, "ヌル", log_Reports);//期待の親設定ノード名 tmpl.SetParameter(8, "ヌル", log_Reports);//期待の親設定関数名 } if (null != parent_Ec) { tmpl.SetParameter(9, parent_Ec.Cur_Configuration.Name, log_Reports);//実際の親Expression要素ノード名 tmpl.SetParameter(10, parent_SName_Fnc, log_Reports);//実際の親Expression要素関数名 tmpl.SetParameter(11, parent_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//Expression属性の数 StringBuilder s3 = new StringBuilder(); parent_Ec.Dictionary_Expression_Attribute.ForEach( delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak) { s3.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n"); }); tmpl.SetParameter(12, s3.ToString(), log_Reports);//子Expression属性リスト tmpl.SetParameter(13, parent_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子Expression要素数 StringBuilder s4 = new StringBuilder(); parent_Ec.List_Expression_Child.ForEach( delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak) { s4.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n"); }); tmpl.SetParameter(14, s4.ToString(), log_Reports);//子Expression要素リスト } else { tmpl.SetParameter(9, "ヌル", log_Reports);//実際の親Expression要素ノード名 tmpl.SetParameter(10, "ヌル", log_Reports);//実際の親Expression要素関数名 tmpl.SetParameter(11, "ヌル", log_Reports);//Expression属性の数 tmpl.SetParameter(12, "ヌル", log_Reports);//子Expression属性リスト tmpl.SetParameter(13, "ヌル", log_Reports);//子Expression要素数 tmpl.SetParameter(14, "ヌル", log_Reports);//子Expression要素リスト } tmpl.SetParameter(15, Log_RecordReportsImpl.ToText_Configuration(parent_Ec.Cur_Configuration), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7022;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_NoNameParent1: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, sName_MyFnc, log_Reports);//関数名 if (null != cur_Ec) { tmpl.SetParameter(3, cur_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//属性の数 //属性リスト StringBuilder s1 = new StringBuilder(); cur_Ec.Dictionary_Expression_Attribute.ForEach( delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak) { s1.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n"); }); tmpl.SetParameter(4, s1.ToString(), log_Reports); tmpl.SetParameter(5, cur_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子要素の数 //子要素リスト StringBuilder s2 = new StringBuilder(); cur_Ec.List_Expression_Child.ForEach( delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak) { s2.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n"); }); tmpl.SetParameter(6, s2.ToString(), log_Reports); tmpl.SetParameter(7, NamesNode.S_ARG, log_Reports);//期待の親設定ノード名 tmpl.SetParameter(8, PmNames.S_WHERE.Name_Pm, log_Reports);//期待の親設定関数名 } else { tmpl.SetParameter(3, "ヌル", log_Reports);//設定属性の数 tmpl.SetParameter(4, "ヌル", log_Reports);//設定属性リスト tmpl.SetParameter(5, "ヌル", log_Reports);//設定子要素の数 tmpl.SetParameter(6, "ヌル", log_Reports);//設定子要素リスト tmpl.SetParameter(7, "ヌル", log_Reports);//期待の親設定ノード名 tmpl.SetParameter(8, "ヌル", log_Reports);//期待の親設定関数名 } if (null != parent_Ec) { tmpl.SetParameter(9, parent_Ec.Cur_Configuration.Name, log_Reports);//実際の親Expression要素ノード名 tmpl.SetParameter(10, parent_SName_Fnc, log_Reports);//実際の親Expression要素関数名 tmpl.SetParameter(11, parent_Ec.Dictionary_Expression_Attribute.Count.ToString(), log_Reports);//Expression属性の数 StringBuilder s3 = new StringBuilder(); parent_Ec.Dictionary_Expression_Attribute.ForEach( delegate(string sName2, Expression_Node_String e_Attr2, ref bool bBreak) { s3.Append("属" + sName2 + "=”" + e_Attr2.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports) + "”\n"); }); tmpl.SetParameter(12, s3.ToString(), log_Reports);//子Expression属性リスト tmpl.SetParameter(13, parent_Ec.List_Expression_Child.Count.ToString(), log_Reports);//子Expression要素数 StringBuilder s4 = new StringBuilder(); parent_Ec.List_Expression_Child.ForEach( delegate(Expression_Node_String e_Child, ref bool bRemove, ref bool bBreak) { s4.Append("子「S■" + e_Child.Cur_Configuration.Name + "」\n"); }); tmpl.SetParameter(14, s4.ToString(), log_Reports);//子Expression要素リスト } else { tmpl.SetParameter(9, "ヌル", log_Reports);//実際の親Expression要素ノード名 tmpl.SetParameter(10, "ヌル", log_Reports);//実際の親Expression要素関数名 tmpl.SetParameter(11, "ヌル", log_Reports);//Expression属性の数 tmpl.SetParameter(12, "ヌル", log_Reports);//子Expression属性リスト tmpl.SetParameter(13, "ヌル", log_Reports);//子Expression要素数 tmpl.SetParameter(14, "ヌル", log_Reports);//子Expression要素リスト } tmpl.SetParameter(15, Log_RecordReportsImpl.ToText_Configuration(parent_Ec.Cur_Configuration), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7023;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_NullParent: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7004;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
private void ParseChild_SpecialFnc_( Configurationtree_Node cur_Cf, Expression_Node_String cur_Ec,//「S■fnc」、や「S■event」か? MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_Special_",log_Reports); // // if (!log_Reports.Successful) { goto gt_EndMethod; } // // // // 子 // // // cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak) { if (log_Reports.Successful) { if (NamesNode.S_ARG == s_Child.Name) { //━━━━━ // arg //━━━━━ string sName_MyFnc; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, false, log_Reports); string sName_ChildFnc; s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_ChildFnc, false, log_Reports); // bool bNormalize = false; if( // 親が「E■fnc」 NamesNode.S_FNC == cur_Ec.Cur_Configuration.Name && NamesFnc.S_CELL == sName_MyFnc ) { if ( // 子が「name=”select”」 PmNames.S_SELECT.Name_Pm == sName_ChildFnc ) { bNormalize = true; } } if (bNormalize) { ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl(); to.Translate( s_Child, cur_Ec,//「E■fnc」とか memoryApplication, pg_ParsingLog, log_Reports ); } else { string sValue = ""; // // value=”” 属性が指定されていれば、その値をそのまま取得。 // s_Child.Dictionary_Attribute.ForEach(delegate(string sPmName2, string sAttrValue2, ref bool bBreak2) { if (PmNames.S_VALUE.Name_Pm == sPmName2) { // value属性が指定されていた場合。 s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, true, log_Reports); // 「E■arg1」は作らずに、親要素の属性として追加。 Expression_Node_String e_Value = new Expression_Leaf_StringImpl(sValue, cur_Ec, cur_Ec.Cur_Configuration); cur_Ec.SetAttribute(sName_ChildFnc, e_Value, log_Reports); } }); // // 子要素の有無。 // if (0 < s_Child.List_Child.Count) { // 子要素が指定されている場合。 if ("" != sValue) { // value属性が指定されているのに、子要素も指定されているのは、エラーです。 if (log_Method.CanError()) { log_Method.WriteError_ToConsole( " value属性が指定されているのに、子要素も指定されているのは、エラーです。"); } } else { Expression_Node_StringImpl ec_Value = new Expression_Node_StringImpl(cur_Ec, s_Child); ConfigurationtreeToExpression_F14_FncImpl_ to2 = new ConfigurationtreeToExpression_F14_FncImpl_(); to2.ParseChild_SpecialFnc_( s_Child, ec_Value, memoryApplication, pg_ParsingLog, log_Reports ); // // 「E■arg1」は作らずに、親要素の属性として追加。 // cur_Ec.SetAttribute(sName_ChildFnc, ec_Value, log_Reports); } } else { if ("" == sValue) { // todo: throw new Exception(Info_ConfigurationtreeToExpression.Name_Library + ":" + this.GetType().Name + "#ParseChild:(3) 「S■[" + cur_Cf.Name + "]」の子要素「S■[" + s_Child.Name + "]」に、value属性がありませんでした。子要素もありませんでした。"); } } } } else if (NamesNode.S_F_VAR == s_Child.Name) { //━━━━━ // f-var //━━━━━ //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(b)f-var 使っていなければ廃止したい。"); // 親要素「S■fnc」の子要素として追加します。 ConfigurationtreeToExpression_F14_FvariableImpl_ to = new ConfigurationtreeToExpression_F14_FvariableImpl_(); to.Translate( s_Child, cur_Ec,//「E■fnc」とか memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesNode.S_F_STR == s_Child.Name) { //━━━━━ // f-str //━━━━━ //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(c)f-str 使っていなければ廃止したい。"); // 親要素「S■fnc」の子要素として追加します。 ConfigurationtreeToExpression_F14_FstrImpl_ to = new ConfigurationtreeToExpression_F14_FstrImpl_(); to.Translate( s_Child, cur_Ec,//「E■fnc」とか memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesNode.S_FNC == s_Child.Name) { //━━━━━ // fnc //━━━━━ //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(e)fnc 使っていなければ廃止したい。"); // // S_FVarImpl (「S■f-var」)など。 // 【追加 2012-05-31】 // // 親要素「S■fnc」の子要素として追加します。 pg_ParsingLog.Increment("(SToE_F_4FFncImpl②)"); ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FncImpl_(); to.Translate( s_Child,// s_Fnc,//※s_Node(「S■f-var」とか)を入れるのではなく、その親を入れます。 cur_Ec,//「E■fnc」とかか? memoryApplication, pg_ParsingLog, log_Reports ); pg_ParsingLog.Decrement(); } else if (NamesNode.S_F_PARAM == s_Child.Name) { //━━━━━ // f-param //━━━━━ //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#ParseChild:(f)f-param 使っていなければ廃止したい。"); // 【追加 2012-06-05】 ConfigurationtreeToExpression_F14_FparamImpl_ to4 = new ConfigurationtreeToExpression_F14_FparamImpl_(); to4.Translate( s_Child, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else { // todo:2 goto gt_Error_UndefinedChlid; throw new Exception(Info_ConfigurationtreeToExpression.Name_Library + ":" + this.GetType().Name + "#ParseChild:(16) 「S■[" + cur_Cf.Name + "]」に、未定義の子要素「S■[" + s_Child.Name + "]」がありました。"); } } goto gt_EndMethod2; // gt_Error_UndefinedChlid: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, s_Child.Name, log_Reports);//子要素名 tmpl.SetParameter(3, cur_Cf.Dictionary_Attribute.Count.ToString(), log_Reports);//string属性の数 //string属性のリスト StringBuilder s1 = new StringBuilder(); cur_Cf.Dictionary_Attribute.ForEach(delegate(string sKey2, string sValue2, ref bool bBreak2) { s1.Append("s属 [" + sKey2 + "]=[" + sValue2 + "]\n"); }); tmpl.SetParameter(4, s1.ToString(), log_Reports); tmpl.SetParameter(5, cur_Cf.List_Child.Count.ToString(), log_Reports);//子要素の数 //子要素のリスト StringBuilder s2 = new StringBuilder(); cur_Cf.List_Child.ForEach( delegate(Configurationtree_Node cf_Child2, ref bool bBreak5) { s2.Append("子「S■" + cf_Child2.Name + "」\n"); }); tmpl.SetParameter(6, s2.ToString(), log_Reports); tmpl.SetParameter(7, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7005;", tmpl, log_Reports); } goto gt_EndMethod2; gt_EndMethod2: ; }); goto gt_EndMethod; // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// S → E /// /// データソース、 /// データターゲット、 /// <view> /// の3つを変換。 /// </summary> /// <param oNodeName="sList_Name_Control"></param> /// <param oNodeName="s_FcConfig"></param> /// <param oNodeName="moOpyopyo"></param> /// <param oNodeName="log_Reports"></param> public void Translate( List <string> sList_Name_Control, Configurationtree_Node cf_FcConfig, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { //throw new Exception(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: このメソッドは廃止方針です。"); // // // // デバッグ開始 // // // Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE_DsrcDtrg", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(1)データソース・データターゲット・SSR"); } // // // // string sName_Usercontrol; if (log_Reports.Successful) { // 正常時 foreach (string sFcName in sList_Name_Control) { // コントロール名。 Expression_Node_StringImpl ec_FcName = new Expression_Node_StringImpl(null, cf_FcConfig); ec_FcName.AppendTextNode( sFcName, cf_FcConfig, log_Reports ); // コントロール名の指定は、1件のみと想定。 List <Usercontrol> list_Usercontrol = memoryApplication.MemoryForms.GetUsercontrolsByName( ec_FcName, true, log_Reports ); Usercontrol fcUc; if (list_Usercontrol.Count < 1) { sName_Usercontrol = sFcName; goto gt_Error_NotFoundUsercontrol; } else { fcUc = list_Usercontrol[0]; } Configurationtree_Node cf_Control = fcUc.ControlCommon.Configurationtree_Control; if (null == cf_Control) { // // O_コントロール要素を新規作成。 cf_Control = new Configurationtree_NodeImpl(NamesNode.S_CONTROL1, cf_FcConfig); fcUc.ControlCommon.Configurationtree_Control = cf_Control; } else { // // O_コントロール要素は既存。 } // // コントロール名。 fcUc.ControlCommon.Configurationtree_Control.Dictionary_Attribute.Set(PmNames.S_NAME.Name_Pm, sFcName, log_Reports); ConfigurationtreeToExpression_F11_ControlImpl_ to0 = new ConfigurationtreeToExpression_F11_ControlImpl_(); to0.Translate( cf_Control, fcUc.ControlCommon.Expression_Control, memoryApplication, pg_ParsingLog, log_Reports ); } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundUsercontrol: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Usercontrol, log_Reports); //コントロール名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_FcConfig), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7001;", tmpl, log_Reports); } // 処理を中断。 goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement("データソース・データターゲット・SSR"); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 例えば ("access","from")と指定すれば、 /// 指定リストの要素の中で 「~ access=”from,to”」 といった属性を持つものはヒットする。 /// /// 選択アイテムをリストから除外するなら bRemove=true にします。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request_Items"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static List<Configurationtree_Node> SelectItemsBySAttrAsCsv( List<Configurationtree_Node> items, PmName pmName/*string sName_Attr*/, string sValue_Expected, bool bRemove, EnumHitcount hits, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, "Util_XmlToConfigurationtree_NodeImpl", "SelectItemsBySAttrAsCsv",log_Reports); List<Configurationtree_Node> cfList_Result = new List<Configurationtree_Node>(); for (int nI = 0; nI < items.Count; nI++ ) { Configurationtree_Node cf_Item = items[nI]; if (log_Reports.Successful) { string sValue_Attr; bool bHit = cf_Item.Dictionary_Attribute.TryGetValue(pmName, out sValue_Attr, false, log_Reports); if (bHit) { CsvTo_ListImpl to = new CsvTo_ListImpl(); List<string> sList_Value = to.Read(sValue_Attr); if (sList_Value.Contains(sValue_Expected)) { cfList_Result.Add(cf_Item); if (bRemove) { // 削除 items.RemoveAt(nI); nI--; } if (EnumHitcount.First_Exist == hits || EnumHitcount.First_Exist_Or_Zero == hits) { // 最初の1件で削除は終了。複数件ヒットするかどうかは判定しない。 break; } } } } } //ystem.Console.WriteLine(Info_Forms.LibraryName + ":EUtil_NodeImpl.GetItemsByAttrAsCsv: 直後 list_Result.Count=[" + list_Result.Count + "]"); if (EnumHitcount.One == hits) { // 必ず1件だけヒットする想定。 if (cfList_Result.Count != 1) { goto gt_errorNotOne; } } else if (EnumHitcount.First_Exist == hits) { // 必ずヒットする。複数件あれば、最初の1件だけ取得。 if (0 == cfList_Result.Count) { goto gt_errorNoHit; } else if (1 < cfList_Result.Count) { cfList_Result.RemoveRange(1, cfList_Result.Count - 1); } } else if (EnumHitcount.First_Exist_Or_Zero == hits) { // ヒットすれば最初の1件だけ、ヒットしなければ0件の想定。 if (1 < cfList_Result.Count) { cfList_Result.RemoveRange(1, cfList_Result.Count - 1); } } else { } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_errorNoHit: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cfList_Result.Count.ToString(), log_Reports);//検索ヒット数 memoryApplication.CreateErrorReport("Er:8002;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_errorNotOne: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cfList_Result.Count.ToString(), log_Reports);//検索ヒット数 memoryApplication.CreateErrorReport("Er:8003;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion gt_EndMethod: return cfList_Result; }
//──────────────────────────────────────── public void ParseChild_InConfigurationtreeToExpression( Configurationtree_Node cur_Conf, //S_NodeList s_curNodeList, Expression_Node_String parent_Expr, //nAcase,nFelemの両方の場合がある。 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_InSToE", log_Reports); // // if (null == parent_Expr) { goto gt_Error_NullNFAelem; } // // 親ノード名、親ファンク名 // string parent_SName_Node = parent_Expr.Cur_Configuration.Name; string parent_SName_Fnc = ""; { EnumHitcount enumHitcount; if (NamesNode.S_FNC == parent_SName_Node) { //todo: enumHitcount = EnumHitcount.One; enumHitcount = EnumHitcount.One_Or_Zero; } else { enumHitcount = EnumHitcount.One_Or_Zero; } log_Reports.Log_Callstack.Push(log_Method, "①"); bool bHit = parent_Expr.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports); log_Reports.Log_Callstack.Pop(log_Method, "①"); } if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("開始┌──┐ s_Curノード名=[" + cur_Conf.Name + "] 子要素数=[" + cur_Conf.List_Child.Count + "]"); } // // // // 子 // // // Configurationtree_Node err_Configurationtree_Node2 = null; cur_Conf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak) { if (!log_Reports.Successful) { // 強制終了。 bBreak = true; return; } string sName_MyNode = s_Child.Name; string sName_MyFnc = ""; { bool bRequired; if (NamesNode.S_ARG == sName_MyNode) { bRequired = true; } else { bRequired = false; } log_Reports.Log_Callstack.Push(log_Method, "②"); s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, bRequired, log_Reports); log_Reports.Log_Callstack.Pop(log_Method, "②"); } if (this.Dictionary_ConfigurationtreeToExpression.ContainsKey(sName_MyNode)) { if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("親「S■[" + parent_SName_Fnc + "] name=”[" + parent_SName_Fnc + "]”」 自「S■[" + sName_MyNode + "] name=”[" + sName_MyFnc + "]”」"); } this.Dictionary_ConfigurationtreeToExpression[sName_MyNode].Translate( s_Child, parent_Expr, memoryApplication, pg_ParsingLog, log_Reports ); } else { // // それ以外、エラー。 // err_Configurationtree_Node2 = s_Child; bBreak = true; } }); // if (null != err_Configurationtree_Node2) { goto gt_Error_UndefinedElement; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullNFAelem: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(parent_Expr.Cur_Configuration), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7010;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedElement: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Configurationtree_Node2.Name, log_Reports); //設定ノード名 tmpl.SetParameter(2, err_Configurationtree_Node2.GetType().Name, log_Reports); //設定ノードのクラス名 tmpl.SetParameter(3, this.Dictionary_ConfigurationtreeToExpression.Count.ToString(), log_Reports); //キーの個数 StringBuilder s1 = new StringBuilder(); foreach (string sKey in this.Dictionary_ConfigurationtreeToExpression.Keys) { s1.Append(sKey); s1.Append(System.Environment.NewLine); } tmpl.SetParameter(4, s1.ToString(), log_Reports);//キーのリスト //設定親ノード名 if (null != parent_Expr) { tmpl.SetParameter(5, parent_Expr.Cur_Configuration.Name, log_Reports); } else { tmpl.SetParameter(5, "ヌル", log_Reports); } tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Configuration(err_Configurationtree_Node2), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7011;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { //d_ParsingLog.Decrement(s_Cur.Name_Node); } log_Method.EndMethod(log_Reports); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole("終了└──┘"); } }
//──────────────────────────────────────── public static Usercontrol GetUsercontrol( Configurationtree_Node cf_CurTree, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, "Util_XmlToConfigurationtree_NodeImpl", "GetUsercontrol",log_Reports); Usercontrol fcUc = null; string sFcName; string err_FcName; // // 対応するコントロール。 List<Usercontrol> list_Usercontrol; { // コントロール名。 Expression_Node_StringImpl ec_String = new Expression_Node_StringImpl(null, memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig); { PmName pmName = PmNames.S_NAME; if (cf_CurTree.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { cf_CurTree.Dictionary_Attribute.TryGetValue(pmName, out sFcName, true, log_Reports); ec_String.AppendTextNode( sFcName, memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig, log_Reports ); } else { // // エラー。 err_FcName = "<コントロール名無し>"; goto gt_Error_NotFoundFc02; } } list_Usercontrol = memoryApplication.MemoryForms.GetUsercontrolsByName( ec_String, true, log_Reports ); } if (list_Usercontrol.Count < 1) { // // エラー。 err_FcName = sFcName; goto gt_Error_NotFoundFc02; } else { fcUc = list_Usercontrol[0]; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundFc02: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_FcName, log_Reports);//関数名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8001;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return fcUc; }
/// <summary> /// レコードセットの削除。 /// </summary> /// <param name="eStorage"></param> /// <param name="log_Reports"></param> public void Remove(Expression_Node_String ec_Storage, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Remove",log_Reports); // // string sStorage = ec_Storage.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports).Trim(); Exception err_Excp; try { this.dictionary_Recordset.Remove(sStorage); // #デバッグ中 System.Console.WriteLine(Info_Expr.Name_Library + ":" + this.GetType().Name + "#Remove: 【レコードセット削除】sName=[" + sStorage + "]"); } catch (Exception ex) { err_Excp = ex; goto gt_Error_Exception; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_Exception: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sStorage, log_Reports);//名前 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(ec_Storage.Cur_Configuration), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:6045;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// <要素名 属性=”☆”> の、属性部分を解析。 /// </summary> /// <param name="x_Cur"></param> /// <param name="s_Cur"></param> /// <param name="memoryApplication"></param> /// <param name="log_Reports"></param> protected virtual void Parse_SAttribute( XmlElement cur_X, Configurationtree_Node cur_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports ) { // // // //()メソッド開始 // // // Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "Parse_SAttr",log_Reports); // // // //()全属性解析 // // // XmlAttribute err_XAttr = null; foreach (XmlAttribute xAttr in cur_X.Attributes) { if (this.List_SName_Attribute.Contains(xAttr.Name)) { // ① PmName pmName = PmNames.FromSAttribute(xAttr.Name); if (null != pmName) { cur_Cf.Dictionary_Attribute.Add(pmName.Name_Pm, xAttr.Value, cur_Cf, true, log_Reports); } else { // エラー err_XAttr = xAttr; goto gt_Error_UndefinedAttr; //// 【廃止方針】 //if (log_Method.CanInfo()) //{ // log_Method.WriteInfo_ToConsole("廃止方針のAdd([" + x_Attr.Name + "], [" + x_Attr.Value + "])"); //} //throw new Exception("廃止方針のAdd([" + x_Attr.Name + "], [" + x_Attr.Value + "])"); //s_Cur.Dictionary_Attribute.Add(x_Attr.Name, x_Attr.Value, s_Cur, true, log_Reports); } } else { err_XAttr = xAttr; goto gt_Error_UndefinedAttr; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_UndefinedAttr: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_X.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, err_XAttr.Name, log_Reports);//属性名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8008;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf, //「S■fnc name=”Sf:f-list-box-labels;”」 Expression_Node_String parent_Expr, //「E■view」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { } // // // // 自 // // // Expression_Node_String cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Cf); // // // // 属性 // // // this.ParseAttr_InConfigurationtreeToExpression( cur_Cf, cur_Expr, true, true, log_Reports ); // // // // 子 // // // cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node child_Cf, ref bool bBreak2) { string sName_Fnc; child_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole(" 子解析。 <~ name=”[" + sName_Fnc + "]”>"); } // todo: Sf:item-value; if (NamesFnc.S_ITEM_VALUE == sName_Fnc) { // // 自 // Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf); // // 属性 // this.ParseAttr_InConfigurationtreeToExpression( child_Cf, child_Expr, true, true, log_Reports ); // // 子 // this.ParseChild_InConfigurationtreeToExpression( child_Cf, child_Expr, memoryApplication, pg_ParsingLog, log_Reports ); // // 親 // cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports); } else if (NamesFnc.S_ITEM_LABEL2 == sName_Fnc) { // // 自 // Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf); // // 属性 // this.ParseAttr_InConfigurationtreeToExpression( child_Cf, child_Expr, true, true, log_Reports ); // // 子 // this.ParseChild_InConfigurationtreeToExpression( child_Cf, child_Expr, memoryApplication, pg_ParsingLog, log_Reports ); // // 親 // cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports); } else if (NamesFnc.S_ITEM_GRAY_OUT == sName_Fnc) { // // 自 // Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf); // // 属性 // this.ParseAttr_InConfigurationtreeToExpression( child_Cf, child_Expr, true, true, log_Reports ); // // 子 // this.ParseChild_InConfigurationtreeToExpression( child_Cf, child_Expr, memoryApplication, pg_ParsingLog, log_Reports ); // // 親 // cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports); } else { { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, child_Cf.Name, log_Reports);//子設定ノード名 memoryApplication.CreateErrorReport("Er:7019;", tmpl, log_Reports); } bBreak2 = true; goto gt_gt_EndMethod2; } goto gt_gt_EndMethod2; // // // // gt_gt_EndMethod2: ; }); // // // // 親へ連結 // // // parent_Expr.List_Expression_Child.Add(cur_Expr, log_Reports); // log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 必須属性の有無テスト。 /// </summary> /// <param name="x_Cur"></param> /// <param name="s_Cur"></param> /// <param name="log_Reports"></param> protected virtual void Test_Attributes(XmlElement cur_X, Configurationtree_Node cur_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports) { // // // //()メソッド開始 // // // Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "Test_Attributes",log_Reports); // // 必須属性の有無テスト // string err_SName_Attr; if (null != this.List_SName_RequiredPm) { foreach (string sName_Attr in this.List_SName_RequiredPm) { if (!cur_Cf.Dictionary_Attribute.ContainsKey(sName_Attr)) { // エラー。 err_SName_Attr = sName_Attr; goto gt_Error_NothingAttr; } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NothingAttr: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_X.Name, log_Reports);//要素名 tmpl.SetParameter(2, err_SName_Attr, log_Reports);//属性名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8009;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void XmlToConfigurationtree( XmlElement cur_X,//<event> Configurationtree_Node parent_Cf,//<control> MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports); // // // // // // 自 // // // Configurationtree_Node cur_Cf = this.CreateMyself(cur_X, parent_Cf, memoryApplication, log_Reports); // // // // 属性 // // // this.Parse_SAttribute(cur_X, cur_Cf, memoryApplication, log_Reports); // // // // 子 // // // XmlElement err_XAction; Exception err_Excp; if (log_Reports.Successful) { // // // actionノードを列挙 // XmlNodeList child_XNl = cur_X.ChildNodes; foreach(XmlNode xChild in child_XNl) { if (XmlNodeType.Element == xChild.NodeType) { XmlElement xAction = (XmlElement)xChild; try { XmlToConfigurationtree_C15_Elm to = this.Dic_XmlToConfigurationtree[xChild.Name]; to.XmlToConfigurationtree( xAction, cur_Cf, memoryApplication, log_Reports ); } catch(KeyNotFoundException e) { err_XAction = xAction; err_Excp = e; goto gt_Error_NotFound; } catch (Exception e) { err_Excp = e; goto gt_Error_Excp; } } } } // // // // 親へ連結 // // // if (log_Reports.Successful) { parent_Cf.List_Child.Add(cur_Cf, log_Reports); } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFound: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_XAction.Name, log_Reports);//ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:8023;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Excp: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:8024;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public virtual void Translate_Step1( ConfigurationtreeToFunction_Item parentProcesser, Configurationtree_Node action_Conf, Expression_Node_Function cur_Expr_Func, MemoryApplication owner_MemoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Translate_Step1",log_Reports); // // アクション型引数の引数 // string err_sName_Attr; action_Conf.List_Child.ForEach(delegate(Configurationtree_Node s_Arg, ref bool bBreak) { string sName_Attr; s_Arg.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Attr, true, log_Reports); if (cur_Expr_Func.ContainsName_ArgumentDefinition(sName_Attr,log_Reports)) { // // 自解析 // ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl(); to.Translate( s_Arg, cur_Expr_Func, owner_MemoryApplication, pg_ParsingLog, log_Reports ); } else { // エラー err_sName_Attr = sName_Attr; goto gt_Error_UndefinedArgName; } goto gt_EndMethod2; // // gt_Error_UndefinedArgName: bBreak = true; { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_sName_Attr, log_Reports);//引数名 tmpl.SetParameter(2, cur_Expr_Func.ToString_ListNameargumentDefinition_ForReport(), log_Reports);//引数名リスト owner_MemoryApplication.CreateErrorReport("Er:110001;", tmpl, log_Reports); } // gt_EndMethod2: ; }); goto gt_EndMethod; gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public static Usercontrol GetUsercontrol( Configurationtree_Node cf_CurTree, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, "Util_XmlToConfigurationtree_NodeImpl", "GetUsercontrol", log_Reports); Usercontrol fcUc = null; string sFcName; string err_FcName; // // 対応するコントロール。 List <Usercontrol> list_Usercontrol; { // コントロール名。 Expression_Node_StringImpl ec_String = new Expression_Node_StringImpl(null, memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig); { PmName pmName = PmNames.S_NAME; if (cf_CurTree.Dictionary_Attribute.ContainsKey(pmName.Name_Pm)) { cf_CurTree.Dictionary_Attribute.TryGetValue(pmName, out sFcName, true, log_Reports); ec_String.AppendTextNode( sFcName, memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig, log_Reports ); } else { // // エラー。 err_FcName = "<コントロール名無し>"; goto gt_Error_NotFoundFc02; } } list_Usercontrol = memoryApplication.MemoryForms.GetUsercontrolsByName( ec_String, true, log_Reports ); } if (list_Usercontrol.Count < 1) { // // エラー。 err_FcName = sFcName; goto gt_Error_NotFoundFc02; } else { fcUc = list_Usercontrol[0]; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundFc02: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_FcName, log_Reports); //関数名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(memoryApplication.MemoryValidators.Configurationtree_Validatorsconfig), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8001;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(fcUc); }
//──────────────────────────────────────── /// <summary> /// 実行。 /// /// 指定のコントロールの、指定のイベントを実行します。 /// </summary> /// <param name="oEventName"></param> /// <param name="oEventName"></param> /// <param name="log_Reports"></param> private void Execute1b( object sender, string name_ExpectedUsercontrol, string sEventName, MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute2", log_Reports); // // Usercontrol foundUsercontrol = null; owner_MemoryApplication.MemoryForms.ForEach_Children(delegate(string sKey, Usercontrol curUsercontrol, ref bool bRemove, ref bool bBreak) { string name_CurUsercontrol = curUsercontrol.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports ); //.WriteLine(this.GetType().Name + "#: ■■コントロール=[" + fcUc.ControlCommon.Name.Value + "] イベント数=[" + fcUc.ControlCommon.OEvents.Items.Count + "]"); if (name_ExpectedUsercontrol == name_CurUsercontrol) { foundUsercontrol = curUsercontrol; //.WriteLine(this.GetType().Name + "#: ■■コントロール=[" + fcNameStr2 + "] イベント数=[" + fcUc.ControlCommon.OFcnfControl.OEvents.Count + "]"); Configurationtree_Node hitEvent_Cnf = null; List<Configurationtree_Node> list_EventCnf = curUsercontrol.ControlCommon.Configurationtree_Control.GetChildrenByNodename(NamesNode.S_EVENT, false, log_Reports); foreach (Configurationtree_Node event_Cnf in list_EventCnf) { string name_Fnc; event_Cnf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out name_Fnc, false, log_Reports); if (name_Fnc == sEventName) { hitEvent_Cnf = event_Cnf; } } if (null != hitEvent_Cnf) { // // 最初の<event>要素 // Executer2_EventImpl exe1 = new Executer2_EventImpl(); exe1.Execute2_Event( sender, hitEvent_Cnf, owner_MemoryApplication, log_Reports ); } else { string sFcName3 = curUsercontrol.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports ); { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sFcName3, log_Reports);//コントロール名 tmpl.SetParameter(2, sEventName, log_Reports);//イベント名 owner_MemoryApplication.CreateErrorReport("Er:110027;", tmpl, log_Reports); } } }//nFcName_prm }); //loop_end: //.WriteLine(this.GetType().Name + "#: 【アクション_パフォーマー終了】"); if (null == foundUsercontrol) { goto gt_Error_NotFoundUsercontrol; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundUsercontrol: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, name_ExpectedUsercontrol, log_Reports);//コントロール名 owner_MemoryApplication.CreateErrorReport("Er:110028;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 「.xml」(Fcnf)ファイルの、<control>要素の、oNodeName(コントロール名)のリスト。記述順。 /// </summary> /// <returns></returns> public List <string> GetList_NameControl( string sName_Control, string sHiFpath_ControlFile, string sFpatha_Fcnf, Configurationtree_Node cf_FcConfig, Expression_Node_Filepath ec_Fopath_Forms, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "GetList_NameControl", log_Reports); // // XmlDocument xDoc = null; List <string> sList = new List <string>(); Exception err_Excp = null; if (log_Reports.Successful) { // 正常時 xDoc = new System.Xml.XmlDocument(); try { xDoc.Load(sFpatha_Fcnf); } catch (System.IO.IOException ex) { // // エラー。 err_Excp = ex; goto gt_Error_IoException; } catch (System.Xml.XmlException ex) { // // エラー。 err_Excp = ex; goto gt_Error_XmlException01; } } XmlElement xError = null; if (log_Reports.Successful) { // 正常時 try { // // コントロール自体は、Aa_Forms.csvを読み取って // 既に追加済みです。 // // ルート要素を取得 System.Xml.XmlElement xRoot = xDoc.DocumentElement; // // <control>要素を読取 // if (NamesNode.S_CONTROL1 == xRoot.Name) { // ルート要素が<control> // コントロール名をリストに追加。 sList.Add(sName_Control); } else { // // <control>要素を列挙 // XmlNodeList xTopNL = xRoot.ChildNodes; foreach (XmlNode xTopNode in xTopNL) { if (XmlNodeType.Element == xTopNode.NodeType) { XmlElement xTop = (XmlElement)xTopNode; if (NamesNode.S_CONTROL1 == xTop.Name) { // コントロール名をリストに追加。 sList.Add(sName_Control); } else { // // エラー。 xError = xTop; goto gt_Error_UndefinedChildElement; } } } } } catch (System.Xml.XmlException ex) { // // エラー。 err_Excp = ex; goto gt_Error_XmlException02; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_IoException: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Control, log_Reports); //コントロール名 tmpl.SetParameter(2, ec_Fopath_Forms.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports); //Formsフォルダーパス tmpl.SetParameter(3, sHiFpath_ControlFile, log_Reports); //コントロール設定ファイルパス(入力ママ) tmpl.SetParameter(4, sFpatha_Fcnf, log_Reports); //コントロール設定ファイルパス(Formsフォルダーと結合後) tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ memoryApplication.CreateErrorReport("Er:8004;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_XmlException01: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:8005;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedChildElement: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, NamesNode.S_CONTROL1, log_Reports); //期待するノード名 tmpl.SetParameter(2, xError.Name, log_Reports); //含まれていたノード名 memoryApplication.CreateErrorReport("Er:8006;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_XmlException02: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:8007;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return(sList); }
private void ParseChild_SpecialTextTemplate_( Configurationtree_Node cur_Cf, Expression_Node_String owner_Ec, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_Special_",log_Reports); // // // // // // データ_ソース、データ_ターゲット、<fnc >の子要素。 string sName_OwnerNode = owner_Ec.Cur_Configuration.Name; string sName_OwnerFnc = ""; { EnumHitcount enumHitcount; if (NamesNode.S_FNC == sName_OwnerNode //|| //NamesNode.S_F_TEXT_TEMPLATE2 == sOwnerNodeName ) { enumHitcount = EnumHitcount.One; } else { enumHitcount = EnumHitcount.One_Or_Zero; } bool bHit = owner_Ec.TrySelectAttribute(out sName_OwnerFnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports); } // // // // 子 // // // string err_SAtFncName; Configurationtree_Node err_Cf_AtElm; Exception err_E; cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node cf_Child, ref bool bBreak) { if (log_Reports.Successful) { if (null == cf_Child) { bBreak = true; goto gt_errorNullValue; } else { string sName_AtNode = cf_Child.Name; string sName_AtFnc = ""; { bool bRequired; if ( NamesNode.S_FNC == sName_AtNode || NamesNode.S_ARG == sName_AtNode ) { // 「S■fnc」 // 「S■arg」 bRequired = true; } else { bRequired = false; } cf_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_AtFnc, bRequired, log_Reports); } if (NamesNode.S_ARG == sName_AtNode) { // 「S■arg」 int nP1p; bool bP1pNameSuccessful = Utility_TexttemplateP1p.TryParseName(sName_AtFnc, out nP1p); if (bP1pNameSuccessful) { // // 例: <attribute name=”p1p”> ConfigurationtreeToExpression_F16_P1pImpl_ to = new ConfigurationtreeToExpression_F16_P1pImpl_(); // Sf:case;文はここには来ない。 to.NP1p = nP1p; to.Translate( cf_Child, owner_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else if ( NamesFnc.S_TEXT_TEMPLATE == sName_OwnerFnc && //NamesNode.S_F_TEXT_TEMPLATE2 == sOwnerNodeName && PmNames.S_TABLE.Name_Pm == sName_AtFnc ) { // 【追加 2012-06-05】 // <fnc name=”Sf:text-template;”> // <arg name=”table” value=”~”> // 旧仕様? // 「S■f-text-template name=””」 // 「S■table name=””」 if (log_Method.CanDebug(2)) { log_Method.WriteDebug_ToConsole("テキストテンプレートのテーブル属性。親要素「S■[" + sName_OwnerNode + "] name=”[" + sName_OwnerFnc + "]”」 自要素「[" + sName_AtNode + "] name=”[" + sName_AtFnc + "]”」 子要素数=[" + cf_Child.List_Child.Count + "] string属性数=[" + cf_Child.Dictionary_Attribute.Count + "] S_Elm属性数=[" + cf_Child.Dictionary_Attribute.Count + "]"); } // // // 自 // // string sValue; cf_Child.Dictionary_Attribute.TryGetValue(PmNames.S_VALUE, out sValue, true, log_Reports); Expression_Node_String ec_Tbl = new Expression_Node_StringImpl(owner_Ec, cf_Child); ec_Tbl.AppendTextNode( sValue, cf_Child, log_Reports ); owner_Ec.SetAttribute( PmNames.S_TABLE.Name_Pm, ec_Tbl, log_Reports ); // 無視します。 goto gt_nextAttr; } else if (this.Dic_B.ContainsKey(sName_AtFnc)) { // キー有り。 ConfigurationtreeToExpression_F14n16 to = this.Dic_B[sName_AtFnc]; to.Translate( cf_Child, owner_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } else { // キー無し。 err_Cf_AtElm = cf_Child; err_SAtFncName = sName_AtFnc; err_E = null; goto gt_Error_KeyNotFound_Arg3; } } else { ConfigurationtreeToExpression_F14n16 to; if (this.Dic_B.ContainsKey(sName_AtNode))//todo:ノード名と比べるのはおかしい? { // キー有り。 to = this.Dic_B[sName_AtNode]; } else { // キー無し。 err_Cf_AtElm = cf_Child; err_E = null; goto gt_Error_KeyNotFound1; } to.Translate( cf_Child, owner_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // <a-case>要素は、次のループで。 } } goto gt_nextAttr; // // // // gt_errorNullValue: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_Child), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7007;", tmpl, log_Reports); } goto gt_nextAttr; gt_Error_KeyNotFound_Arg3: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Cf_AtElm.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, err_SAtFncName, log_Reports);//関数名 tmpl.SetParameter(3, err_Cf_AtElm.GetType().Name, log_Reports);//関数のクラス名 tmpl.SetParameter(4, sName_OwnerNode, log_Reports);//親設定ノード名 tmpl.SetParameter(5, sName_OwnerFnc, log_Reports);//親設定関数名 tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Configuration(err_Cf_AtElm), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(7, Log_RecordReportsImpl.ToText_Exception(err_E), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:7008;", tmpl, log_Reports); } goto gt_nextAttr; gt_Error_KeyNotFound1: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Cf_AtElm.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, err_Cf_AtElm.GetType().Name, log_Reports);//設定ノードのクラス名 tmpl.SetParameter(3, sName_OwnerNode, log_Reports);//親設定ノード名 tmpl.SetParameter(4, sName_OwnerFnc, log_Reports);//親設定関数名 tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Configuration(err_Cf_AtElm), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Exception(err_E), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:7009;", tmpl, log_Reports); } goto gt_nextAttr; gt_nextAttr: ; }); goto gt_EndMethod; gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void Translate( Configurationtree_Node cur_Cf,//「S■fnc name=”Sf:f-list-box-labels;”」 Expression_Node_String parent_Expr,//「E■view」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { } // // // // 自 // // // Expression_Node_String cur_Expr = new Expression_Node_StringImpl(parent_Expr, cur_Cf); // // // // 属性 // // // this.ParseAttr_InConfigurationtreeToExpression( cur_Cf, cur_Expr, true, true, log_Reports ); // // // // 子 // // // cur_Cf.List_Child.ForEach(delegate( Configurationtree_Node child_Cf, ref bool bBreak2) { string sName_Fnc; child_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole( " 子解析。 <~ name=”[" + sName_Fnc + "]”>"); } // todo: Sf:item-value; if(NamesFnc.S_ITEM_VALUE == sName_Fnc) { // // 自 // Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf); // // 属性 // this.ParseAttr_InConfigurationtreeToExpression( child_Cf, child_Expr, true, true, log_Reports ); // // 子 // this.ParseChild_InConfigurationtreeToExpression( child_Cf, child_Expr, memoryApplication, pg_ParsingLog, log_Reports ); // // 親 // cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports); } else if (NamesFnc.S_ITEM_LABEL2 == sName_Fnc) { // // 自 // Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf); // // 属性 // this.ParseAttr_InConfigurationtreeToExpression( child_Cf, child_Expr, true, true, log_Reports ); // // 子 // this.ParseChild_InConfigurationtreeToExpression( child_Cf, child_Expr, memoryApplication, pg_ParsingLog, log_Reports ); // // 親 // cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports); } else if (NamesFnc.S_ITEM_GRAY_OUT == sName_Fnc) { // // 自 // Expression_Node_String child_Expr = new Expression_Node_StringImpl(cur_Expr, child_Cf); // // 属性 // this.ParseAttr_InConfigurationtreeToExpression( child_Cf, child_Expr, true, true, log_Reports ); // // 子 // this.ParseChild_InConfigurationtreeToExpression( child_Cf, child_Expr, memoryApplication, pg_ParsingLog, log_Reports ); // // 親 // cur_Expr.List_Expression_Child.Add(child_Expr, log_Reports); } else { { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, child_Cf.Name, log_Reports);//子設定ノード名 memoryApplication.CreateErrorReport("Er:7019;", tmpl, log_Reports); } bBreak2 = true; goto gt_gt_EndMethod2; } goto gt_gt_EndMethod2; // // // // gt_gt_EndMethod2: ; }); // // // // 親へ連結 // // // parent_Expr.List_Expression_Child.Add(cur_Expr, log_Reports); // log_Method.EndMethod(log_Reports); }
public void TryGetInt( out int out_NValue, string sName, bool bRequired, int nAlt, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "TryGetInt", log_Reports); // if (!this.Dictionary_Field.ContainsKey(sName)) { //該当なし。 if (bRequired) { out_NValue = -1; goto gt_Error_NotFound; } else { out_NValue = nAlt; goto gt_EndMethod; } } FieldUserformtable fo_Field = this.Dictionary_Field[sName]; if (EnumTypedb.Int != fo_Field.EnumTypedb) { //型が異なる。 if (bRequired) { out_NValue = -1; goto gt_Error_Type; } else { out_NValue = nAlt; goto gt_EndMethod; } } out_NValue = (int)fo_Field.Data; goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFound: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//フィールド名 memoryApplication.CreateErrorReport("Er:6001;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Type: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports); //フィールド名 tmpl.SetParameter(2, fo_Field.EnumTypedb.ToString(), log_Reports); //フィールドの型名 memoryApplication.CreateErrorReport("Er:6002;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void XmlToConfigurationtree( XmlElement cur_X, //<event> Configurationtree_Node parent_Cf, //<control> MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports); // // // // // // 自 // // // Configurationtree_Node cur_Cf = this.CreateMyself(cur_X, parent_Cf, memoryApplication, log_Reports); // // // // 属性 // // // this.Parse_SAttribute(cur_X, cur_Cf, memoryApplication, log_Reports); // // // // 子 // // // XmlElement err_XAction; Exception err_Excp; if (log_Reports.Successful) { // // // actionノードを列挙 // XmlNodeList child_XNl = cur_X.ChildNodes; foreach (XmlNode xChild in child_XNl) { if (XmlNodeType.Element == xChild.NodeType) { XmlElement xAction = (XmlElement)xChild; try { XmlToConfigurationtree_C15_Elm to = this.Dic_XmlToConfigurationtree[xChild.Name]; to.XmlToConfigurationtree( xAction, cur_Cf, memoryApplication, log_Reports ); } catch (KeyNotFoundException e) { err_XAction = xAction; err_Excp = e; goto gt_Error_NotFound; } catch (Exception e) { err_Excp = e; goto gt_Error_Excp; } } } } // // // // 親へ連結 // // // if (log_Reports.Successful) { parent_Cf.List_Child.Add(cur_Cf, log_Reports); } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFound: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_XAction.Name, log_Reports); //ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ memoryApplication.CreateErrorReport("Er:8023;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Excp: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ memoryApplication.CreateErrorReport("Er:8024;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
private void ParseChild_SpecialSwitch_( Configurationtree_Node cur_Cf,//「S■fnc」 Expression_Node_String owner_Ec,// 「E■fnc」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { // a-●●要素や、switch要素など。 Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_SpecialSwitch_",log_Reports); // // // // // // データ_ソース、データ_ターゲット、<fnc >の子要素。 string sName_OwnerNode = owner_Ec.Cur_Configuration.Name; string sName_OwnerFnc = ""; { EnumHitcount enumHitcount; if (NamesNode.S_FNC == sName_OwnerNode //|| //NamesNode.S_F_TEXT_TEMPLATE2 == sOwnerNodeName ) { enumHitcount = EnumHitcount.One; } else { enumHitcount = EnumHitcount.One_Or_Zero; } bool bHit = owner_Ec.TrySelectAttribute(out sName_OwnerFnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports); } string sName_MyFnc; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, true, log_Reports); // // <f-switch>要素であれば、子Sf:case;要素が何個もある。 // if (log_Reports.Successful) { if (NamesFnc.S_SWITCH == sName_MyFnc) { cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak) { Configurationtree_Node err_CfAttr; if (log_Reports.Successful) { string sName; s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName, true, log_Reports); if ( NamesNode.S_FNC == s_Child.Name && NamesFnc.S_CASE == sName ) { ConfigurationtreeToExpression_F14n16_AbstractImpl_ to = new ConfigurationtreeToExpression_F16_CaseImpl_(); to.Translate( s_Child,//Sf:case; owner_Ec,//Sf:switch; memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesNode.S_ARG == s_Child.Name) { // todo:<arg>。恐らくswitchValueなど。 ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl(); to.Translate( s_Child, owner_Ec,//<f-switch > memoryApplication, pg_ParsingLog, log_Reports ); } else { err_CfAttr = s_Child; bBreak = true; goto gt_Error_NotACase; } } goto gt_EndMethod2; // gt_Error_NotACase: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_CfAttr.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, err_CfAttr.GetType().Name, log_Reports);//ノードのクラス名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(err_CfAttr), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7006;", tmpl, log_Reports); } goto gt_EndMethod2; // gt_EndMethod2: ; }); } } goto gt_EndMethod; gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// イベント アクション リストを作成します。 /// </summary> /// <param nFcName="eventName"></param> /// <param nFcName="nActionSuper"></param> /// <param nFcName="log_Reports"></param> public Functionlist CreateFunctionlist( ConfigurationtreeToExpression_Event sToE_Event, MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method pg_Method = new Log_MethodImpl(); pg_Method.BeginMethod(Info_Controls.Name_Library, this, "CreateFunctionlist",log_Reports); // // Functionlist fw_Result = null; //.WriteLine(this.GetType().Name + "#CreateEventActionList: <構築>【開始】 イベントに対応ついたアクションリストを追加します。 (ピクチャー)"); switch (sToE_Event.Name) { case NamesSe.S_LOAD: { // // このコントロールの「アプリケーション起動時」。 // // (NActionPerformEnum.O_EA) // // // 無視します。 // } break; default: goto gt_Error_NotSupportEvent; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotSupportEvent: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, this.GetType().Name, log_Reports);//クラス名 tmpl.SetParameter(2, sToE_Event.Name, log_Reports);//イベント名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(sToE_Event.Configurationtree_Event), log_Reports);//位置パンくずリスト owner_MemoryApplication.CreateErrorReport("Er:525;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: pg_Method.EndMethod(log_Reports); return fw_Result; }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// X → S /// /// event要素の読取と、処理の実行。 /// </summary> /// <param select="xEvent"></param> /// <param select="fcUc"></param> public void XmlToConfigurationtree( string sName_Control, Configurationtree_Node cf_ControlConfig, XmlElement xControl,//<control>要素。子要素の読取りに利用。 MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XToCf", log_Reports); // // Expression_Node_String ec_Name_Control; XmlElement err_11elm; Exception err_Excp; Configurationtree_Node cur_Cf; if (log_Reports.Successful) { // コントロール名。 ec_Name_Control = new Expression_Node_StringImpl(null, cf_ControlConfig); ec_Name_Control.AppendTextNode( sName_Control, cf_ControlConfig, log_Reports ); List <Usercontrol> list_Usercontrol = owner_MemoryApplication.MemoryForms.GetUsercontrolsByName( ec_Name_Control, true, log_Reports ); Usercontrol uct; if (list_Usercontrol.Count < 1) { // // エラー。 goto gt_Error_NotFoundFc; } else { uct = list_Usercontrol[0]; } //if (null == uct.ControlCommon.Configurationtree_Control) //{ // uct.ControlCommon.Configurationtree_Control = new Configurationtree_NodeImpl(NamesNode.S_CONTROL+"(ヌル時の代替)", cf_ControlConfig); //} // // // // 自 // // // cur_Cf = new Configurationtree_NodeImpl(NamesNode.S_CONTROL1, cf_ControlConfig); //上書きします。 uct.ControlCommon.Configurationtree_Control = cur_Cf; // // コントロール名。 uct.ControlCommon.Configurationtree_Control.Dictionary_Attribute.Add(PmNames.S_NAME.Name_Pm, sName_Control, uct.ControlCommon.Configurationtree_Control, true, log_Reports); // // // // 子 // // // { // <data>、<event>、<view>要素を列挙 XmlNodeList child_XNl = xControl.ChildNodes; foreach (XmlNode child_XNode in child_XNl) { if (XmlNodeType.Element == child_XNode.NodeType) { XmlElement child_XElm = (XmlElement)child_XNode; try { XmlToConfigurationtree_C15_Elm to = this.Dictionary_XmlToConfigurationtree_Elm[child_XElm.Name]; to.XmlToConfigurationtree( child_XElm, cur_Cf, owner_MemoryApplication, log_Reports ); } catch (ArgumentException e) { // // エラー。 err_11elm = child_XElm; err_Excp = e; goto gt_Error_UndefinedChild; } catch (Exception e) { // // エラー。 err_11elm = child_XElm; err_Excp = e; goto gt_Error_Exception03; } } } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundFc: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); string sFcName = ec_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); tmpl.SetParameter(1, sFcName, log_Reports); //コントロール名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cf_ControlConfig), log_Reports); //設定位置パンくずリスト owner_MemoryApplication.CreateErrorReport("Er:8017;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedChild: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); string sFcName = ec_Name_Control.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports); tmpl.SetParameter(1, NamesNode.S_CONTROL1, log_Reports); //期待するノード名 tmpl.SetParameter(2, err_11elm.Name, log_Reports); //実際のノード名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8018;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Exception03: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_11elm.Name, log_Reports); //ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8019;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public void Translate( Configurationtree_Node cur_Cf, Expressionv_3FListboxValidationImpl parent_Exprv, UsercontrolListbox uctLst, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE",log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(35)" + cur_Cf.Name); } // // string err_Child_SName_Node = ""; string err_Parent_SName_Node = ""; Configurationtree_Node err_Child_CfNode = null; // // // // 自 // // // Expressionv_4ADisplayImpl cur_Exprv = new Expressionv_4ADisplayImpl(parent_Exprv, cur_Cf, memoryApplication); // // // // 属性 // // // { { PmName pmName = PmNames.S_TYPE; string sValue; bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports); if (bHit) { cur_Exprv.Dictionary_SAttribute.Add(pmName.Name_Pm, sValue); } } { PmName pmName = PmNames.S_DESCRIPTION; string sValue; bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports); if (bHit) { cur_Exprv.Dictionary_SAttribute.Add(pmName.Name_Pm, sValue); } } } parent_Exprv.List_Expressionv_ADisplay.Add(cur_Exprv); uctLst.AddValidator_FListboxForItems(parent_Exprv, log_Reports); // #デバッグ中 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole(" 子<f-●●>数=[" + cur_Cf.List_Child.Count + "]"); } // // // // 子 // // // cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node child_Cf, ref bool bBreak) { if (child_Cf is Configurationtree_Node) { Configurationtree_Node child_Configurationtree_Node = (Configurationtree_Node)child_Cf; string sName_Fnc; child_Configurationtree_Node.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports); if (NamesFnc.S_VLD_ALL_FIELDS_IS_EMPTY == sName_Fnc) { // // <f-all-fields-is-empty>要素 ConfigurationtreeToExpression_V54_FAllFieldsIsEmptyImpl_ to = new ConfigurationtreeToExpression_V54_FAllFieldsIsEmptyImpl_(); to.Translate( child_Configurationtree_Node, cur_Exprv, memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesFnc.S_ALL_TRUE == sName_Fnc) { // // <f-all-true>要素 ConfigurationtreeToExpression_V54_FAllTrueImpl_ to = new ConfigurationtreeToExpression_V54_FAllTrueImpl_(); to.Translate( child_Configurationtree_Node, cur_Exprv, memoryApplication, pg_ParsingLog, log_Reports ); } else { // // エラー。 err_Child_SName_Node = child_Configurationtree_Node.Name; err_Parent_SName_Node = cur_Cf.Name; err_Child_CfNode = child_Configurationtree_Node; bBreak = true; } } }); if (null != err_Child_SName_Node) { goto undefined_element; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── undefined_element: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Child_SName_Node, log_Reports);//子設定ノード名 tmpl.SetParameter(2, err_Parent_SName_Node, log_Reports);//親設定ノード名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(err_Child_CfNode), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7020;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// システム定義関数の実行。 /// </summary> /// <param name="fc_EventHandler"></param> /// <param name="sender"></param> /// <param name="eventMonitor"></param> /// <param name="log_Reports"></param> public void Execute3_Function( Expression_Node_Function expr_Func, object sender, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute3_Function", log_Reports); if (log_Reports.CanStopwatch) { log_Method.Log_Stopwatch.Begin(); } // // // // string sFncName; expr_Func.TrySelectAttribute(out sFncName, PmNames.S_NAME.Name_Pm, EnumHitcount.One_Or_Zero, log_Reports); // // アクションの実行 // //ystem.Console.WriteLine(this.GetType().Name + "#: 【開始】E_Action実行します。"); if (log_Reports.Successful) { if (null != expr_Func) { if (log_Method.CanWarning()) { log_Method.WriteWarning_ToConsole(" 【実行】イベント=[" + expr_Func.EnumEventhandler + "] システム関数=[" + sFncName + "] "); } switch (expr_Func.EnumEventhandler) { case EnumEventhandler.O_Lr: { expr_Func.Execute4_OnLr( sender, log_Reports ); } break; case EnumEventhandler.O_Ea: { // 変換 OEa → WrRhn。 expr_Func.Execute4_OnLr( sender, log_Reports ); } break; //case EnumEventhandler.O_DEA_P_S_B_WR: // break; default: //エラー goto gt_Error_NotSupportedEnum; } } } else { // // アクションしていない、アクションは終了したという判断。 // } goto gt_EndMethod; // #region 異常系 //──────────────────────────────────────── gt_Error_NotSupportedEnum: // アクションしていない、アクションは終了したという判断。 { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sFncName, log_Reports);//関数名 tmpl.SetParameter(2, expr_Func.EnumEventhandler.ToString(), log_Reports);//イベントハンドラー名 tmpl.SetParameter(3, log_Method.Fullname, log_Reports);//問題のあったメソッド memoryApplication.CreateErrorReport("Er:110029;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // gt_EndMethod: log_Method.EndMethod(log_Reports); }
public void TryGetFilepath_Configurationtree(out Configurationtree_NodeFilepath out_Value, string sName, bool bRequired, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "TryGetFilepath_Configurationtree", log_Reports); // if (!this.Dictionary_Field.ContainsKey(sName)) { //該当なし。 if (bRequired) { out_Value = new Configurationtree_NodeFilepathImpl(log_Method.Fullname, null);//ヌル・オブジェクト。 goto gt_Error_NotFound; } else { out_Value = new Configurationtree_NodeFilepathImpl(log_Method.Fullname, null);//ヌル・オブジェクト。 goto gt_EndMethod; } } FieldUserformtable fo_Field = this.Dictionary_Field[sName]; if (EnumTypedb.ConfFilepath != fo_Field.EnumTypedb) { //型が異なる。 if (bRequired) { out_Value = new Configurationtree_NodeFilepathImpl(log_Method.Fullname, null);//ヌル・オブジェクト。 goto gt_Error_Type; } else { out_Value = new Configurationtree_NodeFilepathImpl(log_Method.Fullname, null);//ヌル・オブジェクト。 goto gt_EndMethod; } } out_Value = (Configurationtree_NodeFilepath)fo_Field.Data; goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFound: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//フィールド名 memoryApplication.CreateErrorReport("Er:6007;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Type: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports); //フィールド名 tmpl.SetParameter(2, fo_Field.EnumTypedb.ToString(), log_Reports); //フィールドの型名 memoryApplication.CreateErrorReport("Er:6008;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // 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; }
//──────────────────────────────────────── public void ParseChild_InConfigurationtreeToExpression( Configurationtree_Node cur_Conf,//S_NodeList s_curNodeList, Expression_Node_String parent_Expr,//nAcase,nFelemの両方の場合がある。 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "ParseChild_InSToE",log_Reports); // // if (null == parent_Expr) { goto gt_Error_NullNFAelem; } // // 親ノード名、親ファンク名 // string parent_SName_Node = parent_Expr.Cur_Configuration.Name; string parent_SName_Fnc = ""; { EnumHitcount enumHitcount; if (NamesNode.S_FNC == parent_SName_Node) { //todo: enumHitcount = EnumHitcount.One; enumHitcount = EnumHitcount.One_Or_Zero; } else { enumHitcount = EnumHitcount.One_Or_Zero; } log_Reports.Log_Callstack.Push(log_Method, "①"); bool bHit = parent_Expr.TrySelectAttribute(out parent_SName_Fnc, PmNames.S_NAME.Name_Pm, enumHitcount, log_Reports); log_Reports.Log_Callstack.Pop(log_Method, "①"); } if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole( "開始┌──┐ s_Curノード名=[" + cur_Conf.Name + "] 子要素数=[" + cur_Conf.List_Child.Count + "]"); } // // // // 子 // // // Configurationtree_Node err_Configurationtree_Node2 = null; cur_Conf.List_Child.ForEach(delegate(Configurationtree_Node s_Child, ref bool bBreak) { if (!log_Reports.Successful) { // 強制終了。 bBreak = true; return; } string sName_MyNode = s_Child.Name; string sName_MyFnc = ""; { bool bRequired; if (NamesNode.S_ARG == sName_MyNode) { bRequired = true; } else { bRequired = false; } log_Reports.Log_Callstack.Push(log_Method, "②"); s_Child.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_MyFnc, bRequired, log_Reports); log_Reports.Log_Callstack.Pop(log_Method, "②"); } if (this.Dictionary_ConfigurationtreeToExpression.ContainsKey(sName_MyNode)) { if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole( "親「S■[" + parent_SName_Fnc + "] name=”[" + parent_SName_Fnc + "]”」 自「S■[" + sName_MyNode + "] name=”[" + sName_MyFnc + "]”」"); } this.Dictionary_ConfigurationtreeToExpression[sName_MyNode].Translate( s_Child, parent_Expr, memoryApplication, pg_ParsingLog, log_Reports ); } else { // // それ以外、エラー。 // err_Configurationtree_Node2 = s_Child; bBreak = true; } }); // if (null != err_Configurationtree_Node2) { goto gt_Error_UndefinedElement; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullNFAelem: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(parent_Expr.Cur_Configuration), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7010;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedElement: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Configurationtree_Node2.Name, log_Reports);//設定ノード名 tmpl.SetParameter(2, err_Configurationtree_Node2.GetType().Name, log_Reports);//設定ノードのクラス名 tmpl.SetParameter(3, this.Dictionary_ConfigurationtreeToExpression.Count.ToString(), log_Reports);//キーの個数 StringBuilder s1 = new StringBuilder(); foreach (string sKey in this.Dictionary_ConfigurationtreeToExpression.Keys) { s1.Append(sKey); s1.Append(System.Environment.NewLine); } tmpl.SetParameter(4, s1.ToString(), log_Reports);//キーのリスト //設定親ノード名 if (null != parent_Expr) { tmpl.SetParameter(5, parent_Expr.Cur_Configuration.Name, log_Reports); } else { tmpl.SetParameter(5, "ヌル", log_Reports); } tmpl.SetParameter(6, Log_RecordReportsImpl.ToText_Configuration(err_Configurationtree_Node2), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7011;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { //d_ParsingLog.Decrement(s_Cur.Name_Node); } log_Method.EndMethod(log_Reports); if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole( "終了└──┘"); } }
//──────────────────────────────────────── public void Translate( Configurationtree_Node cur_Cf, Expressionv_3FListboxValidationImpl parent_Exprv, UsercontrolListbox uctLst, MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(35)" + cur_Cf.Name); } // // string err_Child_SName_Node = ""; string err_Parent_SName_Node = ""; Configurationtree_Node err_Child_CfNode = null; // // // // 自 // // // Expressionv_4ADisplayImpl cur_Exprv = new Expressionv_4ADisplayImpl(parent_Exprv, cur_Cf, memoryApplication); // // // // 属性 // // // { { PmName pmName = PmNames.S_TYPE; string sValue; bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports); if (bHit) { cur_Exprv.Dictionary_SAttribute.Add(pmName.Name_Pm, sValue); } } { PmName pmName = PmNames.S_DESCRIPTION; string sValue; bool bHit = cur_Cf.Dictionary_Attribute.TryGetValue(pmName, out sValue, false, log_Reports); if (bHit) { cur_Exprv.Dictionary_SAttribute.Add(pmName.Name_Pm, sValue); } } } parent_Exprv.List_Expressionv_ADisplay.Add(cur_Exprv); uctLst.AddValidator_FListboxForItems(parent_Exprv, log_Reports); // #デバッグ中 if (log_Method.CanDebug(1)) { log_Method.WriteDebug_ToConsole(" 子<f-●●>数=[" + cur_Cf.List_Child.Count + "]"); } // // // // 子 // // // cur_Cf.List_Child.ForEach(delegate(Configurationtree_Node child_Cf, ref bool bBreak) { if (child_Cf is Configurationtree_Node) { Configurationtree_Node child_Configurationtree_Node = (Configurationtree_Node)child_Cf; string sName_Fnc; child_Configurationtree_Node.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Fnc, false, log_Reports); if (NamesFnc.S_VLD_ALL_FIELDS_IS_EMPTY == sName_Fnc) { // // <f-all-fields-is-empty>要素 ConfigurationtreeToExpression_V54_FAllFieldsIsEmptyImpl_ to = new ConfigurationtreeToExpression_V54_FAllFieldsIsEmptyImpl_(); to.Translate( child_Configurationtree_Node, cur_Exprv, memoryApplication, pg_ParsingLog, log_Reports ); } else if (NamesFnc.S_ALL_TRUE == sName_Fnc) { // // <f-all-true>要素 ConfigurationtreeToExpression_V54_FAllTrueImpl_ to = new ConfigurationtreeToExpression_V54_FAllTrueImpl_(); to.Translate( child_Configurationtree_Node, cur_Exprv, memoryApplication, pg_ParsingLog, log_Reports ); } else { // // エラー。 err_Child_SName_Node = child_Configurationtree_Node.Name; err_Parent_SName_Node = cur_Cf.Name; err_Child_CfNode = child_Configurationtree_Node; bBreak = true; } } }); if (null != err_Child_SName_Node) { goto undefined_element; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── undefined_element: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_Child_SName_Node, log_Reports); //子設定ノード名 tmpl.SetParameter(2, err_Parent_SName_Node, log_Reports); //親設定ノード名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(err_Child_CfNode), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7020;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public override void XmlToConfigurationtree( XmlElement cur_X,//<key-event> Configurationtree_Node parent_Cf,//<control> MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports); // // // // // // 自 // // // Configurationtree_Node cur_Cf = this.CreateMyself(cur_X, parent_Cf, memoryApplication, log_Reports); // // // // 属性 // // // this.Parse_SAttribute(cur_X, cur_Cf, memoryApplication, log_Reports); // // コントロールの、key-eventリストに、S_KeyEventを追加。 // if (log_Reports.Successful) { XmlToConfigurationtree_C15_Elm to = XmlToConfigurationtree_Collection.GetTranslatorByNodeName(NamesNode.S_KEY_ACTION, log_Reports); //List<string> li = new List<string>(); //li.Add(PmNames.TYPE.Name_Pm); //li.Add(PmNames.S_DESCRIPTION.Name_Attribute); //xToS.List_AttrName = li; // // // fncノードを列挙 // XmlNodeList child_XNl = cur_X.ChildNodes; foreach(XmlNode xChild in child_XNl) { if (XmlNodeType.Element == xChild.NodeType) { if (NamesNode.S_FNC == xChild.Name) { XmlElement xFnc = (XmlElement)xChild; to.XmlToConfigurationtree( xFnc, cur_Cf, memoryApplication, log_Reports ); } else { //#連続エラー { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, xChild.Name, log_Reports);//ノード名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8025;", tmpl, log_Reports); } } } } } // // // // 親へ連結 // // // if (log_Reports.Successful) { parent_Cf.List_Child.Add(cur_Cf,log_Reports); } // // // // log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 実行。 /// /// 指定のコントロールの、指定のイベントを実行します。 /// </summary> /// <param name="oEventName"></param> /// <param name="oEventName"></param> /// <param name="log_Reports"></param> private void Execute1b( object sender, string name_ExpectedUsercontrol, string sEventName, MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Execute2", log_Reports); // // Usercontrol foundUsercontrol = null; owner_MemoryApplication.MemoryForms.ForEach_Children(delegate(string sKey, Usercontrol curUsercontrol, ref bool bRemove, ref bool bBreak) { string name_CurUsercontrol = curUsercontrol.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports ); //.WriteLine(this.GetType().Name + "#: ■■コントロール=[" + fcUc.ControlCommon.Name.Value + "] イベント数=[" + fcUc.ControlCommon.OEvents.Items.Count + "]"); if (name_ExpectedUsercontrol == name_CurUsercontrol) { foundUsercontrol = curUsercontrol; //.WriteLine(this.GetType().Name + "#: ■■コントロール=[" + fcNameStr2 + "] イベント数=[" + fcUc.ControlCommon.OFcnfControl.OEvents.Count + "]"); Configurationtree_Node hitEvent_Cnf = null; List <Configurationtree_Node> list_EventCnf = curUsercontrol.ControlCommon.Configurationtree_Control.GetChildrenByNodename(NamesNode.S_EVENT, false, log_Reports); foreach (Configurationtree_Node event_Cnf in list_EventCnf) { string name_Fnc; event_Cnf.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out name_Fnc, false, log_Reports); if (name_Fnc == sEventName) { hitEvent_Cnf = event_Cnf; } } if (null != hitEvent_Cnf) { // // 最初の<event>要素 // Executer2_EventImpl exe1 = new Executer2_EventImpl(); exe1.Execute2_Event( sender, hitEvent_Cnf, owner_MemoryApplication, log_Reports ); } else { string sFcName3 = curUsercontrol.ControlCommon.Expression_Name_Control.Execute4_OnExpressionString( EnumHitcount.Unconstraint, log_Reports ); { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sFcName3, log_Reports); //コントロール名 tmpl.SetParameter(2, sEventName, log_Reports); //イベント名 owner_MemoryApplication.CreateErrorReport("Er:110027;", tmpl, log_Reports); } } }//nFcName_prm }); //loop_end: //.WriteLine(this.GetType().Name + "#: 【アクション_パフォーマー終了】"); if (null == foundUsercontrol) { goto gt_Error_NotFoundUsercontrol; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFoundUsercontrol: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, name_ExpectedUsercontrol, log_Reports);//コントロール名 owner_MemoryApplication.CreateErrorReport("Er:110028;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
/// <summary> /// レコードセットの取得。 /// </summary> /// <param name="eName"></param> /// <param name="log_Reports"></param> /// <returns>該当がなければヌル。</returns> public RecordSet Get(Expression_Node_String ec_Name, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "Get",log_Reports); // // string sName = ec_Name.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports).Trim(); RecordSet nResult; try { //ystem.Console.WriteLine(Info_N.LibraryName + ":" + this.GetType().Name + "#Remove: 【レコードセット削除】sName=[" + sName + "]"); nResult = this.dictionary_Recordset[sName]; } catch (KeyNotFoundException ex) { nResult = null; { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//名前 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(ec_Name.Cur_Configuration), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(ex), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:6043;", tmpl, log_Reports); } } catch (Exception ex) { nResult = null; { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//名前 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(ec_Name.Cur_Configuration), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(ex), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:6044;", tmpl, log_Reports); } } // // // // log_Method.EndMethod(log_Reports); return nResult; }
//──────────────────────────────────────── /// <summary> /// 「.xml」(Fcnf)ファイルの、<control>要素の、oNodeName(コントロール名)のリスト。記述順。 /// </summary> /// <returns></returns> public List<string> GetList_NameControl( string sName_Control, string sHiFpath_ControlFile, string sFpatha_Fcnf, Configurationtree_Node cf_FcConfig, Expression_Node_Filepath ec_Fopath_Forms, MemoryApplication memoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "GetList_NameControl", log_Reports); // // XmlDocument xDoc = null; List<string> sList = new List<string>(); Exception err_Excp = null; if (log_Reports.Successful) { // 正常時 xDoc = new System.Xml.XmlDocument(); try { xDoc.Load(sFpatha_Fcnf); } catch (System.IO.IOException ex) { // // エラー。 err_Excp = ex; goto gt_Error_IoException; } catch (System.Xml.XmlException ex) { // // エラー。 err_Excp = ex; goto gt_Error_XmlException01; } } XmlElement xError = null; if (log_Reports.Successful) { // 正常時 try { // // コントロール自体は、Aa_Forms.csvを読み取って // 既に追加済みです。 // // ルート要素を取得 System.Xml.XmlElement xRoot = xDoc.DocumentElement; // // <control>要素を読取 // if (NamesNode.S_CONTROL1 == xRoot.Name) { // ルート要素が<control> // コントロール名をリストに追加。 sList.Add(sName_Control); } else { // // <control>要素を列挙 // XmlNodeList xTopNL = xRoot.ChildNodes; foreach (XmlNode xTopNode in xTopNL) { if (XmlNodeType.Element == xTopNode.NodeType) { XmlElement xTop = (XmlElement)xTopNode; if (NamesNode.S_CONTROL1 == xTop.Name) { // コントロール名をリストに追加。 sList.Add(sName_Control); } else { // // エラー。 xError = xTop; goto gt_Error_UndefinedChildElement; } } } } } catch (System.Xml.XmlException ex) { // // エラー。 err_Excp = ex; goto gt_Error_XmlException02; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_IoException: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Control, log_Reports);//コントロール名 tmpl.SetParameter(2, ec_Fopath_Forms.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports);//Formsフォルダーパス tmpl.SetParameter(3, sHiFpath_ControlFile, log_Reports);//コントロール設定ファイルパス(入力ママ) tmpl.SetParameter(4, sFpatha_Fcnf, log_Reports);//コントロール設定ファイルパス(Formsフォルダーと結合後) tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:8004;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_XmlException01: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:8005;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedChildElement: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, NamesNode.S_CONTROL1, log_Reports);//期待するノード名 tmpl.SetParameter(2, xError.Name, log_Reports);//含まれていたノード名 memoryApplication.CreateErrorReport("Er:8006;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_XmlException02: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:8007;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); return sList; }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── /// <summary> /// イベント アクション リストを作成します。 /// </summary> /// <param nFcName="eventName"></param> /// <param nFcName="nActionSuper"></param> /// <param nFcName="log_Reports"></param> public Functionlist CreateFunctionlist( ConfigurationtreeToExpression_Event sToE_Event, MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method pg_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); pg_Method.BeginMethod(Info_Controls.Name_Library, this, "CreateFunctionlist", log_Reports); // // Functionlist fc_Result = null; //.WriteLine(this.GetType().Name + "#CreateEventActionList: <構築>【開始】 イベントに対応ついたアクションリストを追加します。 (ボタン)"); switch (sToE_Event.Name) { case NamesSe.S_LOAD: { // // このコントロールの「アプリケーション起動時」。 // // (NActionPerformEnum.O_EA) // // // 無視します。 // } break; case NamesSe.S_BUTTON_PRESSED: { // (NActionPerformEnum.O_EA) if (null == this.functionlist_Event_Click) { fc_Result = new Functionlist_FormImpl( //EnumEventhandler.O_Ea, sToE_Event, owner_MemoryApplication); this.functionlist_Event_Click = fc_Result; ((Functionlist_FormImpl)this.functionlist_Event_Click).InitializeBeforeUse(); this.UsercontroleventhandlerClick += new System.EventHandler(this.functionlist_Event_Click.Execute4_OnOEa); //ccButton.Click += new System.EventHandler(this.e_ActionList_Click.Perform_OEa); // ★DEBUG //essageBox.Show(Info_Forms.LibraryName + ":" + this.GetType().Name + "#Perform_OEa: FC[" + this.ControlCommon.NFcName.GetString(EnumHitcount.Unconstraint, log_Reports) + "]で、EV[" + rEvent.Name + "]のアクションが登録されました。"); } } break; default: goto gt_Error_NotSupportedEvent; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotSupportedEvent: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, this.GetType().Name, log_Reports); //クラス名 tmpl.SetParameter(2, sToE_Event.Name, log_Reports); //イベント名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(sToE_Event.Configurationtree_Event), log_Reports); //位置パンくずリスト owner_MemoryApplication.CreateErrorReport("Er:532;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: pg_Method.EndMethod(log_Reports); return(fc_Result); }
//──────────────────────────────────────── /// <summary> /// 属性テスト /// </summary> /// <param name="x_Cur"></param> /// <param name="s_Cur"></param> /// <param name="log_Reports"></param> protected override void Test_Attributes(XmlElement cur_X, Configurationtree_Node cur_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "Test_Attributes",log_Reports); string sMemory; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_MEMORY, out sMemory, false, log_Reports); string sAccess_Src; cur_Cf.Dictionary_Attribute.TryGetValue(PmNames.S_ACCESS, out sAccess_Src, false, log_Reports); // // access // bool bExists_To=false; string err_sAccess; { CsvTo_ListImpl to = new CsvTo_ListImpl(); List<string> listS = to.Read(sAccess_Src); foreach (string sAccess1 in listS) { if (ValuesAttr.S_FROM == sAccess1) { // ・読取り。(読取り専用とは限らない。writeは別<data>で書く可能性もある)。 } else if (ValuesAttr.S_TO == sAccess1) { // ・書出し。(書出し専用とは限らない。readは別<data>で書く可能性もある)。 bExists_To = true; } //else if (ValuesAttr.S_FROM + "," + ValuesAttr.S_TO == sAccess)//"from,to" //{ // // ・読み書き両用。 //} else { // fromでも、toでもないものが指定されていれば、エラー。 err_sAccess = sAccess1; goto gt_Error_AttrAccess; } } } // //memory // if (!( ValuesAttr.S_NONE == sMemory || ValuesAttr.S_CELL == sMemory || ValuesAttr.S_RECORDS == sMemory || ValuesAttr.S_VARIABLE == sMemory )) { // 無いものを指定したらエラー goto gt_Error_AttrType; } // //access属性に「to」が指定されていない時に、memory属性に「none」「cell」「records」以外のものが設定されていれば、エラー。 // if (!bExists_To && (ValuesAttr.S_NONE != sMemory && ValuesAttr.S_CELL != sMemory && ValuesAttr.S_RECORDS != sMemory)) { goto gt_Error_GhostTarget; } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_GhostTarget: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, PmNames.S_ACCESS.Name_Attribute, log_Reports);//属性名access tmpl.SetParameter(2, ValuesAttr.S_TO, log_Reports);//属性値to tmpl.SetParameter(3, PmNames.S_MEMORY.Name_Attribute, log_Reports);//属性名memory StringBuilder s1 = new StringBuilder(); s1.Append("「"); s1.Append(ValuesAttr.S_NONE); s1.Append("」「"); s1.Append(ValuesAttr.S_CELL); s1.Append("」「"); s1.Append(ValuesAttr.S_RECORDS); s1.Append("」"); tmpl.SetParameter(4, s1.ToString(), log_Reports);//属性値 tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト //access属性に「to」が指定されていない時に、target属性に「none」「cell」「listbox」以外のものが設定されていました。これはエラーです。 // //access属性に「to」が指定されていない場合は、target属性は「none」「cell」「listbox」のいずれかにしなければなりません。 memoryApplication.CreateErrorReport("Er:8020;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_AttrType: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, PmNames.S_MEMORY.Name_Attribute, log_Reports);//属性名memory tmpl.SetParameter(2, sMemory, log_Reports);//属性名memoryの値 StringBuilder s1 = new StringBuilder(); s1.Append("「"); s1.Append(ValuesAttr.S_CELL); s1.Append("」「"); s1.Append(ValuesAttr.S_RECORDS); s1.Append("」「"); s1.Append(ValuesAttr.S_VARIABLE); s1.Append("」"); tmpl.SetParameter(3, s1.ToString(), log_Reports);//属性値 tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8021;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_AttrAccess: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, PmNames.S_ACCESS.Name_Attribute, log_Reports);//属性名access tmpl.SetParameter(2, err_sAccess, log_Reports);//access属性の値 tmpl.SetParameter(3, sAccess_Src, log_Reports);//access指定値全文 StringBuilder s1 = new StringBuilder(); s1.Append("「"); s1.Append(ValuesAttr.S_FROM); s1.Append("」「"); s1.Append(ValuesAttr.S_TO); s1.Append("」指定なし"); tmpl.SetParameter(4, s1.ToString(), log_Reports);//属性値 tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8022;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
public void TryGetString(out string out_SValue, string sName, bool bRequired, string sAlt, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_Expr.Name_Library, this, "TryGetString",log_Reports); // if (!this.Dictionary_Field.ContainsKey(sName)) { //該当なし。 if (bRequired) { out_SValue = ""; goto gt_Error_NotFound; } else { out_SValue = sAlt; goto gt_EndMethod; } } FieldUserformtable fo_Field = this.Dictionary_Field[sName]; if (EnumTypedb.String != fo_Field.EnumTypedb) { //型が異なる。 if (bRequired) { out_SValue = ""; goto gt_Error_Type; } else { out_SValue = sAlt; goto gt_EndMethod; } } out_SValue = (string)fo_Field.Data; goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NotFound: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//フィールド名 memoryApplication.CreateErrorReport("Er:6003;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Type: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName, log_Reports);//フィールド名 tmpl.SetParameter(2, fo_Field.EnumTypedb.ToString(), log_Reports);//フィールドの型名 memoryApplication.CreateErrorReport("Er:6004;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: 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> /// コントロール名と、設定ファイルパスが指定されるので、 /// 検索して、設定。 /// </summary> /// <param name="sFcName"></param> /// <param name="sFpathH_F">絶対ファイルパス(F)手入力</param> /// <param name="sFpatha_F">絶対ファイルパス(F)</param> /// <param name="s_FcConfig"></param> /// <param name="oFormsFolderPath"></param> /// <param name="owner_MemoryApplication"></param> /// <param name="log_Reports"></param> public void XmlToConfigurationtree( string sName_Control, string sFpathH_F, string sFpatha_F, Configurationtree_Node cf_ControlConfig, Expression_Node_Filepath ec_Fopath_Forms, MemoryApplication owner_MemoryApplication, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XToCf", log_Reports); // // System.Xml.XmlDocument xDoc = null; Exception err_Excp = null; if (log_Reports.Successful) { // 正常時 xDoc = new System.Xml.XmlDocument(); if (System.IO.File.Exists(sFpatha_F)) { try { xDoc.Load(sFpatha_F); } catch (System.IO.IOException ex) { // // エラー。 err_Excp = ex; goto gt_Error_IoException; } catch (System.Xml.XmlException ex) { // // エラー。 err_Excp = ex; goto gt_Error_XmlException; } catch (Exception ex) { // // エラー。 err_Excp = ex; goto gt_Error_Exception01; } } else { // エラー。 goto gt_Error_NotFoundFile; } } // // コントロール自体は、Aa_Forms.csvを読み取って // 既に追加済みです。 XmlElement err_XElm = null; if (log_Reports.Successful) { // 正常時 XmlToConfigurationtree_C12_ControlImpl_ to = new XmlToConfigurationtree_C12_ControlImpl_(); try { // ルート要素を取得 System.Xml.XmlElement xRoot = xDoc.DocumentElement; // <scriptfile-controls scriptfile-version=”1.0”> を期待。 if (NamesNode.S_CODEFILE_CONTROLS != xRoot.Name) { //エラー err_XElm = xRoot; goto gt_Error_Root; } // スクリプトファイルのバージョンチェック。(コントロール設定ファイル) ValuesAttr.Test_Codefileversion( xRoot.GetAttribute(PmNames.S_CODEFILE_VERSION.Name_Attribute), log_Reports, cf_ControlConfig, NamesNode.S_CODEFILE_CONTROLS ); // ルート要素の下の子<control>要素 XmlNodeList xNl_Top = xRoot.ChildNodes; foreach (XmlNode xTopNode in xNl_Top) { if (XmlNodeType.Element == xTopNode.NodeType) { XmlElement xTop = (XmlElement)xTopNode; if (NamesNode.S_CONTROL1 == xTop.Name) { to.XmlToConfigurationtree( sName_Control, cf_ControlConfig, xTop, owner_MemoryApplication, log_Reports ); } else { // // エラー。 err_XElm = xTop; goto gt_Error_UndefinedChildElement; } } } } catch (Exception ex) { // // エラー。 err_Excp = ex; goto gt_Error_Exception02; } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_Root: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, NamesNode.S_CODEFILE_CONTROLS, log_Reports); //期待したルート要素名 tmpl.SetParameter(2, err_XElm.Name, log_Reports); //実際のルート要素名 tmpl.SetParameter(3, sFpatha_F, log_Reports); //コントロール設定絶対ファイルパス tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8010;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_NotFoundFile: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Control, log_Reports); //コントロール名 tmpl.SetParameter(2, ec_Fopath_Forms.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports); //Formsフォルダーパス tmpl.SetParameter(3, sFpathH_F, log_Reports); //コントロール設定ファイル(入力ママ) tmpl.SetParameter(4, sFpatha_F, log_Reports); //コントロール設定ファイル絶対パス(Formsフォルダーと結合後) tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8011;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_IoException: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sName_Control, log_Reports); //コントロール名 tmpl.SetParameter(2, ec_Fopath_Forms.Execute4_OnExpressionString(EnumHitcount.Unconstraint, log_Reports), log_Reports); //Formsフォルダーパス tmpl.SetParameter(3, sFpathH_F, log_Reports); //コントロール設定ファイル(入力ママ) tmpl.SetParameter(4, sFpatha_F, log_Reports); //コントロール設定ファイル絶対パス(Formsフォルダーと結合後) tmpl.SetParameter(5, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8012;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_XmlException: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, sFpatha_F, log_Reports); //コントロール設定ファイル絶対パス(Formsフォルダーと結合後) tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports); //例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8013;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Exception01: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8014;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Exception02: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ owner_MemoryApplication.CreateErrorReport("Er:8015;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_UndefinedChildElement: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, NamesNode.S_CONTROL1, log_Reports); //期待するノード名 tmpl.SetParameter(2, err_XElm.Name, log_Reports); //実際のノード名 owner_MemoryApplication.CreateErrorReport("Er:8016;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// <f-str> /// </summary> /// <param name="oFStrNode"></param> /// <param name="nFAelem"></param> /// <param name="moOpyopyo"></param> /// <param name="log_Reports"></param> public override void Translate( Configurationtree_Node cur_Cf, //<f-str> Expression_Node_String parent_Ec, //親<●●>。 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "SToE", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(30)" + cur_Cf.Name); } // // // // if (null == parent_Ec) { goto gt_Error_NullFAelem; } // // // // 自 // // // Expression_Node_String ec_Cur = new Expression_Node_StringImpl(parent_Ec, cur_Cf); // // // // 属性 // // // if (log_Reports.Successful) { this.ParseAttr_InConfigurationtreeToExpression( cur_Cf, ec_Cur, false, //name属性は無い。 true, //value属性を、子<f-str>にする場合、真。 log_Reports ); } // // // // 子 // // // { this.ParseChild_InConfigurationtreeToExpression( cur_Cf, ec_Cur, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // 親へ連結 ※子連結が基本 // // // { parent_Ec.List_Expression_Child.Add(ec_Cur, log_Reports); } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_NullFAelem: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7016;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── #endregion #region アクション //──────────────────────────────────────── public virtual void Translate_Step1( ConfigurationtreeToFunction_Item parentProcesser, Configurationtree_Node action_Conf, Expression_Node_Function cur_Expr_Func, MemoryApplication owner_MemoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_Functions.Name_Library, this, "Translate_Step1", log_Reports); // // アクション型引数の引数 // string err_sName_Attr; action_Conf.List_Child.ForEach(delegate(Configurationtree_Node s_Arg, ref bool bBreak) { string sName_Attr; s_Arg.Dictionary_Attribute.TryGetValue(PmNames.S_NAME, out sName_Attr, true, log_Reports); if (cur_Expr_Func.ContainsName_ArgumentDefinition(sName_Attr, log_Reports)) { // // 自解析 // ConfigurationtreeToExpression_F14n16 to = new ConfigurationtreeToExpression_F14_FArgImpl(); to.Translate( s_Arg, cur_Expr_Func, owner_MemoryApplication, pg_ParsingLog, log_Reports ); } else { // エラー err_sName_Attr = sName_Attr; goto gt_Error_UndefinedArgName; } goto gt_EndMethod2; // // gt_Error_UndefinedArgName: bBreak = true; { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_sName_Attr, log_Reports); //引数名 tmpl.SetParameter(2, cur_Expr_Func.ToString_ListNameargumentDefinition_ForReport(), log_Reports); //引数名リスト owner_MemoryApplication.CreateErrorReport("Er:110001;", tmpl, log_Reports); } // gt_EndMethod2: ; }); goto gt_EndMethod; gt_EndMethod: log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── /// <summary> /// 例えば ("access","from")と指定すれば、 /// 指定リストの要素の中で 「~ access=”from,to”」 といった属性を持つものはヒットする。 /// /// 選択アイテムをリストから除外するなら bRemove=true にします。 /// </summary> /// <param name="sName"></param> /// <param name="sExpectedValue"></param> /// <param name="request_Items"></param> /// <param name="log_Reports"></param> /// <returns></returns> public static List <Configurationtree_Node> SelectItemsBySAttrAsCsv( List <Configurationtree_Node> items, PmName pmName /*string sName_Attr*/, string sValue_Expected, bool bRemove, EnumHitcount hits, MemoryApplication memoryApplication, Log_Reports log_Reports) { Log_Method log_Method = new Log_MethodImpl(0); log_Method.BeginMethod(Info_XmlToConf.Name_Library, "Util_XmlToConfigurationtree_NodeImpl", "SelectItemsBySAttrAsCsv", log_Reports); List <Configurationtree_Node> cfList_Result = new List <Configurationtree_Node>(); for (int nI = 0; nI < items.Count; nI++) { Configurationtree_Node cf_Item = items[nI]; if (log_Reports.Successful) { string sValue_Attr; bool bHit = cf_Item.Dictionary_Attribute.TryGetValue(pmName, out sValue_Attr, false, log_Reports); if (bHit) { CsvTo_ListImpl to = new CsvTo_ListImpl(); List <string> sList_Value = to.Read(sValue_Attr); if (sList_Value.Contains(sValue_Expected)) { cfList_Result.Add(cf_Item); if (bRemove) { // 削除 items.RemoveAt(nI); nI--; } if (EnumHitcount.First_Exist == hits || EnumHitcount.First_Exist_Or_Zero == hits) { // 最初の1件で削除は終了。複数件ヒットするかどうかは判定しない。 break; } } } } } //ystem.Console.WriteLine(Info_Forms.LibraryName + ":EUtil_NodeImpl.GetItemsByAttrAsCsv: 直後 list_Result.Count=[" + list_Result.Count + "]"); if (EnumHitcount.One == hits) { // 必ず1件だけヒットする想定。 if (cfList_Result.Count != 1) { goto gt_errorNotOne; } } else if (EnumHitcount.First_Exist == hits) { // 必ずヒットする。複数件あれば、最初の1件だけ取得。 if (0 == cfList_Result.Count) { goto gt_errorNoHit; } else if (1 < cfList_Result.Count) { cfList_Result.RemoveRange(1, cfList_Result.Count - 1); } } else if (EnumHitcount.First_Exist_Or_Zero == hits) { // ヒットすれば最初の1件だけ、ヒットしなければ0件の想定。 if (1 < cfList_Result.Count) { cfList_Result.RemoveRange(1, cfList_Result.Count - 1); } } else { } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_errorNoHit: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cfList_Result.Count.ToString(), log_Reports);//検索ヒット数 memoryApplication.CreateErrorReport("Er:8002;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_errorNotOne: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cfList_Result.Count.ToString(), log_Reports);//検索ヒット数 memoryApplication.CreateErrorReport("Er:8003;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion gt_EndMethod: return(cfList_Result); }
//──────────────────────────────────────── /// <summary> /// <data>要素の読取。 /// </summary> /// <param select="xDataSource"></param> /// <param select="fcUc"></param> public void Translate( Configurationtree_Node cur_Cf, //<data>要素 Expression_Node_String parent_Ec, //「S■form-component」 MemoryApplication memoryApplication, Log_TextIndented_ConfigurationtreeToExpression pg_ParsingLog, Log_Reports log_Reports ) { Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_ConfigurationtreeToExpression.Name_Library, this, "CfToEc", log_Reports); if (log_Method.CanDebug(1)) { pg_ParsingLog.Increment("(2)" + cur_Cf.Name); } // // // // // // // // 自 // // // Expression_NodeImpl cur_Ec = new Expression_NodeImpl(parent_Ec, cur_Cf, memoryApplication); // // // // 属性 // // // string err_SAttrName; cur_Cf.Dictionary_Attribute.ForEach(delegate(string sPmName, string sValue, ref bool bBreak) { if ( PmNames.S_MEMORY.Name_Pm == sPmName || PmNames.S_ACCESS.Name_Pm == sPmName || PmNames.S_NAME_TABLE.Name_Pm == sPmName || PmNames.S_NAME_VAR.Name_Pm == sPmName || //.Z_ITEM_VALUE_TO_VARIABLE PmNames.S_DESCRIPTION.Name_Pm == sPmName ) { //ystem.Console.WriteLine(Info_SToE.LibraryName + ":" + this.GetType().Name + "#SToE: <データT >に属性追加 [" + sKey + "]←[" + sValue + "]"); // なんでも属性として追加。 Expression_Node_String ec_Value = new Expression_Leaf_StringImpl(sValue, cur_Ec, cur_Cf); cur_Ec.SetAttribute(sPmName, ec_Value, log_Reports); } else { err_SAttrName = sPmName; bBreak = true; goto gt_Error_UndefinedAttr; } goto gt_gt_EndMethod2; // // // // gt_Error_UndefinedAttr: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, cur_Cf.Name, log_Reports); //設定ノード名 tmpl.SetParameter(2, err_SAttrName, log_Reports); //属性名 tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports); //設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:7002;", tmpl, log_Reports); } goto gt_gt_EndMethod2; gt_gt_EndMethod2: ; }); // // // // 子 // // // { this.ParseChild_InConfigurationtreeToExpression( cur_Cf, cur_Ec, memoryApplication, pg_ParsingLog, log_Reports ); } // // // // 親へ連結 // // // parent_Ec.List_Expression_Child.Add(cur_Ec, log_Reports); goto gt_EndMethod; // // gt_EndMethod: if (Log_ReportsImpl.BDebugmode_Static) { pg_ParsingLog.Decrement(cur_Cf.Name); } log_Method.EndMethod(log_Reports); }
//──────────────────────────────────────── public void XmlToConfigurationtree( XmlElement cur_X, Configurationtree_Node cur_Cf, MemoryApplication memoryApplication, Log_Reports log_Reports ) { // // // //()メソッド開始 // // // Log_Method log_Method = new Log_MethodImpl(0, Log_ReportsImpl.BDebugmode_Static); log_Method.BeginMethod(Info_XmlToConf.Name_Library, this, "XmlToConfigurationtree", log_Reports); // // // //()子要素 // // // XmlNodeList child_XNl = cur_X.ChildNodes; string err_SName_CurNode = ""; XmlElement err_XElm = null; Exception err_Excp = null; foreach (XmlNode child_XNode in child_XNl) { if (XmlNodeType.Element == child_XNode.NodeType) { XmlElement xChild = (XmlElement)child_XNode; string sName_Node = xChild.Name; XmlToConfigurationtree_C15_Elm to; bool bHit = this.Dictionary_XmlToConfigurationtree_ElmP.ContainsKey(sName_Node); if (!bHit) { // 未該当=エラー err_SName_CurNode = cur_X.Name; err_XElm = xChild; goto gt_Error_UndefinedElement; } to = this.Dictionary_XmlToConfigurationtree_ElmP[sName_Node]; if (log_Reports.Successful) { try { to.XmlToConfigurationtree(xChild, cur_Cf, memoryApplication, log_Reports); } catch (Exception ex) { // // エラー。 err_XElm = xChild; err_Excp = ex; goto gt_Error_Exception; } } } } goto gt_EndMethod; // // #region 異常系 //──────────────────────────────────────── gt_Error_UndefinedElement: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_XElm.Name, log_Reports);//子要素名 tmpl.SetParameter(2, err_SName_CurNode, log_Reports);//自要素名 StringBuilder s1 = new StringBuilder(); foreach (string key in this.Dictionary_XmlToConfigurationtree_ElmP.Keys) { s1.Append(" <"); s1.Append(key); s1.Append(">"); s1.Append(Environment.NewLine); } tmpl.SetParameter(3, s1.ToString(), log_Reports);//要素リスト tmpl.SetParameter(4, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト memoryApplication.CreateErrorReport("Er:8033;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── gt_Error_Exception: { Builder_TexttemplateP1p tmpl = new Builder_TexttemplateP1pImpl(); tmpl.SetParameter(1, err_XElm.Name, log_Reports);//要素名 tmpl.SetParameter(2, Log_RecordReportsImpl.ToText_Configuration(cur_Cf), log_Reports);//設定位置パンくずリスト tmpl.SetParameter(3, Log_RecordReportsImpl.ToText_Exception(err_Excp), log_Reports);//例外メッセージ memoryApplication.CreateErrorReport("Er:8034;", tmpl, log_Reports); } goto gt_EndMethod; //──────────────────────────────────────── #endregion // // gt_EndMethod: log_Method.EndMethod(log_Reports); }