Пример #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);
        }
Пример #2
0
                /// <summary>
                /// コード定義を生成する
                /// </summary>
                /// <param name="config"></param>
                /// <param name="ServiceTemplate"></param>
                /// <param name="outPath"></param>
                /// <param name="s"></param>
                public static void DoCodeGeneration(GeneratorConfig.Definition.TemplateFiles config,
                                                    string templateSteing,
                                                    OutputPathInfo outPath,
                                                    SiteInfos s)
                {
                    // 内部でテンプレートの出力設定を参照できるように書き換える
                    s.TemplateFilesConfig = config;
                    var result = TemplateExpansion(config.TemplateFileName, templateSteing, s);
                    {
                        // 文字コードを指定
                        System.Text.Encoding enc = System.Text.Encoding.GetEncoding(config.Encoding);

                        // 出力ファイル名
                        var outFileName = Path.Combine(outPath.ServicePath,
                                                       $"{config.HeadPrefix}{s.SiteDefinition.SiteVariableName}{config.EndPrefix}.{config.OutputExtension}");

                        logger.Info($"生成結果コードを書き出し: {outFileName}");

                        string fullPath = System.IO.Path.GetFullPath(outFileName);

                        // ファイルを開く
                        using (StreamWriter writer = new StreamWriter(outFileName, false, enc))
                        {
                            // テキストを書き込む
                            writer.WriteLine(result);
                        }
                    }
                }
Пример #3
0
        // PUT api/Sites/5
        public IHttpActionResult PutSiteInfos(int id, SiteInfos siteinfos)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != siteinfos.SiteID)
            {
                return(BadRequest());
            }

            db.Entry(siteinfos).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!SiteInfosExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Пример #4
0
        public IHttpActionResult GetSiteInfos(int id)
        {
            SiteInfos siteinfos = db.Sites.Find(id);

            if (siteinfos == null)
            {
                return(NotFound());
            }

            return(Ok(siteinfos));
        }
Пример #5
0
        public IHttpActionResult PostSiteInfos(SiteInfos siteinfos)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.Sites.Add(siteinfos);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = siteinfos.SiteID }, siteinfos));
        }
Пример #6
0
        public IHttpActionResult DeleteSiteInfos(int id)
        {
            SiteInfos siteinfos = db.Sites.Find(id);

            if (siteinfos == null)
            {
                return(NotFound());
            }

            db.Sites.Remove(siteinfos);
            db.SaveChanges();

            return(Ok(siteinfos));
        }
Пример #7
0
                /// <summary>
                /// テンプレートファイル展開を行う
                /// </summary>
                /// <param name="TemplateString"></param>
                /// <param name="info"></param>
                /// <returns></returns>
                public static string TemplateExpansion(
                    string TemplateKey,
                    string TemplateString,
                    SiteInfos info)
                {
                    // NetCoreへの対応状況により
                    // 以下ライブラリに差し替えする
                    // https://github.com/toddams/RazorLight


                    // ToDo
                    // 暫定で一番簡単な方法で実装する。
                    // 別途パフォーマンス調整の方法があるハズ
                    var engine = new RazorLightEngineBuilder()
                                 // required to have a default RazorLightProject type,
                                 // but not required to create a template from string.
                                 .UseEmbeddedResourcesProject(typeof(Program))
                                 .UseMemoryCachingProvider()
                                 .Build();

                    var result = engine.CompileRenderStringAsync(TemplateKey, TemplateString, info);

                    result.Wait();

                    var cacheResult = engine.Handler.Cache.RetrieveTemplate(TemplateKey);

                    if (cacheResult.Success)
                    {
                        var templatePage = cacheResult.Template.TemplatePageFactory();
                        var tresult      = engine.RenderTemplateAsync(templatePage, info);

                        tresult.Wait();

                        var v = tresult.Result;

                        return(v);
                    }

                    return("");
                }