예제 #1
0
        public DataInitializationProcess(ILogger logger, DataInitialization options)
        {
            _logger  = logger;
            _options = options;

            if (!_options.DirectoryName.EndsWith("/"))
            {
                _options.DirectoryName = _options.DirectoryName + "/";
            }
        }
예제 #2
0
 /// <summary>
 /// Applies all pending updates to the database schema.
 /// </summary>
 public void ApplyAllPendingUpdates()
 {
     using (var installationContext = new EntityDataContext())
     {
         var isNewDatabase = !installationContext.Database.GetAppliedMigrations().Any();
         installationContext.Database.Migrate();
         if (isNewDatabase)
         {
             var dataInitialization = new DataInitialization(this);
             dataInitialization.CreateInitialData();
         }
     }
 }
예제 #3
0
파일: Program.cs 프로젝트: reszczyk/api
        public static IWebHost SeedData(this IWebHost host)
        {
            using (var scope = host.Services.CreateScope())
            {
                var services    = scope.ServiceProvider;
                var context     = services.GetService <Kibol_AlertContext>();
                var userManager = services.GetService <UserManager <User> >();

                context.Database.Migrate();
                var seeder = new DataInitialization(context, userManager);
                seeder.SeedClubs();
                seeder.SeedUser();
            }
            return(host);
        }
예제 #4
0
        private void InitTestData()
        {
            Directory.GetFiles(AppDomain.CurrentDomain.GetData("ContentRootPath").ToString() + "\\App_Data\\DbInitializer", "*.Workflows.json")
            .ToList()
            .ForEach(path =>
            {
                string json   = File.ReadAllText(path);
                var dbContent = JsonConvert.DeserializeObject <JObject>(json);

                if (dbContent["workflows"] != null)
                {
                    DataInitialization.InitWorkflows(dc, dbContent["workflows"].ToList());
                }
            });
        }
예제 #5
0
파일: Program.cs 프로젝트: webdes27/OpenMU
        private IPersistenceContextProvider DeterminePersistenceContextProvider(string[] args, ILoggerFactory loggerFactory)
        {
            IPersistenceContextProvider contextProvider;

            if (args.Contains("-demo"))
            {
                contextProvider = new InMemoryPersistenceContextProvider();
                var initialization = new DataInitialization(contextProvider, loggerFactory);
                initialization.CreateInitialData();
            }
            else
            {
                contextProvider = this.PrepareRepositoryManager(args.Contains("-reinit"), args.Contains("-autoupdate"), loggerFactory);
            }

            return(contextProvider);
        }
예제 #6
0
파일: Program.cs 프로젝트: ziewa/Clinic
        public static IHost SeedData(this IHost host)
        {
            using (var scope = host.Services.CreateScope())
            {
                var services    = scope.ServiceProvider;
                var context     = services.GetService <ApplicationDbContext>();
                var userManager = services.GetService <UserManager <AppUser> >();

                context.Database.Migrate();
                var seeder = new DataInitialization(context, userManager);
                seeder.SeedUsers();
                seeder.SeedClinics();
                seeder.SeedSpecializations();
                seeder.SeedDoctors();
            }
            return(host);
        }
예제 #7
0
        private IPersistenceContextProvider PrepareRepositoryManager(bool reinit, bool autoupdate)
        {
            PersistenceContextProvider.InitializeSqlLogging();
            var manager = new PersistenceContextProvider();

            if (reinit || !manager.DatabaseExists())
            {
                Log.Info("The database is getting (re-)initialized...");
                manager.ReCreateDatabase();
                var initialization = new DataInitialization(manager);
                initialization.CreateInitialData();
                Log.Info("...initialization finished.");
            }
            else if (!manager.IsDatabaseUpToDate())
            {
                if (autoupdate)
                {
                    Console.WriteLine("The database needs to be updated before the server can be started. Updating...");
                    manager.ApplyAllPendingUpdates();
                    Console.WriteLine("The database has been successfully updated.");
                }
                else
                {
                    Console.WriteLine("The database needs to be updated before the server can be started. Apply update? (y/n)");
                    var key = Console.ReadLine()?.ToLowerInvariant();
                    if (key == "y")
                    {
                        manager.ApplyAllPendingUpdates();
                        Console.WriteLine("The database has been successfully updated.");
                    }
                    else
                    {
                        Console.WriteLine("Cancelled the update process, can't start the server.");
                        return(null);
                    }
                }
            }
            else
            {
                // everything is fine and ready
            }

            return(manager);
        }
        private void TestDataInitialization(IPersistenceContextProvider contextProvider)
        {
            var initialization = new DataInitialization(contextProvider, new NullLoggerFactory());

            initialization.CreateInitialData();

            // Loading game configuration
            using var context = contextProvider.CreateNewConfigurationContext();
            var gameConfiguraton = context.Get <DataModel.Configuration.GameConfiguration>().FirstOrDefault();

            Assert.That(gameConfiguraton, Is.Not.Null);

            // Testing loading of an account
            using var accountContext = contextProvider.CreateNewPlayerContext(gameConfiguraton);
            var account1 = accountContext.GetAccountByLoginName("test1", "test1");

            Assert.That(account1, Is.Not.Null);
            Assert.That(account1.LoginName, Is.EqualTo("test1"));
        }
