Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 public void Dispose()
 {
     if (_engine != null)
     {
         _engine.Dispose();
     }
     if (_metadata != null)
     {
         StorageMetadata.SaveMetadata(_metadata, _logger);
     }
 }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
0
        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);
        }