Beispiel #1
0
        /// <summary>
        /// Read the database with the given mode
        /// </summary>
        /// <param name="mode">Mode the database will be opened in</param>
        public void Read(ConnectionMode mode)
        {
            this.mode = mode;

            // Make sure the database status and connection mode are compatible
            if (ValidateDatabaseMode() != true)
            {
                throw new TimeTagException("Connection mode is incompatible with a read only file");
            }

            if (this.dao == null)
            {
                this.dao = GetDaoFactory().CreateTimeSeriesDatabase(this.FilePath);
            }

            // Reset the existing database contents
            Reset();

            try
            {
                // Open a connection to the database
                this.dao.Connect(mode);
            }
            catch (IOException e)
            {
                throw new TimeTagException("Database is locked", e);
            }

            // Read everything in from the database
            TimeSeriesDatabaseDto dto = this.dao.Read();

            // Build the database from the DTO
            FixupFromDto(dto);
        }
Beispiel #2
0
        /// <summary>
        /// Close the database connection opened by either Read or Create
        /// </summary>
        public void Close()
        {
            this.mode = ConnectionMode.Disconnected;

            if (this.dao != null)
            {
                this.dao.Close();
                this.dao = null;
            }
        }
Beispiel #3
0
        /// <summary>
        /// Permanently delete the database from the disk
        /// </summary>
        public void Delete()
        {
            if (this.dao != null)
            {
                if (this.dao.IsConnected())
                {
                    this.dao.Close();
                    this.dao = null;
                }
            }

            File.Delete(this.filePath);
        }
Beispiel #4
0
        private void CreateDatabase(TimeSeriesDatabaseDto dto)
        {
            this.dao = GetDaoFactory().CreateTimeSeriesDatabase(this.FilePath);
            try
            {
                this.dao.Create(dto);

                foreach (ArchiveTemplate archiveTemplate in this.archiveTemplates)
                {
                    archiveTemplate.Create(this);
                }

                foreach (DataSource dataSource in this.dataSources)
                {
                    dataSource.Create();
                }
            }
            catch (IOException e)
            {
                throw new TimeTagException(e.Message, e);
            }
        }
 /// <summary>
 /// Creates an archive template DAO capable of interacting with a binary file
 /// </summary>
 /// <param name="databaseDao">Database in which the data source exists</param>
 /// <returns>Binary file archive template DAO</returns>
 public IArchiveTemplateDao CreateArchiveTemplate(ITimeSeriesDatabaseDao databaseDao)
 {
     return(new BinaryFileArchiveTemplateDao((BinaryFileTimeSeriesDatabaseDao)databaseDao));
 }
 /// <summary>
 /// Creates a data source DAO capable of interacting with a binary file
 /// </summary>
 /// <param name="databaseDao">Database in which the data source exists</param>
 /// <returns>Binary file data source DAO</returns>
 public IDataSourceDao CreateDataSource(ITimeSeriesDatabaseDao databaseDao)
 {
     return(new BinaryFileDataSourceDao((BinaryFileTimeSeriesDatabaseDao)databaseDao));
 }