예제 #9
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Canva MainForm = new Canva();

            UnityContainer UnityContainerInit = new UnityContainer();

            DataInitialization InitializatioForm = UnityContainerInit.Resolve <DataInitialization>(new OrderedParametersOverride(new object[] { MainForm.Width, MainForm.Height }));

            MainForm.InitializatioForm = InitializatioForm;

            MainForm.Workspace = InitializatioForm.ReturnWorkspace();

            Application.Run(MainForm);

            //Application.Run(new Canva());
        }
예제 #10
0
        static void Main(string[] args)
        {
            bool initializeFlag = false;


            DataInitialization initialize = new DataInitialization();
            var logic = new CommunityLogic();

            if (initializeFlag)
            {
                logic.serializer.RestartData();
                initialize.Run();
                logic.serializer.Serialize();
                Console.WriteLine("Data Initialized");
            }


            logic.serializer.Deserialize();
            var display = new CommunityDisplay(logic);

            display.WelcomeScreen();
        }
예제 #11
0
        public static void Init()
        {
            var dc = DbAgent.InitDc();

            if (dc.Table <Workflow>().FirstOrDefault() != null)
            {
                return;
            }

            Directory.GetFiles(Database.ContentRootPath + "\\App_Data\\DbInitializer", "*.Workflows.json")
            .ToList()
            .ForEach(path =>
            {
                string json   = File.ReadAllText(path);
                var dbContent = JsonConvert.DeserializeObject <JObject>(json);

                if (dbContent["workflows"] != null)
                {
                    dc.DbTran(() => DataInitialization.InitWorkflows(dc, dbContent["workflows"].ToList()));
                }
            });
        }
예제 #12
0
        public void SetupDatabaseAndTestLoadingData()
        {
            var manager = new PersistenceContextProvider();

            manager.ReCreateDatabase();
            var initialization = new DataInitialization(manager);

            initialization.CreateInitialData();

            // Loading game configuration
            using (var context = manager.CreateNewConfigurationContext())
            {
                var gameConfiguraton = context.Get <GameConfiguration>().FirstOrDefault();
                Assert.That(gameConfiguraton, Is.Not.Null);

                // Testing loading of an account
                using (var accountContext = manager.CreateNewPlayerContext(gameConfiguraton))
                {
                    var account1 = accountContext.GetAccountByLoginName("test1", "test1");
                    Assert.That(account1, Is.Not.Null);
                    Assert.That(account1.LoginName, Is.EqualTo("test1"));
                }
            }
        }
예제 #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Program"/> class.
        /// Constructor for the main entry program.
        /// </summary>
        /// <param name="args">The command line args.</param>
        public Program(string[] args)
        {
            if (args.Contains("-demo"))
            {
                this.persistenceContextProvider = new InMemoryPersistenceContextProvider();
                var initialization = new DataInitialization(this.persistenceContextProvider);
                initialization.CreateInitialData();
            }
            else
            {
                this.persistenceContextProvider = this.PrepareRepositoryManager(args.Contains("-reinit"));
            }

            Log.Info("Start initializing sub-components");
            var signalRServerObserver = new SignalRGameServerStateObserver();
            var persistenceContext    = this.persistenceContextProvider.CreateNewConfigurationContext();
            var loginServer           = new LoginServer();
            var chatServer            = new ChatServerListener(55980, signalRServerObserver);

            this.servers.Add(chatServer);
            var guildServer   = new GuildServer(this.gameServers, this.persistenceContextProvider);
            var friendServer  = new FriendServer(this.gameServers, chatServer, this.persistenceContextProvider);
            var connectServer = ConnectServerFactory.CreateConnectServer(signalRServerObserver);

            this.servers.Add(connectServer);
            Log.Info("Start initializing game servers");
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            foreach (var gameServerDefinition in persistenceContext.Get <DataModel.Configuration.GameServerDefinition>())
            {
                using (ThreadContext.Stacks["gameserver"].Push(gameServerDefinition.ServerID.ToString()))
                {
                    var gameServer = new GameServer(gameServerDefinition, guildServer, loginServer, this.persistenceContextProvider, friendServer, signalRServerObserver);
                    foreach (var mainPacketHandler in gameServer.Context.PacketHandlers.Take(1))
                    {
                        // At the moment only one main packet handler should be used.
                        // A TCP port can only be used for one TCP listener, so we have to introduce something to pair ports with main packets handlers.
                        gameServer.AddListener(new DefaultTcpGameServerListener(gameServerDefinition.NetworkPort, gameServer.ServerInfo, gameServer.Context, connectServer, mainPacketHandler));
                    }

                    this.servers.Add(gameServer);
                    this.gameServers.Add(gameServer.Id, gameServer);
                    Log.InfoFormat("Game Server {0} - [{1}] initialized", gameServer.Id, gameServer.Description);
                }
            }

            stopwatch.Stop();
            Log.Info($"All game servers initialized, elapsed time: {stopwatch.Elapsed}");
            Log.Info("Start initializing admin panel");

            this.adminPanel = new AdminPanel(1234, this.servers, this.persistenceContextProvider);
            Log.Info("Admin panel initialized");

            if (args.Contains("-autostart"))
            {
                chatServer.Start();
                foreach (var gameServer in this.gameServers.Values)
                {
                    gameServer.Start();
                }

                connectServer.Start();
            }
        }
