using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Foo.DataAccessLayer
{    
    public class Data
    {        
        /// <summary>
        /// Public Properties
        /// </summary>
        public static dArtifacts Artifacts { get { return _artifacts; } }
        public static dWorkspace Workspace { get { return _workspace; } }
        public static dState State { get { return _state; } }
        public static dUserSettings UserSettings { get { return _UserSettings; } }

        /// <summary>
        /// Internal Properties
        /// </summary>
        internal static dVersioningTables VersioningTables { get { return _VersioningTables; } }

        /// <summary>
        /// Private Locations for above Properties
        /// </summary>
        private static dArtifacts _artifacts;
        private static dWorkspace _workspace;
        private static dState _state;
        private static dVersioningTables _VersioningTables;
        private static dUserSettings _UserSettings;

        static Data()
        {
            // Upon First Instantiation of Data,
            // ensure that the Default DB Exists
            DB.CreateDefaultDB();

            // Load All Public Data Types
            _artifacts = new dArtifacts();
            _workspace = new dWorkspace();
            _state = new dState();
            _UserSettings = new dUserSettings();

            // Load All Internal Data Types
            _VersioningTables = new dVersioningTables();
        }
    }
}
