Search in sources :

Example 1 with MigrationException

use of org.bimserver.database.migrations.MigrationException in project BIMserver by opensourceBIM.

the class CommandLine method run.

@Override
public void run() {
    reader = new BufferedReader(new InputStreamReader(System.in));
    running = true;
    try {
        while (running) {
            try {
                String line = reader.readLine();
                if (line == null) {
                    Thread.sleep(50);
                    continue;
                }
                if (line.equalsIgnoreCase("exit")) {
                    bimServer.stop();
                    return;
                } else if (line.startsWith("dumpmodel")) {
                    try {
                        long roid = Long.parseLong(line.substring(9).trim());
                        DatabaseSession databaseSession = bimServer.getDatabase().createSession();
                        try {
                            DownloadDatabaseAction downloadDatabaseAction = new DownloadDatabaseAction(bimServer, databaseSession, AccessMethod.INTERNAL, roid, -1, -1, new SystemAuthorization(1, TimeUnit.HOURS), null);
                            IfcModelInterface model = downloadDatabaseAction.execute();
                            LOGGER.info("Model size: " + model.size());
                            List<IfcWall> walls = model.getAll(IfcWall.class);
                            List<IfcProject> projects = model.getAll(IfcProject.class);
                            List<IfcSlab> slabs = model.getAll(IfcSlab.class);
                            List<IfcWindow> windows = model.getAll(IfcWindow.class);
                            LOGGER.info("Walls: " + walls.size());
                            LOGGER.info("Windows: " + windows.size());
                            LOGGER.info("Projects: " + projects.size());
                            LOGGER.info("Slabs: " + slabs.size());
                        } catch (UserException e) {
                            LOGGER.error("", e);
                        } catch (BimserverLockConflictException e) {
                            LOGGER.error("", e);
                        } catch (BimserverDatabaseException e) {
                            LOGGER.error("", e);
                        } finally {
                            databaseSession.close();
                        }
                    } catch (Exception e) {
                        LOGGER.error("", e);
                    }
                } else if (line.equalsIgnoreCase("dump")) {
                    LOGGER.info("Dumping all thread's track traces...");
                    LOGGER.info("");
                    Map<Thread, StackTraceElement[]> allStackTraces = Thread.getAllStackTraces();
                    for (Thread t : allStackTraces.keySet()) {
                        LOGGER.info(t.getName());
                        StackTraceElement[] stackTraceElements = allStackTraces.get(t);
                        for (StackTraceElement stackTraceElement : stackTraceElements) {
                            LOGGER.info("\t" + stackTraceElement.getClassName() + ":" + stackTraceElement.getLineNumber() + "." + stackTraceElement.getMethodName());
                        }
                        LOGGER.info("");
                    }
                    LOGGER.info("Done printing stack traces");
                    LOGGER.info("");
                    Thread.sleep(10000);
                } else if (line.equals("migrate")) {
                    try {
                        bimServer.getDatabase().getMigrator().migrate();
                        bimServer.getServerInfoManager().update();
                    } catch (MigrationException e) {
                        LOGGER.error("", e);
                    } catch (InconsistentModelsException e) {
                        LOGGER.error("", e);
                    }
                } else if (line.equals("clearendpoints")) {
                    bimServer.getEndPointManager().clear();
                } else if (line.startsWith("showall")) {
                    KeyValueStore keyValueStore = ((Database) bimServer.getDatabase()).getKeyValueStore();
                    Set<String> allTableNames = keyValueStore.getAllTableNames();
                    long total = 0;
                    for (String tableName : allTableNames) {
                        long size = keyValueStore.count(tableName);
                        total += size;
                        if (size != 0) {
                            LOGGER.info(tableName + " " + size);
                        }
                    }
                    LOGGER.info("total: " + total);
                } else {
                    LOGGER.info("Unknown command");
                }
            } catch (IOException e) {
                LOGGER.error("", e);
            }
        }
    } catch (InterruptedException e) {
    }
}
Also used : InconsistentModelsException(org.bimserver.database.migrations.InconsistentModelsException) Set(java.util.Set) DatabaseSession(org.bimserver.database.DatabaseSession) IfcModelInterface(org.bimserver.emf.IfcModelInterface) KeyValueStore(org.bimserver.database.KeyValueStore) SystemAuthorization(org.bimserver.webservices.authorization.SystemAuthorization) List(java.util.List) UserException(org.bimserver.shared.exceptions.UserException) DownloadDatabaseAction(org.bimserver.database.actions.DownloadDatabaseAction) IfcWall(org.bimserver.models.ifc2x3tc1.IfcWall) IfcProject(org.bimserver.models.ifc2x3tc1.IfcProject) IfcWindow(org.bimserver.models.ifc2x3tc1.IfcWindow) InputStreamReader(java.io.InputStreamReader) IOException(java.io.IOException) IOException(java.io.IOException) BimserverLockConflictException(org.bimserver.database.BimserverLockConflictException) MigrationException(org.bimserver.database.migrations.MigrationException) UserException(org.bimserver.shared.exceptions.UserException) InconsistentModelsException(org.bimserver.database.migrations.InconsistentModelsException) IfcSlab(org.bimserver.models.ifc2x3tc1.IfcSlab) MigrationException(org.bimserver.database.migrations.MigrationException) BufferedReader(java.io.BufferedReader) BimserverLockConflictException(org.bimserver.database.BimserverLockConflictException)

