예제 #1
0
        // ──────────────────────────────

        public void Perform(
            ref Builder_TexttemplateP1pImpl ref_FormatString,
            DataRowView dataRowView,
            Table_Humaninput xenonTable,
            Log_Reports log_Reports
            )
        {
            Log_Method log_Method = new Log_MethodImpl(0);

            log_Method.BeginMethod(Info_Table.Name_Library, this, "Perform", log_Reports);

            // TODO IDは「前ゼロ付き文字列」または「int型」なので、念のため一度文字列に変換。
            int nP1pNumber = 1;

            foreach (Fieldkey fieldKey in list_FieldKeies)
            {
                //"[" + oTable.Name + "]テーブルの或る行の[" + fieldKey.Name + "]フィールド値。"//valueOTable.SourceFilePath.HumanInputText

                Value_Humaninput valueH = Utility_Row.GetFieldvalue(
                    fieldKey.Name,
                    dataRowView.Row,
                    true,
                    log_Reports,
                    fieldKey.Description
                    );
                if (!log_Reports.Successful)
                {
                    // 既エラー。
                    goto gt_EndMethod;
                }


                // 正常時
                EnumTypeFielddefinition typeFd = FielddefinitionImpl.TypefieldFromString(fieldKey.Name_Type, true, log_Reports);
                switch (typeFd)
                {
                case EnumTypeFielddefinition.String:
                {
                    ref_FormatString.Dictionary_NumberAndValue_Parameter.Add(
                        nP1pNumber,
                        valueH.Text        // String_HumaninputImpl.ParseString(valueH)
                        );
                }
                break;

                case EnumTypeFielddefinition.Int:
                {
                    ref_FormatString.Dictionary_NumberAndValue_Parameter.Add(
                        nP1pNumber,
                        valueH.Text        // Int_HumaninputImpl.ParseString(valueH)
                        );
                }
                break;

                case EnumTypeFielddefinition.Bool:
                {
                    ref_FormatString.Dictionary_NumberAndValue_Parameter.Add(
                        nP1pNumber,
                        valueH.Text        // Bool_HumaninputImpl.ParseString(valueH)
                        );
                }
                break;

                default:
                {
                    // 未定義の型は、string扱い。
                    ref_FormatString.Dictionary_NumberAndValue_Parameter.Add(
                        nP1pNumber,
                        valueH.Text        // String_HumaninputImpl.ParseString(valueH)
                        );
                }
                break;
                }

                nP1pNumber++;
            }//foreach

            // 正常
            goto gt_EndMethod;
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return;
        }
예제 #2
0
        //────────────────────────────────────────
        #endregion



        #region 生成と破棄
        //────────────────────────────────────────

        /// <summary>
        /// コンストラクター。
        /// </summary>
        /// <param name="name_humanInput"></param>
        /// <param name="typeField">string,int,boolに対応。</param>
        public FielddefinitionImpl(string name_Humaninput, EnumTypeFielddefinition typeField)
        {
            this.Name_Humaninput = name_Humaninput;
            this.Type_Field      = typeField;
            this.comment         = "";
        }
예제 #3
0
        //────────────────────────────────────────
        #endregion



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

        /// <summary>
        /// DataRow → Dictionary
        /// </summary>
        /// <param name="row"></param>
        /// <param name="log_Reports"></param>
        public void Add(DataRow row, Log_Reports log_Reports)
        {
            Log_Method log_Method = new Log_MethodImpl(0);

            log_Method.BeginMethod(Info_Table.Name_Library, this, "Add", log_Reports);

            Dictionary <string, Value_Humaninput> record = new Dictionary <string, Value_Humaninput>();

            int nFieldCount = row.ItemArray.Length;

            for (int nFieldIndex = 0; nFieldIndex < nFieldCount; nFieldIndex++)
            {
                // フィールド名
                string sFieldName = xenonTable.RecordFielddefinition.ValueAt(nFieldIndex).Name_Trimupper;

                // 値
                Value_Humaninput oValue;
                if (row[nFieldIndex] is DBNull)
                {
                    //// デバッグ
                    //if (true)
                    //{
                    //Log_TextIndented txt = new Log_TextIndentedImpl();

                    //    txt.Append(InfxenonTable.LibraryName + ":" + this.GetType().Name + "#Add:【ヌル】");
                    //    txt.Append(" field=[" + sFieldName + "]");

                    //    ystem.Console.WriteLine(txt.ToString());
                    //}

                    String sConfigStack = xenonTable.Expression_Filepath_ConfigStack.Execute4_OnExpressionString(
                        EnumHitcount.Unconstraint, log_Reports);
                    if (!log_Reports.Successful)
                    {
                        // 既エラー。
                        goto gt_EndMethod;
                    }

                    EnumTypeFielddefinition typeField = xenonTable.RecordFielddefinition.ValueAt(nFieldIndex).Type_Field;
                    switch (typeField)
                    {
                    case EnumTypeFielddefinition.String:
                        oValue = new String_HumaninputImpl(sConfigStack);
                        break;

                    case EnumTypeFielddefinition.Int:
                        oValue = new Int_HumaninputImpl(sConfigStack);
                        break;

                    case EnumTypeFielddefinition.Bool:
                        oValue = new Bool_HumaninputImpl(sConfigStack);
                        break;

                    default:
                        // エラー。
                        goto gt_Error_UndefinedType;
                    }
                }
                else
                {
                    oValue = (Value_Humaninput)row[nFieldIndex];

                    //// デバッグ
                    //if (true)
                    //{
                    //Log_TextIndented txt = new Log_TextIndentedImpl();

                    //    txt.Append(InfxenonTable.LibraryName + ":" + this.GetType().Name + "#Add:【○】");
                    //    txt.Append(" 値=[" + oValue.HumanInputString + "]");

                    //    ystem.Console.WriteLine(txt.ToString());
                    //}
                }

                record.Add(sFieldName, oValue);
            }

            this.List_Field.Add(record);

            // 正常
            goto gt_EndMethod;
            //
            //
            #region 異常系
            //────────────────────────────────────────
gt_Error_UndefinedType:
            if (log_Reports.CanCreateReport)
            {
                Log_RecordReports r = log_Reports.BeginCreateReport(EnumReport.Error);
                r.SetTitle("▲エラー293!", log_Method);

                Log_TextIndented s = new Log_TextIndentedImpl();
                s.Append(" 未定義の型です。プログラムのミスの可能性があります。");
                s.Append(Environment.NewLine);
                s.Append(Environment.NewLine);

                r.Message = s.ToString();
                log_Reports.EndCreateReport();
            }
            goto gt_EndMethod;
            //────────────────────────────────────────
            #endregion
            //
            //
gt_EndMethod:
            log_Method.EndMethod(log_Reports);
            return;
        }
예제 #4
0
 //────────────────────────────────────────
 /// <summary>
 /// コンストラクター。
 /// </summary>
 /// <param name="name_humanInput"></param>
 /// <param name="typeField">string,int,boolに対応。</param>
 public FielddefinitionImpl(string name_Humaninput, EnumTypeFielddefinition typeField)
 {
     this.Name_Humaninput = name_Humaninput;
     this.Type_Field = typeField;
     this.comment = "";
 }