protected void WriteFile(string path, string file, StringBuilderIndented builder) { if (!Directory.Exists(path)) Directory.CreateDirectory(path); string fullPath = Path.Combine(path, file); File.WriteAllText(fullPath, builder.ToString(), Encoding.UTF8); }
private void GenerateQuery(CSharpConfig config) { foreach (var group in config.DataBaseItems) { foreach (var table in group.Items) { string path = Path.Combine(config.ConcretePath, group.Name, "Query"); string file = Path.Combine(path, $"{table.Name}Query.cs"); if (File.Exists(file)) continue; var nameSpace = new List<string> { "System", "System.Linq", "System.Collections.Generic", "XCommon.Patterns.Specification.Query", "XCommon.Patterns.Specification.Query.Extensions", "XCommon.Extensions.String", "XCommon.Extensions.Checks" }; nameSpace.Add($"{config.DataBase.NameSpace}.{group.Name}"); nameSpace.Add($"{config.EntrityNameSpace}.{group.Name}.Filter"); StringBuilderIndented builder = new StringBuilderIndented(); var columnOrder = table.Properties.Any(c => c.Name == "Name") ? "Name" : table.NameKey; builder .ClassInit($"{table.Name}Query", $"SpecificationQuery<{table.Name}, {table.Name}Filter>", $"{config.ConcreteNameSpace}.{group.Name}.Query", ClassVisility.Public, nameSpace.ToArray()) .AppendLine($"public override IQueryable<{table.Name}> Build(IQueryable<{table.Name}> source, {table.Name}Filter filter)") .AppendLine("{") .IncrementIndent() .AppendLine($"var spefications = NewSpecificationList()") .IncrementIndent() .AppendLine($".And(e => e.{table.NameKey} == filter.Key, f => f.Key.HasValue)") .AppendLine($".And(e => filter.Keys.Contains(e.{table.NameKey}), f => f.Keys.IsValidList())") .AppendLine($".OrderBy(e => e.{columnOrder})") .AppendLine(".Take(filter.PageNumber, filter.PageSize);") .DecrementIndent() .AppendLine() .AppendLine("return CheckSpecifications(spefications, source, filter);") .DecrementIndent() .AppendLine("}") .ClassEnd(); if (!Directory.Exists(path)) Directory.CreateDirectory(path); File.WriteAllText(file, builder.ToString(), Encoding.UTF8); } } }
private void GenerateConcrete(CSharpConfig config) { foreach (var group in config.DataBaseItems) { foreach (var item in group.Items) { string path = Path.Combine(config.ConcretePath, group.Name); string file = Path.Combine(path, $"{item.Name}Business.cs"); if (File.Exists(file)) continue; var nameSpace = new List<string> { "System", " XCommon.Patterns.Repository" }; nameSpace.Add($"{config.EntrityNameSpace}.{group.Name}"); nameSpace.Add($"{config.EntrityNameSpace}.{group.Name}.Filter"); nameSpace.Add($"{config.ContractNameSpace}.{group.Name}"); nameSpace.Add($"{config.DataBase.NameSpace}"); nameSpace.Add($"{config.DataBase.NameSpace}.{group.Name}"); StringBuilderIndented builder = new StringBuilderIndented(); builder .ClassInit($"{item.Name}Business", $"RepositoryEFBase<{item.Name}Entity, {item.Name}Filter, {item.Name}, {config.DataBase.ContextName}>, I{item.Name}Business", $"{config.ConcreteNameSpace}.{group.Name}", ClassVisility.Public, nameSpace.ToArray()) .ClassEnd(); if (!Directory.Exists(path)) Directory.CreateDirectory(path); File.WriteAllText(file, builder.ToString(), Encoding.UTF8); } } }
private string BuidService(TypeScriptResource config, StringBuilderIndented builder) { builder .AppendLine("@Injectable()") .AppendLine("export class ResourceService {") .IncrementIndent() .AppendLine(config.LazyLoad ? "constructor(private http: Http) {" : "constructor() {") .IncrementIndent(); BuildLanguageSuportedContructor(config, builder); builder .AppendLine($"this.SetLanguage(\"{config.CultureDefault.Name}\")") .DecrementIndent() .AppendLine("}") .AppendLine(); if (config.LazyLoad) { builder .AppendLine("private Resources: Map<IResource> = {};"); } builder .AppendLine("public Languages: ApplicationCulture[] = [];") .AppendLine("private Language: ApplicationCulture;") .AppendLine(); foreach (var resource in Resources) { builder.AppendLine($"public {resource.ResourceName}: I{resource.ResourceName};"); } builder .AppendLine() .AppendLine("public GetLanguage(): ApplicationCulture {") .IncrementIndent() .AppendLine("return this.Language;") .DecrementIndent() .AppendLine("}") .AppendLine() .AppendLine("public SetLanguage(language: string): void {") .IncrementIndent() .AppendLine() .AppendLine("if (this.Language && this.Language.Name === language) {") .IncrementIndent() .AppendLine("return;") .DecrementIndent() .AppendLine("}") .AppendLine() .AppendLine("let value = this.Languages.find((item: ApplicationCulture) => item.Name == language);") .AppendLine() .AppendLine("if (!value) {") .IncrementIndent() .AppendLine($"console.warn(`Unknown language: ${{language}}! Set up current culture as the default language: {config.CultureDefault.Name}`);") .AppendLine($"this.SetLanguage(\"{config.CultureDefault.Name}\");") .AppendLine("return;") .DecrementIndent() .AppendLine("}") .AppendLine() .AppendLine("this.Language = value;") .AppendLine(); if (!config.LazyLoad) { BuildNormalService(config, builder); } if (config.LazyLoad) { BuildLazyService(config, builder); } builder .DecrementIndent() .AppendLine("}") .DecrementIndent() .AppendLine("}"); return builder.ToString(); }