Ejemplo n.º 1
0
        public override void Configure(IKernel kernel)
        {
            // this relies on specific Area binding order, as set in Bootstrapper.
            // todo: remove once current persistence is deprecated.

            kernel.Bind <PersistenceManager>().ToMethod(context =>
            {
                var dataDir = kernel.Get <IWurmAssistantDataDirectory>();
                var logger  = kernel.Get <ILogger>();

                var config = new PersistenceManagerConfig()
                {
                    DataStoreDirectoryPath = Path.Combine(dataDir.DirectoryPath, "Data")
                };
                var errorStrategy         = new JsonExtendedErrorHandlingStrategy(logger);
                var serializationStrategy = new JsonSerializationStrategy
                {
                    ErrorStrategy = errorStrategy
                };
                var persistenceManager = new PersistenceManager(config,
                                                                serializationStrategy,
                                                                new FlatFilesPersistenceStrategy(config));

                return(persistenceManager);
            }).InSingletonScope();

            kernel.Bind <PersistenceEnabler>().ToSelf().InSingletonScope();

            kernel.Bind <IPersistentObjectResolver>().To <PersistentObjectResolver>().InSingletonScope();
            kernel.Bind(typeof(IPersistentObjectResolver <>)).To(typeof(PersistentObjectResolver <>)).InSingletonScope();

            kernel.Bind <ISerializer>().To <DefaultJsonSerializer>();
        }
        void ImportFromObsoleteFlatFiles(PersistenceManagerConfig config)
        {
            var logFilePath = Path.Combine(config.DataStoreDirectoryPath, "migration.log");

            var allObjects = new FlatFilesDataImporter(config).GetAllObjects().ToList();

            if (allObjects.Any())
            {
                if (!File.Exists(logFilePath))
                {
                    foreach (var dataObject in allObjects)
                    {
                        Save(dataObject.CollectionId, dataObject.Key, dataObject.Content);
                    }
                    File.WriteAllText(logFilePath, $"{DateTime.Now} : migrated data from flat files to sqlite");
                }

                foreach (var directory in new DirectoryInfo(config.DataStoreDirectoryPath).GetDirectories())
                {
                    directory.Delete(recursive: true);
                }

                var mapFile = Path.Combine(config.DataStoreDirectoryPath, "data.map");
                if (File.Exists(mapFile))
                {
                    File.Delete(mapFile);
                }
            }
        }
Ejemplo n.º 3
0
        public FlatFilesDataImporter([NotNull] PersistenceManagerConfig config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            dataMap = new DataMap(config.DataStoreDirectoryPath);
        }
        public FlatFilesPersistenceStrategy([NotNull] PersistenceManagerConfig config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            dataMap = new DataMap(config.DataStoreDirectoryPath);
        }
        PersistenceManager CreatePersistenceManager(JsonSerializationStrategy ss = null)
        {
            if (ss == null)
            {
                ss = new JsonSerializationStrategy();
            }
            var cfg = new PersistenceManagerConfig()
            {
                DataStoreDirectoryPath = TempDir.FullName
            };
            var m = new PersistenceManager(cfg, ss, new FlatFilesPersistenceStrategy(cfg));

            return(m);
        }
        public SqlitePersistenceStrategy([NotNull] PersistenceManagerConfig persistenceManagerConfig)
        {
            if (persistenceManagerConfig == null)
            {
                throw new ArgumentNullException(nameof(persistenceManagerConfig));
            }

            string rootPath = persistenceManagerConfig.DataStoreDirectoryPath;

            if (!Directory.Exists(rootPath))
            {
                Directory.CreateDirectory(rootPath);
            }

            databasePath = Path.Combine(rootPath, "database.sqlite");

            UpdateSchema();
            ImportFromObsoleteFlatFiles(persistenceManagerConfig);
        }