Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 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));
 }