public void WriteQuery(DataBaseTable item) { var path = Path.Combine(Config.CSharp.Repository.Concrecte.Path, item.Schema, "Query"); var file = $"{item.Name}Query.cs"; 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" }; if (Config.CSharp.EntityFramework != null) { nameSpace.Add($"{Config.CSharp.EntityFramework.NameSpace}.{item.Schema}"); } nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{item.Schema}.Filter"); var builder = new StringBuilderIndented(); var columnOrder = item.Columns.Any(c => c.Name == "Name") ? "Name" : item.PKName; var parentClass = $"SpecificationQuery<{item.Name}, {item.Name}Filter>"; var appClass = Config.CSharp.ApplicationClasses.FirstOrDefault(c => c.Name == item.Name && c.Schema == item.Schema); if (Config.CSharp.UsingApplicationBase && appClass != null) { parentClass = $"{appClass.NamespaceQuery}.{item.Name}Query"; nameSpace = new List <string>(); builder .ClassInit($"{item.Name}Query", parentClass, $"{Config.CSharp.Repository.Concrecte.NameSpace}.{item.Schema}.Query", ClassVisibility.Public, nameSpace.ToArray()) .ClassEnd(); } else { builder .ClassInit($"{item.Name}Query", parentClass, $"{Config.CSharp.Repository.Concrecte.NameSpace}.{item.Schema}.Query", ClassVisibility.Public, nameSpace.ToArray()) .AppendLine($"public override IQueryable<{item.Name}> Build(IQueryable<{item.Name}> source, {item.Name}Filter filter)") .AppendLine("{") .IncrementIndent() .AppendLine($"var spefications = NewSpecificationList()") .IncrementIndent() .AppendLine($".And(e => e.{item.PKName} == filter.Key, f => f.Key.HasValue)") .AppendLine($".And(e => filter.Keys.Contains(e.{item.PKName}), 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(); } Writer.WriteFile(path, file, builder, false); }
public void WriteFactoryCustom() { var path = Path.Combine(Config.CSharp.Factory.Path); var file = $"Register.cs"; if (File.Exists(Path.Combine(path, file))) { return; } var nameSpace = new List <string> { "XCommon.Patterns.Ioc" }; var builder = new StringBuilderIndented(); builder .ClassInit("Register", null, $"{Config.CSharp.Factory.NameSpace}", ClassVisility.Public, true, nameSpace.ToArray()) .AppendLine("public static void RegisterCustom(bool unitTest)") .AppendLine("{") .AppendLine("}") .ClassEnd(); Writer.WriteFile(path, file, builder, false); }
public void WriteFilter(DataBaseTable item) { var path = Path.Combine(Config.CSharp.Entity.Path, item.Schema, "Filter"); var file = $"{item.Name}Filter.cs"; var nameSpace = new List <string> { "System", "XCommon.Patterns.Repository.Entity" }; var builder = new StringBuilderIndented(); var baseClass = "FilterBase"; var appClass = Config.CSharp.ApplicationClasses.FirstOrDefault(c => c.Name == item.Name && c.Schema == item.Schema); if (Config.CSharp.UsingApplicationBase && appClass != null) { nameSpace = new List <string>(); baseClass = $"{appClass.NamespaceFilter}.{item.Name}Filter"; } builder .ClassInit($"{item.Name}Filter", baseClass, $"{Config.CSharp.Entity.NameSpace}.{item.Schema}.Filter", ClassVisibility.Public, nameSpace.ToArray()) .ClassEnd(); Writer.WriteFile(path, file, builder, false); }
private void WriteDataSource(DataBaseTable item) { var path = Path.Combine(Config.CSharp.UnitTest.Path, "DataSource", item.Schema); var file = $"{item.Name}DataSource.cs"; var nameSpace = new List <string> { "System", "System.Collections.Generic", "XCommon.Extensions.Converters", "XCommon.Util" }; nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{item.Schema}"); nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{item.Schema}.Filter"); var builder = new StringBuilderIndented(); builder .ClassInit($"{item.Name}DataSource", string.Empty, $"{Config.CSharp.UnitTest.NameSpace}.{item.Schema}", ClassVisibility.PublicStatic, nameSpace.ToArray()); builder .AppendLine($"public static IEnumerable<object[]> {item.Name}EntityDataSource") .AppendLine("{") .IncrementIndent() .AppendLine("get") .AppendLine("{") .IncrementIndent() .AppendLine($"var result = new PairList<Pair<{item.Name}Entity>, bool, string>();"); builder .ClassEnd(); Writer.WriteFile(path, file, builder, false); }
public void WriteFactory() { var path = Path.Combine(Config.CSharp.Factory.Path); var file = $"Register.Auto.cs"; var nameSpace = new List <string> { "XCommon.Patterns.Ioc", "XCommon.Patterns.Specification.Validation", "XCommon.Patterns.Specification.Query" }; foreach (var schema in Config.DataBaseItems) { if (Config.CSharp.Repository.Contract != null && Config.CSharp.Repository.Contract.Execute) { nameSpace.Add($"{Config.CSharp.Repository.Contract.NameSpace}.{schema.Name}"); } nameSpace.Add($"{Config.CSharp.Repository.Concrecte.NameSpace}.{schema.Name}"); nameSpace.Add($"{Config.CSharp.Repository.Concrecte.NameSpace}.{schema.Name}.Query"); nameSpace.Add($"{Config.CSharp.Repository.Concrecte.NameSpace}.{schema.Name}.Validate"); nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{schema.Name}"); nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{schema.Name}.Filter"); nameSpace.Add($"{Config.CSharp.EntityFramework.NameSpace}.{schema.Name}"); } ; var builder = new StringBuilderIndented(); builder .ClassInit("Register", null, $"{Config.CSharp.Factory.NameSpace}", ClassVisility.Public, true, nameSpace.ToArray()) .AppendLine("public static void Do(bool unitTest = false)") .AppendLine("{") .IncrementIndent(); if (Config.CSharp.Repository.Contract != null && Config.CSharp.Repository.Contract.Execute) { builder .AppendLine("RegisterRepository();"); } builder .AppendLine("RegisterValidate();") .AppendLine("RegisterQuery();") .AppendLine("RegisterCustom(unitTest);") .DecrementIndent() .AppendLine("}") .AppendLine(); if (Config.CSharp.Repository.Contract != null && Config.CSharp.Repository.Contract.Execute) { GenerateFactoryRepository(builder); } GenerateFactoryQuery(builder); GenerateFactoryValidate(builder); builder .ClassEnd(); Writer.WriteFile(path, file, builder, true); }
public void WriteConcrete(DataBaseTable item) { var path = Path.Combine(Config.CSharp.Repository.Concrecte.Path, item.Schema); var file = $"{item.Name}Business.cs"; var parentClass = $"RepositoryEFBase<{item.Name}Entity, {item.Name}Filter, {item.Name}, {Config.CSharp.EntityFramework.ContextName}>"; var nameSpace = new List <string> { "System", " XCommon.Patterns.Repository" }; nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{item.Schema}"); nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{item.Schema}.Filter"); nameSpace.Add($"{Config.CSharp.EntityFramework.NameSpace}"); nameSpace.Add($"{Config.CSharp.EntityFramework.NameSpace}.{item.Schema}"); if (Config.CSharp.Repository.Contract != null && Config.CSharp.Repository.Contract.Execute) { nameSpace.Add($"{Config.CSharp.Repository.Contract.NameSpace}.{item.Schema}"); parentClass = $"RepositoryEFBase<{item.Name}Entity, {item.Name}Filter, {item.Name}, {Config.CSharp.EntityFramework.ContextName}>, I{item.Name}Business"; } var builder = new StringBuilderIndented(); builder .ClassInit($"{item.Name}Business", parentClass, $"{Config.CSharp.Repository.Concrecte.NameSpace}.{item.Schema}", ClassVisility.Public, nameSpace.ToArray()) .ClassEnd(); Writer.WriteFile(path, file, builder, false); }
public void WriteValidation(DataBaseTable item) { var path = Path.Combine(Config.CSharp.Repository.Concrecte.Path, item.Schema, "Validate"); var file = $"{item.Name}Validate.cs"; var nameSpace = new List <string> { "System", "XCommon.Application.Executes", "XCommon.Patterns.Specification.Validation", "XCommon.Patterns.Specification.Validation.Extensions" }; nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{item.Schema}"); var builder = new StringBuilderIndented(); builder .ClassInit($"{item.Name}Validate", $"SpecificationValidation<{item.Name}Entity>", $"{Config.CSharp.Repository.Concrecte.NameSpace}.{item.Schema}.Validate", ClassVisility.Public, nameSpace.ToArray()) .AppendLine($"public override bool IsSatisfiedBy({item.Name}Entity entity, Execute execute)") .AppendLine("{") .IncrementIndent() .AppendLine("var spefications = NewSpecificationList()") .IncrementIndent() .AppendLine(".AndIsValid(e => e.Key != Guid.Empty, \"Default key isn't valid\");") .DecrementIndent() .AppendLine() .AppendLine("return CheckSpecifications(spefications, entity, execute);") .DecrementIndent() .AppendLine("}") .InterfaceEnd(); Writer.WriteFile(path, file, builder, false); }
public void WriteValidation(DataBaseTable item) { var path = Path.Combine(Config.CSharp.Repository.Concrecte.Path, item.Schema, "Validate"); var file = $"{item.Name}Validate.cs"; var nameSpace = new List <string> { "System", "System.Threading.Tasks", "XCommon.Application.Executes", "XCommon.Patterns.Specification.Validation", "XCommon.Patterns.Specification.Validation.Extensions" }; nameSpace.Add($"{Config.CSharp.Entity.NameSpace}.{item.Schema}"); var builder = new StringBuilderIndented(); var parentClass = $"SpecificationValidation<{item.Name}Entity>"; var appClass = Config.CSharp.ApplicationClasses.FirstOrDefault(c => c.Name == item.Name && c.Schema == item.Schema); if (Config.CSharp.UsingApplicationBase && appClass != null) { nameSpace = new List <string>(); parentClass = $"{appClass.NamespaceValidate}.{item.Name}Validate"; builder .ClassInit($"{item.Name}Validate", parentClass, $"{Config.CSharp.Repository.Concrecte.NameSpace}.{item.Schema}.Validate", ClassVisibility.Public, nameSpace.ToArray()) .InterfaceEnd(); } else { builder .ClassInit($"{item.Name}Validate", parentClass, $"{Config.CSharp.Repository.Concrecte.NameSpace}.{item.Schema}.Validate", ClassVisibility.Public, nameSpace.ToArray()) .AppendLine($"public override async Task<bool> IsSatisfiedByAsync({item.Name}Entity entity, Execute execute)") .AppendLine("{") .IncrementIndent() .AppendLine("var spefications = NewSpecificationList()") .IncrementIndent() .AppendLine(".AndIsValid(e => e.Key != Guid.Empty, \"Default key isn't valid\");") .DecrementIndent() .AppendLine() .AppendLine("return await CheckSpecificationsAsync(spefications, entity, execute);") .DecrementIndent() .AppendLine("}") .InterfaceEnd(); } Writer.WriteFile(path, file, builder, false); }
public void WriteFilter(DataBaseTable item) { var path = Path.Combine(Config.CSharp.Entity.Path, item.Schema, "Filter"); var file = $"{item.Name}Filter.cs"; var nameSpace = new List <string> { "System", "XCommon.Patterns.Repository.Entity" }; var builder = new StringBuilderIndented(); builder .ClassInit($"{item.Name}Filter", "FilterBase", $"{Config.CSharp.Entity.NameSpace}.{item.Schema}.Filter", ClassVisility.Public, nameSpace.ToArray()) .ClassEnd(); Writer.WriteFile(path, file, builder, false); }
internal static StringBuilderIndented ClassInit(this StringBuilderIndented builder, string className, string parent, string nameSpace, ClassVisility visibily, params string[] usings) { return(builder .ClassInit(className, parent, nameSpace, visibily, false, usings)); }