Exemplo n.º 1
0
        public override TemplateOutput Generate()
        {
            TemplateOutput retVal = new TemplateOutput();

            try
            {
                string outputfile = TemplateVariablesManager.GetOutputFile(templateIdentity: ProcessModel.TemplateIdentity,
                                                                           fileName: Consts.OUT_repository);
                string filepath = outputfile;

                var    generator     = new RepositoryGenerator(inflector: Inflector);
                string generatedCode = generator.GenerateRepository(
                    baseNamespace: BaseNamespace,
                    namespacePostfix: NamespacePostfix,
                    repositoryEntitiesNamespace: RepositoryEntitiesNamespace,
                    dbContextName: DbContextName,
                    repositoryInterfaceNamespace: RepositoryInterfaceNamespace);

                retVal.Files.Add(new OutputFile()
                {
                    Content = generatedCode,
                    Name    = filepath
                });
            }
            catch (Exception ex)
            {
                base.AddError(ref retVal, ex, Enums.LogLevel.Error);
            }

            AddTemplateVariablesManagerErrorsToRetVal(ref retVal, Enums.LogLevel.Error);
            return(retVal);
        }
Exemplo n.º 2
0
        public void TestStrongTypesRepo()
        {
            var folder = @"..\UnitTests\TestAtoms\CareRelated";

            var args = new GeneratorArguments <CSharpTargetConfig>(
                new CSharpTargetConfig
            {
                Entities =
                {
                    StrongTypes = true
                }
            },
                folder, AtomCreator.LoadDefaults(folder));

            var sqlArgs      = new GeneratorArguments <SqlTargetConfig>(new SqlTargetConfig(), args.AtomsFolder, AtomCreator.LoadDefaults(folder));
            var sqlGenerator = new SqlGenerator().Generate(sqlArgs);


            var result = new RepositoryGenerator(sqlGenerator).Generate(args);

            foreach (var item in result)
            {
                Console.WriteLine(item.Output);
            }
        }
Exemplo n.º 3
0
        public void Execute()
        {
            var defaultBaseType   = typeof(XpoRepository <>);
            var constructorParams = new Type[] { typeof(ISessionManager) };

            RepositoryGenerator.GenerateRepositories(dependencyResolver, defaultBaseType, constructorParams, _appDomainHelpers);
        }
Exemplo n.º 4
0
        public FileResult Post(List <IFormFile> files)
        {
            List <Model> Models = new List <Model>();
            long         size   = files.Sum(f => f.Length);

            try
            {
                var filePath = Path.GetTempFileName();

                foreach (var formFile in files)
                {
                    if (formFile.Length > 0)
                    {
                        using (var reader = new StreamReader(formFile.OpenReadStream()))
                        {
                            string text = reader.ReadToEnd();
                            reader.Dispose();

                            string[] models = text.Split(new string[] { "class" }, StringSplitOptions.None);

                            for (int i = 1; i < models.Length; i++)
                            {
                                Model m = new Model(models[i], "Test");

                                Models.Add(m);
                            }
                        }
                    }
                }

                string fileName = "Project.txt";
                byte[] bytes    = new byte[0];

                MemoryStream ms = new MemoryStream();
                TextWriter   tw = new StreamWriter(ms);

                List <string> downloads = new List <string>();
                foreach (Model m in Models)
                {
                    tw.WriteLine(APIControllerGenerator.Generate(m));
                    tw.WriteLine(RepositoryGenerator.Generate(m));
                    tw.WriteLine(ServiceGenerator.Generate(m));
                    tw.WriteLine(TableGenerator.Generate(m, Models));
                }

                tw.Flush();
                bytes = ms.ToArray();
                ms.Dispose();

                return(File(bytes, "application/x-msdownload", fileName));
            }
            catch (Exception ex)
            {
                return(File("", ""));
            }
        }
