Exemplo n.º 1
0
        private int Run(string[] args)
        {
            int ret = 0;

            for (int i = 0; i < args.Length; i++)
            {
                switch (args[i])
                {
                case "-create":
                case "-c":
                    DoCreate = true;
                    break;

                case "-drop":
                case "-d":
                    DoDrop = true;
                    break;

                case "-verbose":
                case "-v":
                    Verbose = true;
                    break;
                }
            }

            if (DoDrop)
            {
                while (true)
                {
                    logger.Warn("This will DELETE the \"{0}\" database and the \"{1}\" user.\n"
                                + "Do you want to proceed? [yes|no] ",
                                DatabaseConfig.DatabaseName, DatabaseConfig.DatabaseUserName);
                    string answer = Console.ReadLine();
                    if (answer.ToLowerInvariant() == "y" || answer.ToLowerInvariant() == "yes")
                    {
                        bool ok = DatabaseEngine.DropDatabase();
                        if (!ok)
                        {
                            ret = 1;
                        }
                        else
                        {
                            logger.Info("Database was successfully dropped.");
                        }
                        break;
                    }
                    else if (answer.ToLowerInvariant() == "n" || answer.ToLowerInvariant() == "no")
                    {
                        logger.Info("Drop canceled. Peace!");
                        break;
                    }
                }
            }

            if (DoCreate)
            {
                bool ok = DatabaseEngine.CreateDatabase();
                if (!ok)
                {
                    ret = 1;
                }
                else
                {
                    logger.Info("Database was successfully created.");
                }
            }

            return(ret);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates project.
        /// </summary>
        /// <param name="name">Project's name.</param>
        /// <param name="folderPath">Project's folder path.</param>
        /// <param name="description">Proejct's description.</param>
        /// <returns>Created project</returns>
        static public Project CreateProject(string name, string folderPath, string description, CapacitiesInfo capacitiesInfo,
                                            OrderCustomPropertiesInfo orderCustomPropertiesInfo, FuelTypesInfo fuelTypesInfo /*serivces*/,
                                            IProjectSaveExceptionHandler logHandler)
        {
            WorkspaceHandler workspaceHandler = new WorkspaceHandler(logHandler);

            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (folderPath == null)
            {
                throw new ArgumentNullException("folderPath");
            }
            if (description == null)
            {
                throw new ArgumentNullException("description");
            }

            if (!CheckMaximumLengthConstraint(orderCustomPropertiesInfo))
            {
                throw new ApplicationException(Properties.Messages.Error_OrderCustomPropTooLong);
            }

            bool   isDBCreated = false;
            string dbPath      = "";

            try
            {
                name = name.Trim();

                // make project configuration path
                string projCfgPath = System.IO.Path.Combine(folderPath, name);
                projCfgPath += ProjectConfiguration.FILE_EXTENSION;

                string databasePath = ProjectConfiguration.GetDatabaseFileName(name);
                // create project configuration
                ProjectConfiguration projConfig = new ProjectConfiguration(name, folderPath, description,
                                                                           databasePath, null, DateTime.Now);

                projConfig.Validate();

                projConfig.Save();

                dbPath = projConfig.DatabasePath;

                DatabaseEngine.DeleteDatabase(dbPath);

                // create database
                DatabaseEngine.CreateDatabase(dbPath, SchemeVersion.CreationScript);
                isDBCreated = true;

                Project project = new Project(projCfgPath, capacitiesInfo,
                                              orderCustomPropertiesInfo, workspaceHandler);

                foreach (FuelTypeInfo fuelTypeInfo in fuelTypesInfo)
                {
                    FuelType projectFuelType = new FuelType();
                    projectFuelType.Name        = fuelTypeInfo.Name;
                    projectFuelType.Price       = fuelTypeInfo.Price;
                    projectFuelType.Co2Emission = fuelTypeInfo.Co2Emission;
                    project.FuelTypes.Add(projectFuelType);
                }

                project.Save();

                workspaceHandler.Handled = true;

                return(project);
            }
            catch (Exception ex)
            {
                Logger.Info(ex);
                if (isDBCreated)
                {
                    DatabaseEngine.DeleteDatabase(dbPath);
                }

                throw;
            }
        }