Exemplo n.º 1
0
        public IEnumerable <SiteInfos> DoLoad(GeneratorConfig config)
        {
            // サイト一覧定義を読み込む
            var sites = LoadCsv <SiteDefinition, SiteDefinitionMap>(config, config.InputFiles.SiteDefinitionFile)
                        .Where(e => e.IsTarget == true)
                        .ToList();

            // 項目名別一覧定義を読み込む
            var interfaces = LoadCsv <InterfaceDefinition, InterfaceDefinitionMap>(config, config.InputFiles.InterfaceDefinitionFile)
                             .Where(e => true == e.IsTarget)
                             .ToList();

            // サイト単位でデータを整理する
            var rl = sites
                     .Select(e =>
            {
                var r = new SiteInfos
                {
                    SiteDefinition         = e,
                    RawInterfaceDefinition = interfaces.Where(i => i.SiteId == e.SiteId).ToList()
                };

                r.ClassifiedInterface = ClassifiedInterface.Generate(r.RawInterfaceDefinition);

                // ChoicesTextを独自形式に変換する
                ChoicesTextAdjustment(r.ClassifiedInterface);

                return(r);
            })
                     .ToList();

            return(rl);
        }
Exemplo n.º 2
0
        /// <summary>
        /// ChoicesTextを調整する
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        private void ChoicesTextAdjustment(ClassifiedInterface target)
        {
            var l =
                target.ClassHash.Where(e => false == String.IsNullOrWhiteSpace(e.ChoicesText));

            foreach (var ele in l)
            {
                if (ele.ChoicesText.Contains(CSVConstant.ChoicesText_ColumnSeparator) ||
                    ele.ChoicesText.Contains(CSVConstant.ChoicesText_NewLine)
                    )
                {
                    // enumに変換可能な形式
                    var lines = ele.ChoicesText.Split(CSVConstant.ChoicesText_NewLine);
                    ele.ChoicesTextInfos = lines.Select(e =>
                    {
                        var l = e.Split(CSVConstant.ChoicesText_ColumnSeparator);

                        if (1 == l.Length)
                        {
                            // 選択肢だけ入力された場合
                            return(new InterfaceDefinition.Definition.ChoicesTextInfo
                            {
                                Value = l[0],
                                VariableName = l[0]
                            });
                        }
                        else if (2 == l.Length)
                        {
                            // 保存する値,テキストで指定された場合
                            // 以下のような形式で値が指定される。
                            // [指定例]
                            // AC7459,製品A
                            return(new InterfaceDefinition.Definition.ChoicesTextInfo
                            {
                                Value = l[0],
                                VariableName = l[0],
                                Description = l[1]
                            });
                        }

                        else if (0 != l.Length)
                        {
                            // 短い名前などを指定した場合
                            //
                            // [指定例]
                            //100,未着手,未,status - new

                            // enumに変形可能な場合、
                            // 4分割する事が出来る
                            return(new InterfaceDefinition.Definition.ChoicesTextInfo
                            {
                                Value = l[0],
                                Description = l[1],
                                VariableName = l[3]
                            });
                        }
                        return(null);
                    }).Where(e => e != null)
                                           .ToList();
                }
            }
        }