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