@Override public Date getServerStartTime() { return getBimServer().getServerStartTime().getTime(); }
@Override public String getServerLog() throws ServerException, UserException { requireAdminAuthenticationAndRunningServer(); try { return FileUtils.readFileToString(getBimServer().getHomeDir().resolve("logs/bimserver.log").toFile()); } catch (IOException e) { LOGGER.error("", e); throw new ServerException(e); } }
@Override public SServerInfo getServerInfo() { return getBimServer().getSConverter().convertToSObject(getBimServer().getServerInfo()); }
@Override public void shutdown() throws UserException, ServerException { requireAdminAuthentication(); getBimServer().stop(); } }
@Override public SVersion getLatestVersion() throws ServerException, UserException { return getBimServer().getVersionChecker().getOnlineVersion(); }
@Override public SVersion getVersion() throws ServerException, UserException { return getBimServer().getVersionChecker().getLocalVersion(); }
@Override public List<SMigration> getMigrations() throws UserException { requireAdminAuthentication(); Migrator migrator = getBimServer().getDatabase().getMigrator(); List<SMigration> list = new ArrayList<SMigration>(getBimServer().getSConverter().convertToSSetMigration(migrator.getMigrations())); Collections.sort(list, new SMigrationComparator()); return list; }
@Override public Boolean upgradePossible() throws UserException { requireAdminAuthentication(); return getBimServer().getVersionChecker().updateNeeded(); }
@Override public void migrateDatabase() throws ServerException, UserException { requireAdminAuthentication(); try { getBimServer().getDatabase().getMigrator().migrate(); getBimServer().getServerInfoManager().update(); } catch (Exception e) { LOGGER.error("", e); throw new ServerException(e); } }
@Override public Integer clearOutputFileCache() throws UserException { requireAdminAuthentication(); return getBimServer().getNewDiskCacheManager().cleanup(); }
@Override public void disablePlugin(String name) throws UserException { requireAdminAuthenticationAndRunningServer(); getBimServer().getPluginManager().disablePlugin(name); }
@Override public void enablePlugin(String name) throws UserException { requireAdminAuthenticationAndRunningServer(); getBimServer().getPluginManager().enablePlugin(name); }
@Override public SMetrics getMetrics() throws UserException { requireAdminAuthentication(); return getBimServer().getMetricsRegistry().getMetrics(); }
@Override public void setup(String siteAddress, String serverName, String serverDescription, String serverIcon, String adminName, String adminUsername, String adminPassword) throws ServerException, UserException { SettingsInterface settingsInterface = getServiceMap().get(SettingsInterface.class); if (!siteAddress.startsWith("http://") && !siteAddress.startsWith("https://")) { throw new UserException("Site address should start with \"http://\" or \"https://\""); } if (siteAddress.startsWith("http://http://") || siteAddress.startsWith("https://https://")) { throw new UserException("Site address should not have duplicate protocols"); } settingsInterface.setSiteAddress(siteAddress); settingsInterface.setServerName(serverName); settingsInterface.setServerDescription(serverDescription); settingsInterface.setServerIcon(serverIcon); if (adminUsername.trim().isEmpty()) { throw new UserException("Admin Username cannot be empty"); } if (adminPassword.trim().isEmpty()) { throw new UserException("Admin Password cannot be empty"); } DatabaseSession session = getBimServer().getDatabase().createSession(); try { AddUserDatabaseAction addUserDatabaseAction = new AddUserDatabaseAction(getBimServer(), session, AccessMethod.INTERNAL, adminUsername, adminPassword, adminName, UserType.ADMIN, getAuthorization(), false, ""); session.executeAndCommitAction(addUserDatabaseAction); } catch (BimserverDatabaseException e) { LOGGER.error("", e); } finally { session.close(); } getBimServer().getServerInfoManager().update(); }
@Override public List<SPluginDescriptor> getAllPlugins() throws UserException, ServerException { requireRealUserAuthentication(); DatabaseSession session = getBimServer().getDatabase().createSession(); try { List<SPluginDescriptor> convertToSListPluginDescriptor = getBimServer().getSConverter().convertToSListPluginDescriptor(session.getAllOfType(StorePackage.eINSTANCE.getPluginDescriptor(), PluginDescriptor.class, OldQuery.getDefault())); Collections.sort(convertToSListPluginDescriptor, new SPluginDescriptorComparator()); return convertToSListPluginDescriptor; } catch (Exception e) { return handleException(e); } finally { session.close(); } }
@Override public SDatabaseInformation getDatabaseInformation() throws ServerException, UserException { requireAdminAuthenticationAndRunningServer(); DatabaseSession session = getBimServer().getDatabase().createSession(); try { BimDatabaseAction<DatabaseInformation> action = new GetDatabaseInformationAction(session, getInternalAccessMethod()); return getBimServer().getSConverter().convertToSObject(session.executeAndCommitAction(action)); } catch (Exception e) { return handleException(e); } finally { session.close(); } }
@Override public List<SLogAction> getLogs() throws ServerException, UserException { requireRealUserAuthentication(); DatabaseSession session = getBimServer().getDatabase().createSession(); try { BimDatabaseAction<List<LogAction>> action = new GetLogsDatabaseAction(session, getInternalAccessMethod(), getAuthorization()); List<LogAction> logs = session.executeAndCommitAction(action); List<SLogAction> convertToSListLogAction = getBimServer().getSConverter().convertToSListLogAction(logs); Collections.sort(convertToSListLogAction, new SLogComparator(true)); return convertToSListLogAction; } catch (Exception e) { return handleException(e); } finally { session.close(); } }
@Override public Date getLastDatabaseReset() throws ServerException, UserException { requireRunningServer(); DatabaseSession session = getBimServer().getDatabase().createSession(); try { return session.getCreatedDate(); } catch (Exception e) { handleException(e); return null; } finally { session.close(); } }
@Override public void regenerateGeometry(Long croid) throws ServerException, UserException { LOGGER.info("Regenerating geometry for concrete revision" + croid); DatabaseSession session = getBimServer().getDatabase().createSession(); try { session.setOverwriteEnabled(true); // Normally we wouldn't be allowed to change existing data ConcreteRevision concreteRevision = session.get(StorePackage.eINSTANCE.getConcreteRevision(), croid, OldQuery.getDefault()); PackageMetaData packageMetaData = getBimServer().getMetaDataManager().getPackageMetaData(concreteRevision.getProject().getSchema()); IfcModelInterface model = new BasicIfcModel(packageMetaData, null); session.getMap(model, new OldQuery(packageMetaData, concreteRevision.getProject().getId(), concreteRevision.getId(), -1)); User user = session.get(getAuthorization().getUoid(), OldQuery.getDefault()); UserSettings userSettings = user.getUserSettings(); RenderEnginePluginConfiguration defaultRenderEngine = userSettings.getDefaultRenderEngine(); if (defaultRenderEngine == null) { throw new BimBotsException("No default render engine has been selected for this user", BimBotDefaultErrorCode.NO_RENDER_ENGINE); } RenderEnginePool pool = getBimServer().getRenderEnginePools().getRenderEnginePool(model.getPackageMetaData().getSchema(), defaultRenderEngine.getPluginDescriptor().getPluginClassName(), getBimServer().getPluginSettingsCache().getPluginSettings(defaultRenderEngine.getOid())); new GeometryGenerator(getBimServer()).generateGeometry(pool, getBimServer().getPluginManager(), session, model, concreteRevision.getProject().getId(), concreteRevision.getId(), true, null); session.commit(); } catch (Exception e) { handleException(e); } finally { session.close(); } }
@Override public SBimServerInfo getBimServerInfo() throws ServerException, UserException { requireAdminAuthentication(); SBimServerInfo bimServerInfo = new SBimServerInfo(); SVersion version = getBimServer().getVersionChecker().getLocalVersion(); SVersion latestVersion = getBimServer().getVersionChecker().getOnlineVersion(); SDatabaseInformation databaseInformation = getDatabaseInformation(); bimServerInfo.setCurrentVersion(version.getFullString()); bimServerInfo.setCurrentDate(version.getDate()); bimServerInfo.setLatestVersion(latestVersion.getMajor() + "." + latestVersion.getMinor() + "." + latestVersion.getRevision()); bimServerInfo.setLatestDate(latestVersion.getDate()); bimServerInfo.setCheckouts(databaseInformation.getNumberOfCheckouts()); bimServerInfo.setRevisions(databaseInformation.getNumberOfRevisions()); bimServerInfo.setUsers(databaseInformation.getNumberOfUsers()); bimServerInfo.setProjects(databaseInformation.getNumberOfProjects()); bimServerInfo.setSchemaVersion(databaseInformation.getSchemaVersion()); bimServerInfo.setServerLogUrl(getBimServer().getServerSettingsCache().getServerSettings().getSiteAddress() + "/download?token=" + getServiceMap().getAuthorization().asHexToken(getBimServer().getEncryptionKey()) + "&action=getfile&type=serverlog"); bimServerInfo.setStarted(getServerStartTime()); return bimServerInfo; }