@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<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 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(); } }