Exemple #1
0
 public TestResourceStore()
 {
     RemoveDBFiles();
     MyPalStorage.ResourceCacheSize = 16;
     MyPalStorage.CreateDatabase();
     DoOpenDatabase();
 }
Exemple #2
0
 public override void SetUp()
 {
     RemoveDBFiles();
     MyPalStorage.ResourceCacheSize = 16;
     MyPalStorage.CreateDatabase();
     MyPalStorage.OpenDatabase();
     _storage = MyPalStorage.Storage;
 }
Exemple #3
0
 protected void InitStorage()
 {
     RemoveDBFiles();
     MyPalStorage.ResourceCacheSize = 16;
     MyPalStorage.CreateDatabase();
     MyPalStorage.OpenDatabase();
     _storage = MyPalStorage.Storage;
     IndexConstructor.WorkDir = MyPalStorage.DBPath;
 }
Exemple #4
0
 public void Dispose()
 {
     MyPalStorage.CloseDatabase();
     try
     {
         RemoveDBFiles();
     }
     catch (Exception e)
     {
         Console.WriteLine(" Error cleaning DB files: " + e.Message);
     }
 }
Exemple #5
0
        private void _backupBtn_Click(object sender, EventArgs e)
        {
            string backupPath = _backupPath.Text;

            if (backupPath.Length > 0 && Directory.Exists(backupPath))
            {
                SaveBackupPath();
                _isBackuping = true;
                AdjustBackupButtonEnability();
                MyPalStorage.BackupDatabase(false);
                Core.ResourceAP.QueueJob(JobPriority.Lowest, new MethodInvoker(MarkFinishedBackup));
            }
        }
Exemple #6
0
 protected void CloseStorage()
 {
     MyPalStorage.CloseDatabase();
     _storage = null;
     try
     {
         RemoveDBFiles();
     }
     catch (Exception e)
     {
         Console.WriteLine(" Error cleaning DB files: " + e.Message);
     }
 }
Exemple #7
0
        internal PropTypeCollection(MyPalStorage storage, ITable propTypeTable)
        {
            _storage       = storage;
            _propTypeTable = propTypeTable;

            _pseudoProps [0] = new PropTypeItem(ResourceProps.Id,
                                                "", PropDataType.Int, PropTypeFlags.Normal);
            _pseudoProps [1] = new PropTypeItem(ResourceProps.DisplayName,
                                                "DisplayName", PropDataType.String, PropTypeFlags.Normal);
            _pseudoProps [1].SetDisplayNames("Name", null);
            _pseudoProps [2] = new PropTypeItem(ResourceProps.Type,
                                                "Type", PropDataType.String, PropTypeFlags.Normal);
        }
Exemple #8
0
 public override void TearDown()
 {
     MyPalStorage.CloseDatabase();
     _storage = null;
     try
     {
         RemoveDBFiles();
     }
     catch (Exception e)
     {
         Console.WriteLine(" Error cleaning DB files: " + e.Message);
     }
 }
Exemple #9
0
 private void TestShutdown(MainFrame mainFrame)
 {
     try
     {
         Console.WriteLine("Closing MainFrame");
         mainFrame.TestShutdown();
         Console.WriteLine("Closing database");
         MyPalStorage.CloseDatabase();
     }
     finally
     {
         MainFrame._uiAsyncProcessor.QueueEndOfWork();
     }
     MainFrame._uiAsyncProcessor.Dispose();
 }
Exemple #10
0
        [Test] public void StressTest()
        {
            for (int i = 0; i < 100; i++)
            {
                RemoveDBFiles();
                MyPalStorage.CreateDatabase();
                MyPalStorage.OpenDatabase();
                _storage = MyPalStorage.Storage;

                MyPalStorage.CloseDatabase();
                _storage = null;
                try
                {
                    RemoveDBFiles();
                }
                catch (Exception e)
                {
                    Console.WriteLine(" Error cleaning DB files: " + e.Message);
                }
            }
        }
Exemple #11
0
 internal ResourceTypeCollection(MyPalStorage storage, ITable resourceTypeTable)
 {
     _storage           = storage;
     _resourceTypeTable = resourceTypeTable;
 }