Exemplo n.º 5
0
        public void Execute()
        {
            var orm = ConfigurationManager.AppSettings["BoC.Persistence.Orm"];

            if (orm != null && !orm.Equals("db4o", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            var defaultBaseType   = typeof(Db4oRepository <>);
            var constructorParams = new[] { typeof(ISessionManager) };

            RepositoryGenerator.GenerateRepositories(_dependencyResolver, defaultBaseType, constructorParams, _appDomainHelpers);
        }
        public void Execute()
        {
            var orm = ConfigurationManager.AppSettings["BoC.Persistence.Orm"];

            if (orm != null && !orm.Equals("umbracoglass", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            var defaultBaseType   = typeof(UmbracoRepository <>);
            var constructorParams = new[] { typeof(IUmbracoServiceProvider) };

            RepositoryGenerator.GenerateRepositories(_dependencyResolver, defaultBaseType, constructorParams);
        }
        public void Execute()
        {
            var orm = ConfigurationManager.AppSettings["BoC.Persistence.Orm"];

            if (orm != null && !orm.Equals("sitecoreglass", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            var defaultBaseType   = typeof(SitecoreRepository <>);
            var constructorParams = new[] { typeof(IDatabaseProvider), typeof(ISitecoreServiceProvider), typeof(IProviderSearchContextProvider), typeof(ILogger) };

            RepositoryGenerator.GenerateRepositories(dependencyResolver, defaultBaseType, constructorParams, _appDomainHelpers);
        }
Exemplo n.º 8
0
        public void TestRepos()
        {
            var folder = @"..\UnitTests\TestAtoms\CareRelated";
            var args = new GeneratorArguments<CSharpTargetConfig>(new CSharpTargetConfig(), folder, AtomCreator.LoadDefaults(folder));

            var sqlArgs = new GeneratorArguments<SqlTargetConfig>(new SqlTargetConfig(), args.AtomsFolder, AtomCreator.LoadDefaults(folder));
            var sqlGenerator = new SqlGenerator().Generate(sqlArgs);

            var result = new RepositoryGenerator(sqlGenerator).Generate(args);

            foreach (var item in result)
            {
                Console.WriteLine(item.Output);
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Генерация и регистрация репозриторя.
        /// </summary>
        /// <param name="container">Unity-container.</param>
        /// <param name="repositoryInterfaceType">Тип интерфейса репозитория.</param>
        private static void RegisterRepository(this IUnityContainer container, Type repositoryInterfaceType)
        {
            var factoryGenerator    = new RepositoryGenerator();
            var concreteFactoryType = factoryGenerator.Generate(repositoryInterfaceType);

            container.RegisterType(
                repositoryInterfaceType,
                new TransientLifetimeManager(),
                new InjectionFactory(
                    c =>
            {
                var activator = new RepositoryActivator();
                return(activator.CreateInstance(c, concreteFactoryType));
            }));
        }
Exemplo n.º 10
0
        static void Main(string[] args)
        {
            var tableName = "GP_NIVTIN";
            var className = "NivelTinta";

            //GENERATE SQL
            var spGen = new StoreProcedureGenerator(tableName);
            var spMax = spGen.GetMaxStoreProcedure();

            var repositorySp = spGen.GenerateCode();

            Console.Write(repositorySp);
            Console.WriteLine("Code SQL generated!!!");

            Console.WriteLine("");
            Console.WriteLine("");

            //GENERATE REPOSITORY
            var rpGen          = new RepositoryGenerator(tableName, className, spMax);
            var repositoryCode = rpGen.GenerateCode();

            Console.Write(repositoryCode);
            Console.WriteLine("Code Repository generated!!!");

            Console.WriteLine("");
            Console.WriteLine("");

            //GENERATE SERVICE
            var svGen       = new ServiceGenerator(className);
            var serviceCode = svGen.GenerateCode();

            Console.Write(serviceCode);
            Console.WriteLine("Code Service generated!!!");

            Console.WriteLine("");
            Console.WriteLine("");

            //GET PROPERTIES
            foreach (var prop in typeof(ColumnTable).GetProperties())
            {
                Console.WriteLine("{0}={1}", prop.Name, prop.PropertyType);
            }

            Console.ReadLine();
        }
Exemplo n.º 11
0
        private IEnumerable<GeneratorResult> FromTargetConfigs(CSharpTargetConfig targetConfig)
        {
            var args = new GeneratorArguments<CSharpTargetConfig>(targetConfig, AtomsFolder, AtomCreator.LoadDefaults(AtomsFolder));

            if(targetConfig.Repository != null){
                var sqlArgs = new GeneratorArguments<SqlTargetConfig>(new SqlTargetConfig(), args.AtomsFolder, AtomCreator.LoadDefaults(AtomsFolder));
                var sqlGenerator = new SqlGenerator().Generate(sqlArgs);

                var repoResult = new RepositoryGenerator(sqlGenerator).Generate(args);

                repoResult.OutputPath = targetConfig.Repository.OutputPath;

                yield return repoResult;
            }

            var codeResult = new CodeGenerator().Generate(args);

            codeResult.OutputPath = targetConfig.Entities.OutputPath;

            yield return codeResult;
        }
Exemplo n.º 12
0
        private IEnumerable <GeneratorResult> FromTargetConfigs(CSharpTargetConfig targetConfig)
        {
            var args = new GeneratorArguments <CSharpTargetConfig>(targetConfig, AtomsFolder, AtomCreator.LoadDefaults(AtomsFolder));

            if (targetConfig.Repository != null)
            {
                var sqlArgs      = new GeneratorArguments <SqlTargetConfig>(new SqlTargetConfig(), args.AtomsFolder, AtomCreator.LoadDefaults(AtomsFolder));
                var sqlGenerator = new SqlGenerator().Generate(sqlArgs);

                var repoResult = new RepositoryGenerator(sqlGenerator).Generate(args);

                repoResult.OutputPath = targetConfig.Repository.OutputPath;

                yield return(repoResult);
            }

            var codeResult = new CodeGenerator().Generate(args);

            codeResult.OutputPath = targetConfig.Entities.OutputPath;

            yield return(codeResult);
        }
Exemplo n.º 13
0
        protected override IEnumerable <GeneratorResult> Generate()
        {
            AtomConfig config = TryLoadAtomConfig();

            if (config == null)
            {
                yield break;
            }

            var sqlConfig    = config.Targets.Values.OfType <SqlTargetConfig>().Single();
            var csharpConfig = config.Targets.Values.OfType <CSharpTargetConfig>().Single();

            var defaults = AtomCreator.LoadDefaults(config.AtomPath);

            var sqlArgs = new GeneratorArguments <SqlTargetConfig>(sqlConfig, config.AtomPath, defaults);
            var args    = new GeneratorArguments <CSharpTargetConfig>(csharpConfig, config.AtomPath, defaults, sqlArgs.Atoms);

            var sqlResult = new SqlGenerator().Generate(sqlArgs);

            sqlResult.OutputPath = sqlConfig.OutputPath;

            //if (Directory.Exists(sqlResult.OutputPath))
            //{
            //    foreach (var file in Directory.EnumerateFiles(sqlResult.OutputPath, "*.generated.sql", SearchOption.AllDirectories))
            //    {
            //        sqlResult.Deletions.Add(file);
            //    }
            //}

            string redGateFile = Path.Combine(sqlConfig.OutputPath, "RedGateDatabaseInfo.xml");

            Log.Information("Looking for redgate database info xml at {RedGateDatabaseInfoXml}", redGateFile);


            if (sqlResult.DataFiles.Any() &&
                File.Exists(redGateFile))
            {
                Log.Information("Found redgate file, updating...");

                var regate       = XDocument.Load(uri: redGateFile);
                var dataFiles    = regate.Root.Elements("DataFileSet").First();
                var allDataFiles = dataFiles.Elements("DataFile")
                                   .Select(n => n.Value).Union(sqlResult.DataFiles, StringComparer.OrdinalIgnoreCase).ToList();

                dataFiles.Elements("Count")
                .First()
                .Value = allDataFiles.Count().ToString();

                Log.Information("DataFiles Count: {DataFileCount}", allDataFiles.Count());

                dataFiles.Elements("DataFile").Remove();

                dataFiles.Add(allDataFiles.Select(s => new XElement("DataFile", s)));

                var genResult = new GeneratorResult()
                {
                    OutputPath = sqlConfig.OutputPath
                };

                genResult.AddOutput("RedGateDatabaseInfo.xml", regate.ToString());

                yield return(genResult);
            }

            yield return(sqlResult);

            if (csharpConfig.Repository != null)
            {
                var repoResult = new RepositoryGenerator(sqlResult).Generate(args);

                repoResult.OutputPath = csharpConfig.Repository.OutputPath;

                yield return(repoResult);
            }

            var codeResult = new CodeGenerator().Generate(args);

            codeResult.OutputPath = csharpConfig.Entities.OutputPath;

            yield return(codeResult);
        }
Exemplo n.º 14
0
        protected override IEnumerable<GeneratorResult> Generate()
        {
            AtomConfig config = TryLoadAtomConfig();

            if (config == null)
            {
                yield break;
            }

            var sqlConfig = config.Targets.Values.OfType<SqlTargetConfig>().Single();
            var csharpConfig = config.Targets.Values.OfType<CSharpTargetConfig>().Single();

            var defaults = AtomCreator.LoadDefaults(config.AtomPath);

            var sqlArgs = new GeneratorArguments<SqlTargetConfig>(sqlConfig, config.AtomPath, defaults);
            var args = new GeneratorArguments<CSharpTargetConfig>(csharpConfig, config.AtomPath, defaults, sqlArgs.Atoms);

            var sqlResult = new SqlGenerator().Generate(sqlArgs);

            sqlResult.OutputPath = sqlConfig.OutputPath;

            //if (Directory.Exists(sqlResult.OutputPath))
            //{
            //    foreach (var file in Directory.EnumerateFiles(sqlResult.OutputPath, "*.generated.sql", SearchOption.AllDirectories))
            //    {
            //        sqlResult.Deletions.Add(file);
            //    }
            //}

            string redGateFile = Path.Combine(sqlConfig.OutputPath, "RedGateDatabaseInfo.xml");
            Log.Information("Looking for redgate database info xml at {RedGateDatabaseInfoXml}", redGateFile);

            if (sqlResult.DataFiles.Any() &&
                File.Exists(redGateFile))
            {
                Log.Information("Found redgate file, updating...");

                var regate = XDocument.Load(uri: redGateFile);
                var dataFiles = regate.Root.Elements("DataFileSet").First();
                var allDataFiles = dataFiles.Elements("DataFile")
                                            .Select(n => n.Value).Union(sqlResult.DataFiles, StringComparer.OrdinalIgnoreCase).ToList();

                dataFiles.Elements("Count")
                         .First()
                         .Value = allDataFiles.Count().ToString();

                Log.Information("DataFiles Count: {DataFileCount}", allDataFiles.Count());

                dataFiles.Elements("DataFile").Remove();

                dataFiles.Add(allDataFiles.Select(s => new XElement("DataFile", s)));

                var genResult = new GeneratorResult()
                {
                    OutputPath = sqlConfig.OutputPath
                };

                genResult.AddOutput("RedGateDatabaseInfo.xml", regate.ToString());

                yield return genResult;
            }

            yield return sqlResult;

            if (csharpConfig.Repository != null)
            {
                var repoResult = new RepositoryGenerator(sqlResult).Generate(args);

                repoResult.OutputPath = csharpConfig.Repository.OutputPath;

                yield return repoResult;
            }

            var codeResult = new CodeGenerator().Generate(args);

            codeResult.OutputPath = csharpConfig.Entities.OutputPath;

            yield return codeResult;
        }
Exemplo n.º 15
0
        private void btnGenerateCode_Click(object sender, EventArgs e)
        {
            try
            {
                var tableName = this.txtSqlTableName.Text.Trim();
                if (tableName.Length.Equals(0))
                {
                    throw new Exception("Necesita especificar el nombre de la tabla.");
                }

                var className = this.txtClassName.Text.Trim();
                if (className.Length.Equals(0))
                {
                    throw new Exception("Necesita especificar el nombre de la clase.");
                }
                var varName = $"{className.Substring(0, 1).ToLower()}{className.Substring(1, className.Length - 1)}";

                var outputFolder = this.txtOutputFolder.Text.Trim();
                if (outputFolder.Length.Equals(0))
                {
                    throw new Exception("Necesita especificar el folder destino.");
                }

                var sqlFileName        = $"{tableName}.sql";
                var repositoryFileName = $"{className}Repository.cs";
                var interfaceFileName  = $"I{className}Service.cs";
                var serviceFileName    = $"{className}Service.cs";
                var gsFileName         = $"{className}GetAndSet.cs";

                Cursor.Current = Cursors.WaitCursor;

                //GENERATE SQL
                var spGen   = new StoreProcedureGenerator(tableName);
                var sqlCode = spGen.GenerateCode();
                Utilities.WriteFile(sqlCode, outputFolder, sqlFileName);
                //--

                var spMax = spGen.GetMaxStoreProcedure();

                //GENERATE REPOSITORY
                var rpGen          = new RepositoryGenerator(tableName, className, spMax);
                var repositoryCode = rpGen.GenerateCode();
                Utilities.WriteFile(repositoryCode, outputFolder, repositoryFileName);
                //--

                //GENERATE SERVICE
                var svGen         = new ServiceGenerator(className);
                var interfaceCode = svGen.GenerateCodeInterface();
                var serviceCode   = svGen.GenerateCodeService();
                Utilities.WriteFile(interfaceCode, outputFolder, interfaceFileName);
                Utilities.WriteFile(serviceCode, outputFolder, serviceFileName);
                //--

                //GENERATE GET AND SET
                var columns = new List <ColumnTable>();
                for (var i = 0; i < this.dgdData.Rows.Count - 1; i++)
                {
                    var row = this.dgdData.Rows[i];
                    //row.Cells[2].Value = Utilities.GetSapDataType(column.SapDataType, column.SapDataType2);
                    columns.Add(new ColumnTable
                    {
                        Id             = (int)row.Cells[8].Value,
                        SqlTableName   = row.Cells[9].Value?.ToString(),
                        SqlColumnName  = row.Cells[0].Value?.ToString(),
                        SapDescription = row.Cells[10].Value?.ToString(),
                        SqlDataType    = row.Cells[6].Value?.ToString(),
                        SapDataType    = "",
                        SapDataType2   = "",
                        SqlSize        = (int)row.Cells[3].Value,
                        SqlPrecision   = (int)row.Cells[4].Value,
                        NullValue      = (bool)row.Cells[7].Value ? 1 : 0,
                        PropertyName   = row.Cells[5].Value?.ToString(),
                        PropertyType   = row.Cells[6].Value?.ToString()
                    });
                }

                var gsGen  = new GetAndSetGenerator <ColumnTable>(tableName, className, varName, columns);
                var gsCode = gsGen.GenerateCode();
                Utilities.WriteFile(gsCode, outputFolder, gsFileName);
                //--

                Cursor.Current = Cursors.Default;
                MessageBox.Show("Archivos generados", "Info");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }