public Set<String> getAvailableClassesInRevision(IfcModelInterface ifcModel, QueryInterface query) throws BimserverDatabaseException { checkOpen(); try { getMap(ifcModel, query); Set<String> classes = new HashSet<String>(); for (IdEObject idEObject : ifcModel.getValues()) { classes.add(idEObject.eClass().getName()); } return classes; } catch (BimserverDatabaseException e) { LOGGER.error("", e); } return null; }
public SummaryMap(IfcModelInterface model) throws BimserverDatabaseException { this.packageMetaData = model.getPackageMetaData(); this.summaryMap = new TreeMap<EClass, Integer>(new EClassNameComparator()); for (IdEObject idEObject : model.getValues()) { if (!summaryMap.containsKey(idEObject.eClass())) { summaryMap.put(idEObject.eClass(), 1); } else { summaryMap.put(idEObject.eClass(), summaryMap.get(idEObject.eClass()) + 1); } } }
@SuppressWarnings("rawtypes") public void updateReferences() { references.clear(); for (IdEObject idEObject : ifcModel.getValues()) { for (EReference eReference : idEObject.eClass().getEAllReferences()) { if (eReference.isMany()) { List list = (List) idEObject.eGet(eReference); for (Object o : list) { if (!references.containsKey(o)) { references.put((IdEObject) o, new HashSet<Reference>()); } references.get(o).add(new MultiReference(idEObject, (IdEObject) o, eReference)); } } else { Object o = idEObject.eGet(eReference); if (!references.containsKey(o)) { references.put((IdEObject) o, new HashSet<Reference>()); } references.get(o).add(new SingleReference(idEObject, (IdEObject) o, eReference)); } } } }
public <T extends IdEObject> Map<Long, T> query(IfcModelInterface model, Condition condition, Class<T> clazz, QueryInterface query) throws BimserverDatabaseException { Map<Long, T> map = new HashMap<Long, T>(); Set<EClass> eClasses = new HashSet<EClass>(); condition.getEClassRequirements(eClasses); for (EClass eClass : eClasses) { TodoList todoList = new TodoList(); getMap(eClass, model, query, todoList); processTodoList(model, todoList, query); List<IdEObject> list = new ArrayList<IdEObject>(model.getValues()); for (IdEObject object : list) { if (clazz.isInstance(object)) { if (condition.matches(object)) { map.put(object.getOid(), clazz.cast(object)); } } } } return map; }
@Override public Set<Project> execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException { User user = getUserByUoid(authorization.getUoid()); IfcModelInterface projectsModel = getDatabaseSession().getAllOfType(StorePackage.eINSTANCE.getProject(), OldQuery.getDefault()); Set<Project> result = new HashSet<Project>(); for (IdEObject idEObject : projectsModel.getValues()) { if (idEObject instanceof Project) { Project project = (Project)idEObject; if (!project.getName().equals("INT-Store")) { if ((user.getUserType() == UserType.ADMIN || (project.getState() == ObjectState.ACTIVE) && authorization.hasRightsOnProjectOrSuperProjects(user, project))) { result.add(project); } } } } return result; } }
@Override public Set<Project> execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException { User user = getUserByUoid(authorization.getUoid()); IfcModelInterface projectsModel = getDatabaseSession().getAllOfType(StorePackage.eINSTANCE.getProject(), OldQuery.getDefault()); Set<Project> result = new HashSet<Project>(); for (IdEObject idEObject : projectsModel.getValues()) { if (idEObject instanceof Project) { Project project = (Project)idEObject; if ((user.getUserType() == UserType.ADMIN || (project.getState() == ObjectState.ACTIVE) && authorization.hasRightsOnProjectOrSuperProjectsOrSubProjects(user, project))) { result.add(project); } } } return result; } }
for (IdEObject idEObject : model.getValues()) { for (EStructuralFeature eStructuralFeature : idEObject.eClass().getEAllStructuralFeatures()) { Object value = idEObject.eGet(eStructuralFeature);
public IfcModel merge() throws IfcModelInterfaceException { for (IdEObject idEObject : oldModel.getValues()) { copy(resultModel, idEObject, false); } resultModel.indexGuids(); newModel.fixOids(new IncrementingOidProvider(resultModel.getHighestOid() + 1)); copyAttributesGuidObjectsAndAddNewObjects(); updateReferences(); fixExplicitNullReferences(); fixNonGuidObjects(); TracingGarbageCollector tracingGarbageCollector = new TracingGarbageCollector(resultModel); Set<IdEObject> rootObjects = new HashSet<IdEObject>(); for (IdEObject idEObject : resultModel.getValues()) { if (idEObject instanceof IfcProject) { rootObjects.add(idEObject); } } tracingGarbageCollector.mark(rootObjects); tracingGarbageCollector.sweep(); return resultModel; }
public void convert() throws SchemaConverterException, IfcModelInterfaceException { if (getSource().getPackageMetaData().getEPackage() != Ifc4Package.eINSTANCE) { throw new SchemaConverterException("Source model should be Ifc4"); } if (getTarget().getPackageMetaData().getEPackage() != Ifc2x3tc1Package.eINSTANCE) { throw new SchemaConverterException("Target model should be Ifc2x3tc1"); } for (IdEObject idEObject : getSource().getValues()) { copy(idEObject); } }
public void convert() throws SchemaConverterException, IfcModelInterfaceException { if (getSource().getPackageMetaData().getEPackage() != Ifc2x3tc1Package.eINSTANCE) { throw new SchemaConverterException("Source model should be Ifc2x3tc1"); } if (getTarget().getPackageMetaData().getEPackage() != Ifc4Package.eINSTANCE) { throw new SchemaConverterException("Target model should be Ifc4"); } for (IdEObject idEObject : getSource().getValues()) { copy(idEObject); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) private void fixExplicitNullReferences() { for (IdEObject idEObject : newModel.getValues()) { if (idEObject instanceof IfcRoot) { String guid = ((IfcRoot) idEObject).getGlobalId();
@Override public List<SLogAction> getUserRelatedLogs(Long uoid) throws ServerException, UserException { DatabaseSession session = getBimServer().getDatabase().createSession(); try { List<LogAction> logActions = new ArrayList<LogAction>(); User user = session.get(getAuthorization().getUoid(), OldQuery.getDefault()); IfcModelInterface projectsModel = session.getAllOfType(StorePackage.eINSTANCE.getProject(), OldQuery.getDefault()); logActions.addAll(user.getLogs()); for (IdEObject idEObject : projectsModel.getValues()) { if (idEObject instanceof Project) { Project project = (Project)idEObject; if ((user.getUserType() == UserType.ADMIN || (project.getState() == ObjectState.ACTIVE) && getAuthorization().hasRightsOnProjectOrSuperProjectsOrSubProjects(user, project))) { logActions.addAll(project.getLogs()); } } } Collections.sort(logActions, new Comparator<LogAction>(){ @Override public int compare(LogAction o1, LogAction o2) { return o1.getDate().compareTo(o2.getDate()); }}); return getBimServer().getSConverter().convertToSListLogAction(logActions); } catch (Exception e) { return handleException(e); } finally { session.close(); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) private void updateReferences() { for (IdEObject idEObject : newModel.getValues()) { if (idEObject instanceof IfcRoot) { String guid = ((IfcRoot) idEObject).getGlobalId(); IfcRoot oldObject = (IfcRoot) resultModel.getByGuid(guid); for (EReference eReference : idEObject.eClass().getEAllReferences()) { Object referencedObject = idEObject.eGet(eReference); if (referencedObject instanceof IfcRoot) { String referencedGuid = ((IfcRoot) referencedObject).getGlobalId(); IfcRoot newObject = (IfcRoot) resultModel.getByGuid(referencedGuid); oldObject.eSet(eReference, newObject); // LOGGER.info("Fixing reference from " + guid + " to " + referencedGuid); } else if (referencedObject instanceof List) { List referencedList = (List) referencedObject; List oldReferencedList = (List) oldObject.eGet(eReference); for (Object object : referencedList) { if (object instanceof IfcRoot) { IfcRoot referencedItem = (IfcRoot) object; String itemGuid = referencedItem.getGlobalId(); oldReferencedList.add(resultModel.getByGuid(itemGuid)); // LOGGER.info("Fixing list reference from " + guid + " to " + itemGuid); } } } } } } }
@SuppressWarnings({ "rawtypes", "unchecked" }) private void fixNonGuidObjects() throws IfcModelInterfaceException { Set<List> clearedLists = new HashSet<List>(); for (IdEObject idEObject : newModel.getValues()) { if (idEObject instanceof IfcRoot) { String guid = ((IfcRoot) idEObject).getGlobalId();
ServerSettings settings = bimServer.getServerSettingsCache().getServerSettings(); IfcModelInterface users = session.getAllOfType(StorePackage.eINSTANCE.getUser(), OldQuery.getDefault()); for (IdEObject idEObject : users.getValues()) { if (idEObject instanceof User) { User user = (User)idEObject;
private void copyAttributesGuidObjectsAndAddNewObjects() throws IfcModelInterfaceException, ObjectAlreadyExistsException { for (IdEObject idEObject : newModel.getValues()) { if (idEObject instanceof IfcRoot) { IfcRoot ifcRoot = (IfcRoot) idEObject; String guid = ifcRoot.getGlobalId(); if (resultModel.containsGuid(guid)) { // LOGGER.info("Updating attributes for object " + idEObject.eClass().getName() + " " + guid); IfcRoot oldObject = (IfcRoot) resultModel.getByGuid(guid); for (EAttribute eAttribute : idEObject.eClass().getEAllAttributes()) { Object newValue = idEObject.eGet(eAttribute); oldObject.eSet(eAttribute, newValue); } } else { // LOGGER.info("Adding new GUID object " + idEObject.eClass().getName() + " " + guid); IdEObject newObject = (IdEObject) idEObject.eClass().getEPackage().getEFactoryInstance().create(idEObject.eClass()); ((IdEObjectImpl)newObject).setOid(idEObject.getOid()); ((IfcRoot) newObject).setGlobalId(newGuid(guid)); for (EAttribute eAttribute : newObject.eClass().getEAllAttributes()) { newObject.eSet(eAttribute, idEObject.eGet(eAttribute)); } resultModel.add(newObject.getOid(), newObject); } } } }