Example 2 with MigrationException

use of org.bimserver.database.migrations.MigrationException in project BIMserver by opensourceBIM.

the class Database method init.

public void init() throws DatabaseInitException, DatabaseRestartRequiredException, InconsistentModelsException {
    DatabaseSession databaseSession = createSession();
    try {
        if (getKeyValueStore().isNew()) {
            keyValueStore.createTable(CLASS_LOOKUP_TABLE, null, true);
            keyValueStore.createTable(Database.STORE_PROJECT_NAME, null, true);
            keyValueStore.createTable(Registry.REGISTRY_TABLE, null, true);
            setDatabaseVersion(-1, databaseSession);
            created = new Date();
            registry.save(DATE_CREATED, created, databaseSession);
        } else {
            keyValueStore.openTable(databaseSession, CLASS_LOOKUP_TABLE, true);
            keyValueStore.openTable(databaseSession, Database.STORE_PROJECT_NAME, true);
            keyValueStore.openTable(databaseSession, Registry.REGISTRY_TABLE, true);
            created = registry.readDate(DATE_CREATED, databaseSession);
            if (created == null) {
                created = new Date();
                registry.save(DATE_CREATED, created, databaseSession);
            }
        }
        databaseSchemaVersion = registry.readInt(SCHEMA_VERSION, databaseSession, -1);
        migrator = new Migrator(this);
        if (getKeyValueStore().isNew()) {
            try {
                migrator.migrate(databaseSession);
            } catch (MigrationException e) {
                LOGGER.error("", e);
            }
            registry.save("isnew", true, databaseSession);
            databaseSession.commit();
            databaseSession.close();
            throw new DatabaseRestartRequiredException();
        } else if (registry.readBoolean("isnew", true, databaseSession)) {
            initInternalStructure(databaseSession);
            initCounters(databaseSession);
            ServerSettings settings = createDefaultSettings(databaseSession);
            databaseSession.store(settings);
            new CreateBaseProjectDatabaseAction(databaseSession, AccessMethod.INTERNAL).execute();
            AddUserDatabaseAction addUserDatabaseAction = new AddUserDatabaseAction(bimServer, databaseSession, AccessMethod.INTERNAL, "system", "system", "System", UserType.SYSTEM, new SystemAuthorization(1, TimeUnit.HOURS), false, null);
            addUserDatabaseAction.setCreateSystemUser();
            User systemUser = addUserDatabaseAction.execute();
            systemUser.setCreatedBy(systemUser);
            databaseSession.store(systemUser);
            DatabaseCreated databaseCreated = databaseSession.create(DatabaseCreated.class);
            databaseCreated.setAccessMethod(AccessMethod.INTERNAL);
            databaseCreated.setExecutor(systemUser);
            databaseCreated.setDate(new Date());
            databaseCreated.setPath(getKeyValueStore().getLocation());
            databaseCreated.setVersion(databaseSchemaVersion);
            databaseSession.store(databaseCreated);
            registry.save("isnew", false, databaseSession);
        } else {
            initInternalStructure(databaseSession);
            initCounters(databaseSession);
        }
        for (EClass eClass : cidToEclass) {
            if (eClass != null) {
                if (eClass.getEPackage() == Ifc2x3tc1Package.eINSTANCE || eClass.getEPackage() == Ifc4Package.eINSTANCE) {
                    realClasses.add(eClass.getName());
                }
            }
        }
        databaseSession.commit();
    } catch (UserException e) {
        LOGGER.error("", e);
        close();
        throw new DatabaseInitException(e.getMessage());
    } catch (BimserverDatabaseException e) {
        LOGGER.error("", e);
        close();
        throw new DatabaseInitException(e.getMessage());
    } catch (DatabaseRestartRequiredException e) {
        throw e;
    } catch (Exception e) {
        throw new DatabaseInitException(e);
    } finally {
        databaseSession.close();
    }
}
Also used : User(org.bimserver.models.store.User) SystemAuthorization(org.bimserver.webservices.authorization.SystemAuthorization) Date(java.util.Date) InconsistentModelsException(org.bimserver.database.migrations.InconsistentModelsException) DatabaseNotFoundException(com.sleepycat.je.DatabaseNotFoundException) DatabaseInitException(org.bimserver.database.berkeley.DatabaseInitException) MigrationException(org.bimserver.database.migrations.MigrationException) UserException(org.bimserver.shared.exceptions.UserException) BimserverDatabaseException(org.bimserver.BimserverDatabaseException) MigrationException(org.bimserver.database.migrations.MigrationException) DatabaseInitException(org.bimserver.database.berkeley.DatabaseInitException) DatabaseCreated(org.bimserver.models.log.DatabaseCreated) BimserverDatabaseException(org.bimserver.BimserverDatabaseException) EClass(org.eclipse.emf.ecore.EClass) AddUserDatabaseAction(org.bimserver.database.actions.AddUserDatabaseAction) ServerSettings(org.bimserver.models.store.ServerSettings) CreateBaseProjectDatabaseAction(org.bimserver.database.actions.CreateBaseProjectDatabaseAction) UserException(org.bimserver.shared.exceptions.UserException) Migrator(org.bimserver.database.migrations.Migrator)

