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> /// コード定義を生成する /// </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); } } }
// 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)); }
public IHttpActionResult GetSiteInfos(int id) { SiteInfos siteinfos = db.Sites.Find(id); if (siteinfos == null) { return(NotFound()); } return(Ok(siteinfos)); }
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)); }
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)); }
/// <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(""); }