Exemple #12
0
        public void Run()
        {
            _propTypes       = _db.GetTable("PropTypes");
            _resTypes        = _db.GetTable("ResourceTypes");
            _intProps        = _db.GetTable("IntProps");
            _stringProps     = _db.GetTable("StringProps");
            _longStringProps = _db.GetTable("LongStringProps");
            _stringListProps = _db.GetTable("StringListProps");
            _dateProps       = _db.GetTable("DateProps");
            _blobProps       = _db.GetTable("BlobProps");
            _doubleProps     = _db.GetTable("DoubleProps");
            _boolProps       = _db.GetTable("BoolProps");
            _resources       = _db.GetTable("Resources");
            _links           = _db.GetTable("Links");

            try
            {
                ShowProgress("Processing property types...");
                RepairPropTypes();
                ShowProgress("Processing resource types...");
                RepairResourceTypes();

                ShowProgress("Processing resources...");
                RepairResources();

                ShowProgress("Processing IntProps...");
                RepairProps(_intProps, PropDataType.Int);
                ShowProgress("Processing StringProps...");
                RepairProps(_stringProps, PropDataType.String);
                ShowProgress("Processing LongStringProps...");
                RepairProps(_longStringProps, PropDataType.LongString);
                ShowProgress("Processing DateProps...");
                RepairProps(_dateProps, PropDataType.Date);
                ShowProgress("Processing BlobProps...");
                RepairProps(_blobProps, PropDataType.Blob);
                ShowProgress("Processing DoubleProps...");
                RepairProps(_doubleProps, PropDataType.Double);
                ShowProgress("Processing StringListProps...");
                RepairProps(_stringListProps, PropDataType.StringList);
                ShowProgress("Processing BoolProps...");
                RepairProps(_boolProps, PropDataType.Bool);
                ShowProgress("Processing links...");
                RepairLinks();

                if (_fixErrors)
                {
                    ShowProgress("Repairing BlobFileSystem...");
                    _db.RepairBlobFileSystem();
                }
            }
            catch (Exception e)
            {
                ShowProgress("Fatal error during repair: " + e.Message);
                _repairException = e;
                _errorCount++;
            }

            ShowProgress("Closing database...");
            _db.Shutdown();

            if (_errorCount <= _fixCount)
            {
                MyPalStorage.OpenDatabase();
                try
                {
                    RepairRestrictions();

                    MyPalStorage.CloseDatabase();
                }
                catch (StorageException e)
                {
                    ShowProgress(e.ToString());
                }
                finally
                {
                    ShowProgress("done.");
                }
            }
            else
            {
                ShowProgress("Link restrictions were not checked because errors were found on earlier stages");
            }

            ShowProgress("Processed {0} resources, {1} properties and {2} links",
                         _resCount, _propCount, _linkCount);
            if (_errorCount == 0)
            {
                ShowProgress("No errors found");
            }
            else
            {
                ShowProgress("{0} errors found, {1} errors fixed", _errorCount, _fixCount);
            }
        }
Exemple #13
0
 public void Close()
 {
     MyPalStorage.CloseDatabase();
 }
Exemple #14
0
        private void RunRepair()
        {
            string dbPath = null;

            string[] args = Environment.GetCommandLineArgs();
            if (args.Length > 1)
            {
                if (args [1] == "-?" || args [1] == "/?")
                {
                    ShowHelp();
                    return;
                }
                string arg = args [1].ToLower();
                if ((arg == "-workdir" || arg == "/workdir") && args.Length > 2)
                {
                    dbPath = args [2];
                    if (args.Length > 3)
                    {
                        ProcessArgument(args [3]);
                    }
                }
                else
                {
                    ProcessArgument(arg);
                }
            }

            if (dbPath == null)
            {
                dbPath = RegUtil.DatabasePath;
                if (dbPath == null)
                {
                    dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                                          "JetBrains\\Omea");
                }
            }

            OMEnv.WorkDir       = dbPath;
            MyPalStorage.DBPath = Path.Combine(OMEnv.WorkDir, "db");
            _ini = new IniFile(Path.Combine(OMEnv.WorkDir, "OmniaMea.ini"));

            Console.WriteLine("Processing database in " + dbPath);

            bool  omniaMeaIsNotRun;
            Mutex omniaMeaMux = new Mutex(true, "OmniaMeaMutex", out omniaMeaIsNotRun);

            try
            {
                if (!omniaMeaIsNotRun && !_ignoreMutex)
                {
                    Console.WriteLine("Omea is currently running. Please close Omea before running DBRepair.");
                    return;
                }

                if (_deleteIndex)
                {
                    DeleteIndex();
                }
                else if (_deleteTextIndex)
                {
                    DeleteFiles(OMEnv.WorkDir, "_*");
                }
                else if (_backup)
                {
                    string backupPath = _ini.ReadString("ResourceStore", "BackupPath", string.Empty);
                    if (backupPath.Length > 0)
                    {
                        Console.Write("Database backup in progress...");
                        MyPalStorage.BackupDatabase(IOTools.Combine(backupPath, MyPalStorage._dbBackupFile));
                        Console.WriteLine("\r                               \rDatabase backup done.");
                    }
                    else
                    {
                        Console.WriteLine("Backup path is not set. Run Omea, in Options | Paths set the path.");
                    }
                }
                else if (_restore)
                {
                    string backupPath = _ini.ReadString("ResourceStore", "BackupPath", string.Empty);
                    if (backupPath.Length > 0)
                    {
                        Console.Write("Restoring database from backup...");
                        MyPalStorage.RestoreFromBackup(IOTools.Combine(backupPath, MyPalStorage._dbBackupFile));
                        Console.WriteLine("\r                                  \rDatabase restored from backup.");
                    }
                    else
                    {
                        Console.WriteLine("Backup path is not set. Run Omea, in Options | Paths set the path.");
                    }
                }
                else
                {
                    if (!_textAnalyze || _lowCheck)
                    {
                        ProcessDB();
                    }
                    else
                    {
                        try
                        {
                            ProcessTextIndex(OMEnv.WorkDir + "\\_term.index");
                        }
                        catch (FormatException exc_)
                        {
                            Console.Error.WriteLine(exc_.Message);
                        }
                    }
                }
            }
            finally
            {
                omniaMeaMux.Close();
            }
            if (!_dump && !_deleteIndex)
            {
                Console.WriteLine("Press Enter to continue...");
                Console.ReadLine();
            }
        }
