public Collection<PackageMetaData> getAllIfc() { Set<PackageMetaData> result = new HashSet<>(); result.add(getPackageMetaData("Ifc2x3tc1")); result.add(getPackageMetaData("Ifc4")); return result; } }
@Override public void init(PluginContext pluginContext, PluginConfiguration systemSettings) throws PluginException { PackageMetaData packageMetaData = pluginContext.getMetaDataManager().getPackageMetaData("ifc2x3tc1"); objectIDM = new SchemaFieldIgnoreMap(CollectionUtils.singleSet(Ifc2x3tc1Package.eINSTANCE), packageMetaData); }
public IfcModelInterface newModel(SProject project, boolean recordChanges) throws ServerException, UserException, BimServerClientException, PublicInterfaceNotFoundException { return new ClientIfcModel(this, project.getOid(), -1, false, getMetaDataManager().getPackageMetaData(project.getSchema()), recordChanges, false); }
public synchronized void updateCache() { DatabaseSession session = database.createSession(); try { serverSettings = session.getSingle(StorePackage.eINSTANCE.getServerSettings(), new OldQuery(session.getMetaDataManager().getPackageMetaData("store"), true)); if (serverSettings.getSessionTimeOutSeconds() == 0) { serverSettings.setSessionTimeOutSeconds(60 * 60 * 24 * 30); } allowedHosts.clear(); for (String domain : serverSettings.getWhitelistedDomains()) { allowedHosts.add(domain); } } catch (BimserverDatabaseException e) { LOGGER.error("", e); } finally { session.close(); } }
public ClientIfcModel getModel(SProject project, long roid, boolean deep, boolean recordChanges) throws BimServerClientException, UserException, ServerException, PublicInterfaceNotFoundException { if (roid == -1) { throw new UserException("Roid cannot be -1"); } return new ClientIfcModel(this, project.getOid(), roid, deep, getMetaDataManager().getPackageMetaData(project.getSchema()), recordChanges, false); }
public ClientIfcModel getModel(SProject project, long roid, boolean deep, boolean recordChanges, boolean includeGeometry) throws UserException, ServerException { if (roid == -1) { throw new UserException("Roid cannot be -1"); } return new ClientIfcModel(this, project.getOid(), roid, deep, getMetaDataManager().getPackageMetaData(project.getSchema()), recordChanges, includeGeometry); }
private void initDependencies() { for (PackageMetaData packageMetaData : ePackages.values()) { for (EClassifier eClassifier : packageMetaData.getEPackage().getEClassifiers()) { if (eClassifier instanceof EClass) { EClass eClass = (EClass)eClassifier; for (EReference eReference : eClass.getEReferences()) { if (eReference.getEType().getEPackage() != packageMetaData.getEPackage()) { packageMetaData.addDependency(getPackageMetaData(eReference.getEType().getEPackage().getName())); } } } } } }
@Override public List<String> execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException { Revision revision = getRevisionByRoid(roid); PackageMetaData packageMetaData = bimServer.getMetaDataManager().getPackageMetaData(revision.getProject().getSchema()); return new ArrayList<String>(getDatabaseSession().getAvailableClassesInRevision(new OldQuery(packageMetaData, revision.getProject().getId(), revision.getId(), -1))); } }
@Override public Integer execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException { Revision revision = getRevisionByRoid(roid); if (revision == null) { throw new UserException("Revision with roid " + roid + " not found"); } PackageMetaData packageMetaData = bimServer.getMetaDataManager().getPackageMetaData(revision.getProject().getSchema()); Project project = revision.getProject(); if (revision.getConcreteRevisions().size() == 1 && revision.getConcreteRevisions().get(0).getSummary() != null) { RevisionSummary summary = revision.getConcreteRevisions().get(0).getSummary(); SummaryMap summaryMap = new SummaryMap(packageMetaData, summary); if (className.equals("[ALL]")) { return summaryMap.count(); } else { return summaryMap.count(getDatabaseSession().getEClass(project.getSchema(), className)); } } return null; } }
@SuppressWarnings("unused") public IdEObject lazyLoad(IdEObject idEObject) throws BimserverDatabaseException { if (DEVELOPER_DEBUG) { LOGGER.info("Lazy loading " + idEObject.eClass().getName() + " " + idEObject.getOid()); } IfcModelInterface model = ((IdEObjectImpl)idEObject).getModel(); if (model == null) { Map<Integer, Long> pidToRoid = new HashMap<Integer, Long>(); model = createModel(getMetaDataManager().getPackageMetaData(idEObject.eClass().getEPackage().getName()), pidToRoid); } idEObject = get(idEObject, idEObject.getOid(), model, ((IdEObjectImpl) idEObject).getQueryInterface(), new TodoList()); if (idEObject != null) { if (DEVELOPER_DEBUG && idEObject.getRid() > 100000 || idEObject.getRid() < -100000) { LOGGER.debug("Improbable rid " + idEObject.getRid() + " - " + idEObject); } } return idEObject; }
public ConcreteRevisionStackFrame(QueryObjectProvider queryObjectProvider, ConcreteRevision concreteRevision, long roid) { this.queryObjectProvider = queryObjectProvider; int highestStopId = AbstractDownloadDatabaseAction.findHighestStopRid(concreteRevision.getProject(), concreteRevision); packageMetaData = queryObjectProvider.getMetaDataManager().getPackageMetaData(concreteRevision.getProject().getSchema()); queryContext = new QueryContext(queryObjectProvider.getDatabaseSession(), packageMetaData, concreteRevision.getProject().getId(), concreteRevision.getId(), roid, concreteRevision.getOid(), highestStopId); if (concreteRevision.getOidCounters() != null) { synchronized (getClass()) { if (reusableQueryContexts.containsKey(concreteRevision.getOid())) { queryContext.setOidCounters(reusableQueryContexts.get(concreteRevision.getOid())); } else { try { Map<EClass, Long> updateOidCounters = updateOidCounters(concreteRevision, queryObjectProvider.getDatabaseSession()); queryContext.setOidCounters(updateOidCounters); reusableQueryContexts.put(concreteRevision.getOid(), updateOidCounters); } catch (BimserverDatabaseException e) { e.printStackTrace(); } } } } }
@Override public void execute(Transaction transaction) throws UserException, BimserverLockConflictException, BimserverDatabaseException, IOException, QueryException { PackageMetaData packageMetaData = transaction.getDatabaseSession().getMetaDataManager().getPackageMetaData(transaction.getProject().getSchema()); HashMapVirtualObject object = transaction.get(oid); if (object == null) { Query query = new Query(packageMetaData); QueryPart queryPart = query.createQueryPart(); queryPart.addOid(oid); QueryObjectProvider queryObjectProvider = new QueryObjectProvider(transaction.getDatabaseSession(), transaction.getBimServer(), query, Collections.singleton(transaction.getPreviousRevision().getOid()), packageMetaData); object = queryObjectProvider.next(); } if (object == null) { throw new UserException("Object with oid " + oid + " not found"); } if (!ChangeHelper.canBeChanged(eClass)) { throw new UserException("Only objects from the following schemas are allowed to be changed: Ifc2x3tc1 and IFC4, this object (" + eClass.getName() + ") is from the \"" + eClass.getEPackage().getName() + "\" package"); } transaction.deleted(object); } }
@Override public void execute(Transaction transaction) throws UserException, BimserverLockConflictException, BimserverDatabaseException { PackageMetaData packageMetaData = transaction.getDatabaseSession().getMetaDataManager().getPackageMetaData(transaction.getProject().getSchema()); QueryContext queryContext = new QueryContext(transaction.getDatabaseSession(), packageMetaData, transaction.getConcreteRevision().getProject().getId(), transaction.getPreviousRevision() == null ? 1 : transaction.getPreviousRevision().getRid() + 1, -1, -1, 0); // TODO if (!ChangeHelper.canBeChanged(eClass)) { throw new UserException("Only objects from the following schemas are allowed to be changed: Ifc2x3tc1 and IFC4, this object (" + eClass.getName() + ") is from the \"" + eClass.getEPackage().getName() + "\" package"); } HashMapVirtualObject object = new HashMapVirtualObject(queryContext, eClass, oid); if (generateGuid) { EStructuralFeature globalIdFeature = object.eClass().getEStructuralFeature("GlobalId"); if (globalIdFeature != null) { object.setAttribute(globalIdFeature, GuidCompressor.getNewIfcGloballyUniqueId()); } else { throw new UserException("Cannot generate GUID for " + object.eClass().getName() + ", no GlobalId property"); } } transaction.created(object); } }
PackageMetaData packageMetaData = bimServer.getMetaDataManager().getPackageMetaData(project.getSchema());
@Override public Double execute() throws UserException, BimserverDatabaseException, BimserverLockConflictException { Revision revision = getDatabaseSession().get(roid, OldQuery.getDefault()); IfcProduct ifcProduct = getDatabaseSession().get(oid, new OldQuery(bimServer.getMetaDataManager().getPackageMetaData(revision.getProject().getSchema()), revision.getProject().getId(), revision.getId(), revision.getOid())); return ifcProduct.getGeometry().getArea(); } }
@Override public Double execute() throws UserException, BimserverDatabaseException, BimserverLockConflictException { Revision revision = getDatabaseSession().get(roid, OldQuery.getDefault()); IfcProduct ifcProduct = getDatabaseSession().get(oid, new OldQuery(bimServer.getMetaDataManager().getPackageMetaData(revision.getProject().getSchema()), revision.getProject().getId(), revision.getId(), revision.getOid())); return ifcProduct.getGeometry().getVolume(); } }
@Override public SGeometryInfo execute() throws UserException, BimserverDatabaseException, BimserverLockConflictException { Revision revision = getDatabaseSession().get(roid, OldQuery.getDefault()); Project project = revision.getProject(); PackageMetaData packageMetaData = bimServer.getMetaDataManager().getPackageMetaData(project.getSchema()); IdEObject ifcProduct = getDatabaseSession().get(oid, new OldQuery(packageMetaData, project.getId(), revision.getId(), revision.getOid())); if (ifcProduct == null) { throw new UserException("Object with oid " + oid + " not found"); } EStructuralFeature geometryFeature = packageMetaData.getEClass("IfcProduct").getEStructuralFeature("geometry"); GeometryInfo geometry = (GeometryInfo) ifcProduct.eGet(geometryFeature); SGeometryInfo convertToSObject = bimServer.getSConverter().convertToSObject(geometry); return convertToSObject; } }
public org.bimserver.plugins.modelcompare.ModelCompare getModelCompare() throws ModelCompareException, BimserverDatabaseException { Revision revision1 = getDatabaseSession().get(roid1, OldQuery.getDefault()); Revision revision2 = getDatabaseSession().get(roid2, OldQuery.getDefault()); PackageMetaData packageMetaData = bimServer.getMetaDataManager().getPackageMetaData(revision1.getProject().getSchema()); if (revision1.getProject().getSchema().equals(revision2.getProject().getSchema())) { ModelComparePluginConfiguration modelCompareObject = getDatabaseSession().get(StorePackage.eINSTANCE.getModelComparePluginConfiguration(), mcid, OldQuery.getDefault()); if (modelCompareObject != null) { ModelComparePlugin modelComparePlugin = bimServer.getPluginManager().getModelComparePlugin(modelCompareObject.getPluginDescriptor().getPluginClassName(), true); if (modelComparePlugin != null) { org.bimserver.plugins.modelcompare.ModelCompare modelCompare = modelComparePlugin.createModelCompare(bimServer.getPluginSettingsCache().getPluginSettings(modelCompareObject.getOid()), packageMetaData); return modelCompare; } else { throw new ModelCompareException("No Model Compare found " + modelCompareObject.getPluginDescriptor().getPluginClassName()); } } else { throw new ModelCompareException("No configured Model Compare found"); } } else { throw new ModelCompareException("Not the same schema"); } }
public org.bimserver.plugins.modelcompare.ModelCompare getModelCompare() throws ModelCompareException, BimserverDatabaseException { Revision revision1 = getDatabaseSession().get(roid1, OldQuery.getDefault()); Revision revision2 = getDatabaseSession().get(roid2, OldQuery.getDefault()); PackageMetaData packageMetaData = getBimServer().getMetaDataManager().getPackageMetaData(revision1.getProject().getSchema()); if (revision1.getProject().getSchema().equals(revision2.getProject().getSchema())) { ModelComparePluginConfiguration modelCompareObject = getDatabaseSession().get(StorePackage.eINSTANCE.getModelComparePluginConfiguration(), mcid, OldQuery.getDefault()); if (modelCompareObject != null) { ModelComparePlugin modelComparePlugin = getBimServer().getPluginManager().getModelComparePlugin(modelCompareObject.getPluginDescriptor().getPluginClassName(), true); if (modelComparePlugin != null) { org.bimserver.plugins.modelcompare.ModelCompare modelCompare = modelComparePlugin.createModelCompare(getBimServer().getPluginSettingsCache().getPluginSettings(modelCompareObject.getOid()), packageMetaData); return modelCompare; } else { throw new ModelCompareException("No Model Compare found " + modelCompareObject.getPluginDescriptor().getPluginClassName()); } } else { throw new ModelCompareException("No configured Model Compare found"); } } else { throw new ModelCompareException("Schemas not the same"); } }
@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(); } }