public void Initialize() { if (_initialized) { return; } var configurator = new DatabaseConfigurationBuilder <TDatabase>(); OnDatabaseInitializing(configurator); if (configurator.DatabaseFactory == null) { throw new InvalidOperationException("database factory is undefined"); } _databaseEncryption = configurator.DatabaseEncryption ?? new NoDatabaseEncryption(); _databaseSerializer = configurator.DatabaseSerializer ?? new DataContractDatabaseSerializer <TDatabase>(); var file = _directoryContext.GetFile(_fileName); if (file != null) { try { _database = _databaseSerializer.Deserialize(_databaseEncryption.Decrypt(file.Content)); } catch (CryptographicException) { _database = configurator.DatabaseFactory.Create(); } catch (FormatException) { _database = configurator.DatabaseFactory.Create(); } catch (SerializationException) { _database = configurator.DatabaseFactory.Create(); } catch (InvalidCastException) { _database = configurator.DatabaseFactory.Create(); } } else { _database = _database = configurator.DatabaseFactory.Create(); } _initialized = true; }
/// <summary> /// Initializes a new instance of the <see cref="ConsoleRepository" /> class. /// </summary> /// <param name="settings">The settings.</param> /// <param name="logger">The logger.</param> /// <param name="directoryUtility">The directory utility.</param> /// <param name="fileUtility">The file utility.</param> /// <param name="pathUtility">The path utility.</param> /// <param name="consoleSerializer">The console serializer.</param> /// <param name="databaseSerializer">The database serializer.</param> /// <param name="gameValidator">The game validator.</param> /// <param name="consoleValidator">The console validator.</param> public ConsoleRepository( IHyperValidatorSettings settings, ILogger logger, IDirectoryUtility directoryUtility, IFileUtility fileUtility, IPathUtility pathUtility, IConsoleSerializer consoleSerializer, IDatabaseSerializer databaseSerializer, IGameValidator gameValidator, IConsoleValidator consoleValidator) { Settings = settings; Logger = logger; DirectoryUtility = directoryUtility; FileUtility = fileUtility; PathUtility = pathUtility; ConsoleSerializer = consoleSerializer; DatabaseSerializer = databaseSerializer; GameValidator = gameValidator; ConsoleValidator = consoleValidator; }
public void Configure(IDatabaseSerializer <TDatabase> databaseSerializer) { DatabaseSerializer = databaseSerializer; }