Exemple #15
0
        private void ProcessDB()
        {
            if (!DBHelper.DatabaseExists(MyPalStorage.DBPath, "MyPal"))
            {
                Console.WriteLine("Omea database not found");
                return;
            }

            DBStructure dbStructure = new DBStructure(MyPalStorage.DBPath, "MyPal");

            dbStructure.ProgressListenerEvent += new DBStructure.ProgressEventHandler(dbStructure_ProgressListenerEvent);

            Console.WriteLine("Loading database...");

            bool structureCorrupted = false;

            try
            {
                dbStructure.LoadStructure(true);
            }
            catch (Exception)
            {
                structureCorrupted = true;
            }

            if (structureCorrupted || !AllTablesExist(dbStructure))
            {
                Console.WriteLine("Rebuilding database structure...");
                dbStructure.Shutdown();

                MyPalStorage.CreateDatabase();
                dbStructure = new DBStructure(MyPalStorage.DBPath, "MyPal");
                dbStructure.LoadStructure(true);
                _forceRebuild = true;
            }

            if (_defrag)
            {
                Console.WriteLine("Defragmenting database...");
                dbStructure.Defragment();
            }
            else if (!dbStructure.IsDatabaseCorrect())
            {
                Console.WriteLine("Database indexes are corrupt. Rebuilding...");
                dbStructure.RebuildIndexes();
            }
            else if (_forceRebuild)
            {
                Console.WriteLine("Performing forced rebuild of database indexes...");
                dbStructure.RebuildIndexes(true);
            }
            else if (_lowCheck)
            {
                dbStructure.LowLevelCheck( );
                return;
            }

            if (_dbdump)
            {
                Console.WriteLine("Dumping database...");
                dbStructure.Dump();
            }

            IDatabase db = dbStructure.OpenDatabase();

            if (_calcSpace)
            {
                CalcSpace(db, "ResourceTypes");
                CalcSpace(db, "PropTypes");
                CalcSpace(db, "IntProps");
                CalcSpace(db, "StringProps");
                CalcSpace(db, "LongStringProps");
                CalcSpace(db, "StringListProps");
                CalcSpace(db, "DateProps");
                CalcSpace(db, "BlobProps");
                CalcSpace(db, "DoubleProps");
                CalcSpace(db, "Resources");
                CalcSpace(db, "Links");
                return;
            }

            ResourceStoreRepair rsRepair = new ResourceStoreRepair(db);

            rsRepair.FixErrors       = _fixErrors;
            rsRepair.DumpStructure   = _dump;
            rsRepair.RepairProgress += new RepairProgressEventHandler(RsRepair_OnRepairProgress);
            rsRepair.Run();
        }
Exemple #16
0
 protected void ReopenStorage()
 {
     MyPalStorage.CloseDatabase();
     MyPalStorage.OpenDatabase();
     _storage = MyPalStorage.Storage;
 }