예제 #14
0
파일: Program.cs 프로젝트: mvilche/OpenMU
        /// <summary>
        /// Initializes a new instance of the <see cref="Program"/> class.
        /// Constructor for the main entry program.
        /// </summary>
        /// <param name="args">The command line args.</param>
        public Program(string[] args)
        {
            if (args.Contains("-demo"))
            {
                this.persistenceContextProvider = new InMemoryPersistenceContextProvider();
                var initialization = new DataInitialization(this.persistenceContextProvider);
                initialization.CreateInitialData();
            }
            else
            {
                this.persistenceContextProvider = this.PrepareRepositoryManager(args.Contains("-reinit"));
            }

            var ipResolver = args.Contains("-local") ? (IIpAddressResolver) new LocalIpResolver() : new PublicIpResolver();

            Log.Info("Start initializing sub-components");
            var signalRServerObserver = new SignalRGameServerStateObserver();
            var persistenceContext    = this.persistenceContextProvider.CreateNewConfigurationContext();
            var loginServer           = new LoginServer();
            var chatServer            = new ChatServerListener(55980, signalRServerObserver, ipResolver);

            this.servers.Add(chatServer);
            var guildServer    = new GuildServer(this.gameServers, this.persistenceContextProvider);
            var friendServer   = new FriendServer(this.gameServers, chatServer, this.persistenceContextProvider);
            var connectServers = new Dictionary <GameClientDefinition, IConnectServer>();

            ClientVersionResolver.DefaultVersion = new ClientVersion(6, 3, ClientLanguage.English);
            foreach (var gameClientDefinition in persistenceContext.Get <GameClientDefinition>())
            {
                ClientVersionResolver.Register(gameClientDefinition.Version, new ClientVersion(gameClientDefinition.Season, gameClientDefinition.Episode, gameClientDefinition.Language));
            }

            foreach (var connectServerDefinition in persistenceContext.Get <ConnectServerDefinition>())
            {
                var connectServer = ConnectServerFactory.CreateConnectServer(connectServerDefinition, signalRServerObserver);
                this.servers.Add(connectServer);
                connectServers[connectServerDefinition.Client] = connectServer;
            }

            Log.Info("Start initializing game servers");
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            foreach (var gameServerDefinition in persistenceContext.Get <DataModel.Configuration.GameServerDefinition>())
            {
                using (ThreadContext.Stacks["gameserver"].Push(gameServerDefinition.ServerID.ToString()))
                {
                    var gameServer = new GameServer(gameServerDefinition, guildServer, loginServer, this.persistenceContextProvider, friendServer, signalRServerObserver);
                    foreach (var endpoint in gameServerDefinition.Endpoints)
                    {
                        gameServer.AddListener(new DefaultTcpGameServerListener(endpoint, gameServer.ServerInfo, gameServer.Context, connectServers[endpoint.Client], ipResolver));
                    }

                    this.servers.Add(gameServer);
                    this.gameServers.Add(gameServer.Id, gameServer);
                    Log.InfoFormat("Game Server {0} - [{1}] initialized", gameServer.Id, gameServer.Description);
                }
            }

            stopwatch.Stop();
            Log.Info($"All game servers initialized, elapsed time: {stopwatch.Elapsed}");
            Log.Info("Start initializing admin panel");

            this.adminPanel = new AdminPanel(1234, this.servers, this.persistenceContextProvider, Log4NetConfigFilePath);
            Log.Info("Admin panel initialized");

            if (args.Contains("-autostart"))
            {
                chatServer.Start();
                foreach (var gameServer in this.gameServers.Values)
                {
                    gameServer.Start();
                }

                foreach (var connectServer in connectServers.Values)
                {
                    connectServer.Start();
                }
            }
        }
