예제 #1
0
        protected override void OnStartup(object sender, StartupEventArgs e)
        {
            if (!mutex.WaitOne(TimeSpan.FromSeconds(1), false) || AppDomain.CurrentDomain.IsDefaultAppDomain() == true)
            {
                System.Windows.Application.Current.Shutdown();
            }

            ObjectContainerRegistry ocr = _container.GetInstance <ObjectContainerRegistry>();

            ResultObject ro = new ResultObject(true);

            try {
                IObjectContainer db = _container.GetInstance <Db4oObjectContainerFactory>().Create(Db4oObjectContainerFactory.MAIN_DATABASE_NAME);

                ocr.Add(Db4oObjectContainerFactory.MAIN_DATABASE_NAME, db);
                var vm = _container.GetInstance <MainWindowViewModel>();
                _container.BuildUp(vm);
                _container.GetInstance <IWindowManager>().ShowWindow(vm);
            } catch (DatabaseFileLockedException ex) {
                ro = new ResultObject(false);
                ro.AddMessage("Nelze načíst Vaše data. Soubor je využíván jiným procesem.");
            } catch (Exception ex) {
                ro = new ResultObject(false);
                ro.AddMessage("Při spouštění aplikace došlo k neočekávané chybě");
            }

            if (!ro.Success)
            {
                StartupErrorWindowViewModel errw = _container.GetInstance <StartupErrorWindowViewModel>();
                errw.Text = ro.GetLastMessage();
                _container.GetInstance <IWindowManager>().ShowDialog(errw);
            }
        }
예제 #2
0
        protected override void OnStartup(object sender, StartupEventArgs e)
        {
            if (!mutex.WaitOne(TimeSpan.FromSeconds(1), false))
            {
                System.Windows.Application.Current.Shutdown();
            }

            ResultObject <object> ro = new ResultObject <object>(true);

            try {
                Storage     db = _container.GetInstance <PerstStorageFactory>().OpenConnection(PerstStorageFactory.MAIN_DATABASE_NAME);
                StoragePool sp = _container.GetInstance <StoragePool>();
                sp.Add(PerstStorageFactory.MAIN_DATABASE_NAME, db);

                var vm = _container.GetInstance <MainWindowViewModel>();
                _container.BuildUp(vm);
                _container.GetInstance <IWindowManager>().ShowWindow(vm);
            }
            catch (StorageError ex) {
                ro = new ResultObject <object>(false);
                ro.AddMessage("Nelze načíst Vaše data.");
            }
            catch (Exception ex) {
                ro = new ResultObject <object>(false);
                ro.AddMessage("Při spouštění aplikace došlo k neočekávané chybě");
            }

            if (!ro.Success)
            {
                StartupErrorWindowViewModel errw = _container.GetInstance <StartupErrorWindowViewModel>();
                errw.Text = ro.GetLastMessage().Text;
                _container.GetInstance <IWindowManager>().ShowDialog(errw);
            }
        }
예제 #3
0
        public ResultObject <object> BackupData(string filePath)
        {
            ResultObject <object> ro;

            try {
                Storage().Backup(new FileStream(filePath, FileMode.Create));
                ro = new ResultObject <object>(true);
                ro.AddMessage("Záloha databáze proběhla úspěšně!", ResultObjectMessageSeverity.SUCCESS);
            } catch (IOException e) {
                ro = new ResultObject <object>(false);
                ro.AddMessage("Zálohu databáze nelze dokončit. Došlo k chybě.");
            }

            return(ro);
        }
예제 #4
0
        public ResultObject <DefaultSettings> CreateDefaultSettings(string identifier)
        {
            DefaultSettings ds = new DefaultSettings(identifier);
            ResultObject <DefaultSettings> ro;

            if (Root().DefaultSettings.Put(ds) == false)
            {
                ro = new ResultObject <DefaultSettings>(false);
                ro.AddMessage(string.Format("Nastavení s názem \"{0}\" již existuje.", identifier));
            }
            else
            {
                ro = new ResultObject <DefaultSettings>(true, ds);
                Storage().Commit();
            }

            return(ro);
        }
예제 #5
0
        public ResultObject <object> Import(string importFilePath, string appDBDirectory, string activeDBName, string activeDBExtension)
        {
            ResultObject <object> ro;

            try {
                Storage importedDb = StorageFactory.Instance.CreateStorage();
                importedDb.Open(importFilePath, 4 * 1024 * 1024);
                importedDb.Close();

                ro = new ResultObject <object>(true);
                ro.AddMessage("Import dat proběhl úspěšně!", ResultObjectMessageSeverity.SUCCESS);
            } catch (StorageError e) {
                ro = new ResultObject <object>(false);
                ro.AddMessage("Ze zvoleného souboru nelze importovat data.", ResultObjectMessageSeverity.WARNING);
            } catch (Exception e) {
                ro = new ResultObject <object>(false);
                ro.AddMessage("Při importu dat došlo k chybě.");
            }

            if (!ro.Success)
            {
                return(ro);
            }

            _storagePool.Close(PerstStorageFactory.MAIN_DATABASE_NAME);
            DateTime now = DateTime.Now;

            string activeDbFilePath = Path.Combine(appDBDirectory, activeDBName + "." + activeDBExtension);

            string oldDbBackupFileName     = string.Format("backup_{0}_{1}_{2}_{3}_{4}_{5}_v{6}.{7}", now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", "-"), activeDBExtension);
            string lastWorkingDbBackupPath = Path.Combine(appDBDirectory, oldDbBackupFileName);

            File.Move(activeDbFilePath, lastWorkingDbBackupPath);
            File.Copy(importFilePath, activeDbFilePath);

            _storagePool.Add(PerstStorageFactory.MAIN_DATABASE_NAME, _storageFactory.OpenConnection(PerstStorageFactory.MAIN_DATABASE_NAME));

            return(ro);
        }
예제 #6
0
        public ResultObject Import(string importFilePath, string appDBDirectory, string activeDBName, string activeDBExtension)
        {
            ResultObject ro;

            try {
                IObjectContainer db = _factory.OpenConnection(importFilePath);

                ro = new ResultObject(true, db);
                ro.AddMessage("Import dat proběhl úspěšně!");

                db.Close();
            } catch (IncompatibleFileFormatException e) {
                ro = new ResultObject(false);
                ro.AddMessage("Import dat selhal. Špatný formát dat.");
            } catch (DatabaseReadOnlyException e) {
                ro = new ResultObject(false);
                ro.AddMessage("Import dat selhal. Nelze importovat data jen pro čtení.");
            } catch (Exception e) {
                ro = new ResultObject(false);
                ro.AddMessage("Zvolená data nelze importovat.");
            }

            if (!ro.Success)
            {
                return(ro);
            }

            DateTime now = DateTime.Now;

            string activeDbFilePath = Path.Combine(appDBDirectory, activeDBName + "." + activeDBExtension);

            string oldDbBackupFileName     = string.Format("backup_{0}_{1}_{2}_{3}_{4}_{5}_v{6}.{7}", now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", "-"), activeDBExtension);
            string lastWorkingDbBackupPath = Path.Combine(appDBDirectory, oldDbBackupFileName);

            File.Move(activeDbFilePath, lastWorkingDbBackupPath);
            File.Copy(importFilePath, activeDbFilePath);

            return(ro);
        }