public Did CreateDatabase(IDatabaseParameters databaseParameters) { if (_metadata.Databases.Any(d => d.Value.Name.Equals(databaseParameters.Name))) { throw new DatabaseAlreadyExistException(String.Format("Baza danych o nazwie '{0}' już istnieje", databaseParameters.Name)); } var newDid = Did.CreateNew(); if (databaseParameters.Schema == null) { databaseParameters.Schema = new DatabaseSchema() { DatabaseId = newDid, Classes = new ConcurrentDictionary <ClassId, Class>(), Properties = new ConcurrentDictionary <PropertyId, Property>(), Methods = new ConcurrentDictionary <ClassId, List <IMethod> >() } } ; newDid.Duid = _metadata.Databases.Count == 0 ? 0 : _metadata.Databases.Max(d => d.Key.Duid) + 1; databaseParameters.DatabaseId = newDid; if (!_metadata.Databases.TryAdd(newDid, databaseParameters)) { throw new ApplicationException("Database creation internal storage error..."); } _engine.OpenDatabase(databaseParameters); StorageMetadata.SaveMetadata(_metadata, _logger); return(newDid); }
public void SaveSchema(IDatabaseSchema schema) { if (!_metadata.Databases.ContainsKey(schema.DatabaseId)) { throw new DatabaseNotFoundException(String.Format("Nie odnaleziono bazy danych o id: '{0}'", schema.DatabaseId)); } _metadata.Databases[schema.DatabaseId].Schema = schema; StorageMetadata.SaveMetadata(_metadata, _logger); }
public void Dispose() { if (_engine != null) { _engine.Dispose(); } if (_metadata != null) { StorageMetadata.SaveMetadata(_metadata, _logger); } }
public DeleteDatabaseStatus RemoveDatabase(IDatabaseRemoveParameters databaseRemoveParameters) { if (!_metadata.Databases.ContainsKey(databaseRemoveParameters.DatabaseToRemove)) { throw new DatabaseNotFoundException(String.Format("Nie odnaleziono bazy danych o id: '{0}'", databaseRemoveParameters.DatabaseToRemove)); } IDatabaseParameters parameters = null; _metadata.Databases.TryRemove(databaseRemoveParameters.DatabaseToRemove, out parameters); StorageMetadata.SaveMetadata(_metadata, _logger); return(new DeleteDatabaseStatus()); }
public Did RenameDatabase(IDatabaseParameters databaseParameters, string databaseNweName, ISettingsManager settingsManager) { DatabaseParameters renamedParameters = new DatabaseParameters(databaseNweName, settingsManager); renamedParameters.DatabaseId = databaseParameters.DatabaseId; renamedParameters.Schema = databaseParameters.Schema; renamedParameters.PageSize = databaseParameters.PageSize; renamedParameters.OptimizeSize = databaseParameters.OptimizeSize; renamedParameters.StartupSize = databaseParameters.StartupSize; renamedParameters.IncreaseFactor = databaseParameters.IncreaseFactor; _metadata.Databases[databaseParameters.DatabaseId] = renamedParameters; StorageMetadata.SaveMetadata(_metadata, _logger); //_engine.Dispose(); //File.Move(databaseParameters.DataFileFullPath, renamedParameters.DataFileFullPath); _engine.OpenDatabase(renamedParameters); return(renamedParameters.DatabaseId); }