예제 #15
0
파일: Program.cs 프로젝트: yamidevs/OpenMU
        /// <summary>
        /// Initializes a new instance of the <see cref="Program"/> class.
        /// Constructor for the main entry program.
        /// </summary>
        /// <param name="args">The command line args.</param>
        public Program(string[] args)
        {
            if (args.Contains("-demo"))
            {
                this.persistenceContextProvider = new InMemoryPersistenceContextProvider();
                var initialization = new DataInitialization(this.persistenceContextProvider);
                initialization.CreateInitialData();
            }
            else
            {
                this.persistenceContextProvider = this.PrepareRepositoryManager(args.Contains("-reinit"), args.Contains("-autoupdate"));
            }

            var ipResolver = IpAddressResolverFactory.DetermineIpResolver(args);

            Log.Info("Start initializing sub-components");
            var signalRServerObserver = new SignalRGameServerStateObserver();
            var serverConfigListener  = new ServerConfigurationChangeListener(this.servers, signalRServerObserver);
            var persistenceContext    = this.persistenceContextProvider.CreateNewConfigurationContext();
            var loginServer           = new LoginServer();

            var chatServerDefinition = persistenceContext.Get <ChatServerDefinition>().First();
            var chatServer           = new ChatServer(chatServerDefinition.ConvertToSettings(), signalRServerObserver, ipResolver);

            this.servers.Add(chatServer);
            var guildServer    = new GuildServer(this.gameServers, this.persistenceContextProvider);
            var friendServer   = new FriendServer(this.gameServers, chatServer, this.persistenceContextProvider);
            var connectServers = new Dictionary <GameClientDefinition, IGameServerStateObserver>();

            ClientVersionResolver.DefaultVersion = new ClientVersion(6, 3, ClientLanguage.English);
            foreach (var gameClientDefinition in persistenceContext.Get <GameClientDefinition>())
            {
                ClientVersionResolver.Register(gameClientDefinition.Version, new ClientVersion(gameClientDefinition.Season, gameClientDefinition.Episode, gameClientDefinition.Language));
            }

            foreach (var connectServerDefinition in persistenceContext.Get <ConnectServerDefinition>())
            {
                var clientVersion = new ClientVersion(connectServerDefinition.Client.Season, connectServerDefinition.Client.Episode, connectServerDefinition.Client.Language);
                var connectServer = ConnectServerFactory.CreateConnectServer(connectServerDefinition, signalRServerObserver, clientVersion);
                this.servers.Add(connectServer);
                if (!connectServers.TryGetValue(connectServerDefinition.Client, out var observer))
                {
                    connectServers[connectServerDefinition.Client] = connectServer;
                }
                else
                {
                    Log.WarnFormat($"Multiple connect servers for game client '{connectServerDefinition.Client.Description}' configured. Only one per client makes sense.");
                    if (!(observer is MulticastConnectionServerStateObserver))
                    {
                        var multicastObserver = new MulticastConnectionServerStateObserver();
                        multicastObserver.AddObserver(observer);
                        multicastObserver.AddObserver(connectServer);
                        connectServers[connectServerDefinition.Client] = multicastObserver;
                    }
                }
            }

            Log.Info("Start initializing game servers");
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            foreach (var gameServerDefinition in persistenceContext.Get <DataModel.Configuration.GameServerDefinition>())
            {
                using (ThreadContext.Stacks["gameserver"].Push(gameServerDefinition.ServerID.ToString()))
                {
                    var gameServer = new GameServer(gameServerDefinition, guildServer, loginServer, this.persistenceContextProvider, friendServer, signalRServerObserver);
                    foreach (var endpoint in gameServerDefinition.Endpoints)
                    {
                        gameServer.AddListener(new DefaultTcpGameServerListener(endpoint, gameServer.ServerInfo, gameServer.Context, connectServers[endpoint.Client], ipResolver));
                    }

                    this.servers.Add(gameServer);
                    this.gameServers.Add(gameServer.Id, gameServer);
                    Log.InfoFormat("Game Server {0} - [{1}] initialized", gameServer.Id, gameServer.Description);
                }
            }

            stopwatch.Stop();
            Log.Info($"All game servers initialized, elapsed time: {stopwatch.Elapsed}");
            var adminPort = this.DetermineAdminPort(args);

            Log.Info($"Start initializing admin panel for port {adminPort}.");

            this.adminPanel = new AdminPanel(adminPort, this.servers, this.persistenceContextProvider, serverConfigListener, Log4NetConfigFilePath);
            Log.Info($"Admin panel initialized, port {adminPort}.");

            if (args.Contains("-autostart"))
            {
                chatServer.Start();
                foreach (var gameServer in this.gameServers.Values)
                {
                    gameServer.Start();
                }

                foreach (var connectServer in this.servers.OfType <IConnectServer>())
                {
                    connectServer.Start();
                }
            }
        }