コード例 #1
0
        static void Main(string[] args)
        {
            Logger.RegisterCurrentLogger(sourceContext => new ConsoleLogger(sourceContext));
            var logger = Logger.GetLogger(typeof(Program));

            var opts = AppOptionHandler.ParseOptions(args);

            Console.WriteLine("Starting application. Generated files will be saved on Folder: {0} ", opts.WorkingFolder);
            Console.WriteLine("Template Folder: {0} \n", opts.TemplateFolder);

            //can we load sqlite
            Console.WriteLine("Loading sqlite provider");
            var sqlite = new Goliath.Data.Sqlite.SqliteDialect();

            Console.WriteLine("Loading postgresql provider");
            var postgres = new Goliath.Data.Postgres.PostgresDialect();

            var rng = new Goliath.Security.RandomStringGenerator();

            SupportedRdbms rdbms;

            if (!string.IsNullOrWhiteSpace(opts.ProviderName))
            {
                switch (opts.ProviderName.ToUpper())
                {
                case "MSSQL2008":
                    rdbms = SupportedRdbms.Mssql2008;
                    break;

                case "MSSQL2008R2":
                    rdbms = SupportedRdbms.Mssql2008R2;
                    break;

                case "POSTGRESQL8":
                    rdbms = SupportedRdbms.Postgresql8;
                    break;

                case "POSTGRESQL9":
                    rdbms = SupportedRdbms.Postgresql9;
                    break;

                case "SQLITE3":
                    rdbms = SupportedRdbms.Sqlite3;
                    break;

                default:
                    rdbms = SupportedRdbms.Mssql2008;
                    break;
                }
            }

            else
            {
                rdbms = SupportedRdbms.Mssql2008R2;
            }

            if (string.IsNullOrWhiteSpace(opts.QueryProviderName))
            {
                opts.QueryProviderName = SupportedRdbms.Mssql2008R2.ToString();
            }

            Console.Write("Provider");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" {0} ", rdbms);
            Console.ResetColor();
            Console.Write("Activated.");
            Console.WriteLine("\n\nLoading settings...");

            var codeGenRunner = new CodeGenRunner(rdbms, new GenericCodeGenerator())
            {
                TemplateFolder    = opts.TemplateFolder,
                ScriptFolder      = AppDomain.CurrentDomain.BaseDirectory,
                DatabaseFolder    = AppDomain.CurrentDomain.BaseDirectory,
                WorkingFolder     = opts.WorkingFolder,
                QueryProviderName = opts.QueryProviderName,
                Settings          =
                {
                    Namespace               = opts.Namespace,
                    AssemblyName            = opts.AssemblyName,
                    ConnectionString        = opts.ConnectionString,
                    SupportManyToMany       = opts.SupportManyToMany,
                    SupportTableInheritance = opts.SupportTableInheritance,
                    GenerateLinkTable       = opts.GenerateLinkTable,
                    Platform                = rdbms.ToString()
                }
            };

            if (!string.IsNullOrWhiteSpace(opts.AdditionalNameSpaces))
            {
                var split = opts.AdditionalNameSpaces.Split(new string[] { ",", "|" },
                                                            StringSplitOptions.RemoveEmptyEntries);

                foreach (var s in split)
                {
                    codeGenRunner.Settings.AdditionalNamespaces.Add(s);
                }
            }

            var action        = opts.ActionName.ToUpper();
            var actionFactory = new ActionFactory(opts.PluginFolder);
            var actionRunner  = actionFactory.GetRunner(action);

            try
            {
                actionRunner.Execute(opts, codeGenRunner);
                logger.Log(LogLevel.Debug, $"Action {actionRunner.ActionName} complete.{Environment.NewLine}-- Working Folder:{opts.WorkingFolder}"

                           + $"{Environment.NewLine}-- Map file:{opts.MapFile}"

                           );
            }
            catch (Exception ex)
            {
                PrintError("Exception thrown while trying to generate all.", ex);
                Environment.Exit(2);
            }

            Console.WriteLine("\nDone!");
            Environment.Exit(0);
        }
コード例 #2
0
 public abstract void Execute(AppOptionInfo opts, CodeGenRunner codeGenRunner);