Aggregations

InconsistentModelsException (org.bimserver.database.migrations.InconsistentModelsException)2 MigrationException (org.bimserver.database.migrations.MigrationException)2 UserException (org.bimserver.shared.exceptions.UserException)2 SystemAuthorization (org.bimserver.webservices.authorization.SystemAuthorization)2 DatabaseNotFoundException (com.sleepycat.je.DatabaseNotFoundException)1 BufferedReader (java.io.BufferedReader)1 IOException (java.io.IOException)1 InputStreamReader (java.io.InputStreamReader)1 Date (java.util.Date)1 List (java.util.List)1 Set (java.util.Set)1 BimserverDatabaseException (org.bimserver.BimserverDatabaseException)1 BimserverLockConflictException (org.bimserver.database.BimserverLockConflictException)1 DatabaseSession (org.bimserver.database.DatabaseSession)1 KeyValueStore (org.bimserver.database.KeyValueStore)1 AddUserDatabaseAction (org.bimserver.database.actions.AddUserDatabaseAction)1 CreateBaseProjectDatabaseAction (org.bimserver.database.actions.CreateBaseProjectDatabaseAction)1 DownloadDatabaseAction (org.bimserver.database.actions.DownloadDatabaseAction)1 DatabaseInitException (org.bimserver.database.berkeley.DatabaseInitException)1 Migrator (org.bimserver.database.migrations.Migrator)1