public Set<EReference> getAllHasInverseReferences(EClass eClass) { // TODO cache Set<EReference> result = new HashSet<>(); for (EReference eReference : eClass.getEAllReferences()) { if (hasInverse(eReference)) { result.add(eReference); } } return result; }
public Set<EReference> getAllInverseReferences(EClass eClass) { // TODO cache Set<EReference> result = new HashSet<>(); for (EReference eReference : eClass.getEAllReferences()) { if (isInverse(eReference)) { result.add(eReference); } } return result; }
public boolean hasInverses(EClass eClass) { for (EReference eReference : eClass.getEAllReferences()) { if (hasInverse(eReference)) { return true; } } return false; }
@SuppressWarnings("rawtypes") @Override public IdEObject next() { IdEObject idEObject = todo.poll(); done.add(idEObject); for (EReference eReference : idEObject.eClass().getEAllReferences()) { Object val = idEObject.eGet(eReference); if (eReference.isMany()) { List list = (List) val; for (Object o : list) { if (!done.contains(o)) { todo.add((IdEObject) o); } } } else { if (val != null && !done.contains(val)) { todo.add((IdEObject) val); } } } return idEObject; }
@SuppressWarnings("rawtypes") public int removeInternal(IdEObject idEObject) { int totalRemoved = 1; for (EReference eReference : idEObject.eClass().getEAllReferences()) { if (eReference.isMany()) { List list = (List) idEObject.eGet(eReference); for (Object o : list) { IdEObject refObject = (IdEObject) o; references.get(refObject).remove(idEObject); if (references.get(refObject).size() == 0) { totalRemoved += removeInternal(refObject); } } } else { IdEObject refObject = (IdEObject) idEObject.eGet(eReference); if (references.containsKey(refObject)) { references.get(refObject).remove(idEObject); if (references.get(refObject).size() == 0) { totalRemoved += removeInternal(refObject); } } } } return totalRemoved; }
@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)); } } } }
for (EReference eReference : eClass.getEAllReferences()) { if (!packageMetaData.isInverse(eReference) || isException(eReference)) { EClass eType = (EClass) eReference.getEType();
private void initOppositeInfo() { for (EClassifier eClassifier : ePackage.getEClassifiers()) { if (eClassifier instanceof EClass) { EClass eClass = (EClass)eClassifier; boolean hasOpposites = false; boolean hasManyOpposites = false; for (EReference eReference : eClass.getEAllReferences()) { if (eReference.getEOpposite() != null) { hasOpposites = true; if (eReference.isMany()) { hasManyOpposites = true; } } } oppositeInfos.put(eClass, new OppositeInfo(hasOpposites, hasManyOpposites)); } } }
@SuppressWarnings("rawtypes") private void dumpPlusReferences(Set<IdEObject> done, IdEObject idEObject) { if (idEObject == null) { return; } if (done.contains(idEObject)) { return; } done.add(idEObject); System.out.println(idEObject.getOid() + ": " + idEObject.eClass().getName()); for (EReference eReference : idEObject.eClass().getEAllReferences()) { Object val = idEObject.eGet(eReference); if (eReference.isMany()) { List list = (List) val; for (Object o : list) { dumpPlusReferences(done, (IdEObject) o); } } else { dumpPlusReferences(done, (IdEObject) val); } } }
@SuppressWarnings("rawtypes") public void showBackReferences(IdEObject idEObject) { System.out.println("Showing back references to: " + idEObject); for (IdEObject object : getValues()) { for (EReference eReference : object.eClass().getEAllReferences()) { if (eReference.isMany()) { List list = (List) object.eGet(eReference); for (Object o : list) { if (o == idEObject) { System.out.println(object.eClass().getName() + "." + eReference.getName() + " " + object); } } } else { Object o = object.eGet(eReference); if (o == idEObject) { System.out.println(object.eClass().getName() + "." + eReference.getName() + " " + object); } } } } }
private void storeDeep(IdEObject object, Set<IdEObject> done) throws BimserverDatabaseException { if (object == null || done.contains(object)) { return; } done.add(object); store(object); for (EReference eReference : object.eClass().getEAllReferences()) { if (eReference.isMany()) { List<?> list = (List<?>) object.eGet(eReference); for (Object v : list) { storeDeep((IdEObject) v, done); } } else { IdEObject reference = (IdEObject) object.eGet(eReference); storeDeep(reference, done); } } }
@SuppressWarnings("rawtypes") public void resetOids(IdEObject idEObject, Set<IdEObject> done) { if (idEObject == null) { return; } if (done.contains(idEObject)) { return; } ((IdEObjectImpl) idEObject).setOid(-1); done.add(idEObject); for (EReference eReference : idEObject.eClass().getEAllReferences()) { Object val = idEObject.eGet(eReference); if (eReference.isMany()) { List list = (List) val; for (Object o : list) { resetOids((IdEObject) o, done); } } else { resetOids((IdEObject) val, done); } } }
return 0; for (EReference eReference : basePath.getLastObject().eClass().getEAllReferences()) { Object reference = basePath.getLastObject().eGet(eReference); if (reference != null) {
SchemaDefinition schema = ifcModel.getPackageMetaData().getSchemaDefinition(); for (IdEObject rootObject : rootObjects) { for (EReference eReference : rootObject.eClass().getEAllReferences()) { Attribute attributeBNWithSuper = null; if (schema != null) {
@SuppressWarnings("rawtypes") private void checkDoubleOidsPlusReferences(BiMap<IdEObject, Long> done, IdEObject idEObject) { if (idEObject == null) { return; } if (idEObject.eClass().getEAnnotation("wrapped") != null) { return; } if (done.containsKey(idEObject)) { return; } if (done.containsValue(idEObject.getOid())) { showBackReferences(idEObject); IdEObject existing = done.inverse().get(idEObject.getOid()); showBackReferences(existing); throw new RuntimeException("Double oid: " + idEObject.getOid() + " " + idEObject + ", " + existing); } done.put(idEObject, idEObject.getOid()); for (EReference eReference : idEObject.eClass().getEAllReferences()) { if (eReference.isMany()) { List list = (List) idEObject.eGet(eReference); for (Object o : list) { checkDoubleOidsPlusReferences(done, (IdEObject) o); } } else { checkDoubleOidsPlusReferences(done, (IdEObject) idEObject.eGet(eReference)); } } }
@SuppressWarnings("rawtypes") private void fixOids(IdEObject idEObject, OidProvider oidProvider, BiMap<Long, IdEObject> temp) { if (idEObject == null) { return; } if (temp.containsValue(idEObject)) { return; } ((IdEObjectImpl) idEObject).setOid(oidProvider.newOid(idEObject.eClass())); if (objects.containsValue(idEObject)) { temp.put(idEObject.getOid(), idEObject); } for (EReference eReference : idEObject.eClass().getEAllReferences()) { Object val = idEObject.eGet(eReference); if (eReference.isMany()) { List list = (List) val; for (Object o : list) { fixOids((IdEObject) o, oidProvider, temp); } } else { fixOids((IdEObject) val, oidProvider, temp); } } }
@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") @Override public Void execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException, ServerException { PluginConfiguration pluginConfiguration = getDatabaseSession().get(StorePackage.eINSTANCE.getPluginConfiguration(), oid, OldQuery.getDefault()); UserSettings settings = (UserSettings) pluginConfiguration.eGet(pluginConfiguration.eClass().getEStructuralFeature("userSettings")); if (settings == null) { throw new UserException("No user settings found..."); } for (EReference eReference : settings.eClass().getEAllReferences()) { if (eReference.getEType() == pluginConfiguration.eClass() && eReference.isMany()) { List list = (List) settings.eGet(eReference); list.remove(pluginConfiguration); } } getDatabaseSession().store(settings); pluginConfiguration.remove(); return null; } }
newObject.eSet(eAttribute, idEObject.eGet(eAttribute)); for (EReference eReference : newObject.eClass().getEAllReferences()) { Object referencedObject = idEObject.eGet(eReference); if (referencedObject instanceof IdEObject) {
protected void processPossibleIncludes(HashMapVirtualObject object, EClass previousType, CanInclude canInclude) throws QueryException, BimserverDatabaseException { if (object != null) { if (canInclude.hasReferences()) { for (Reference reference : canInclude.getReferences()) { processPossibleInclude(object, canInclude, reference.getInclude()); } } if (canInclude.hasIncludes()) { for (Include include : canInclude.getIncludes()) { processPossibleInclude(object, canInclude, include); } } if (canInclude.isIncludeAllFields()) { for (EReference eReference : object.eClass().getEAllReferences()) { Include include = new Include(reusable.getPackageMetaData()); include.addType(object.eClass(), false); include.addField(eReference.getName()); if (canInclude.hasIncludes()) { for (Include include2 : canInclude.getIncludes()) { include.addInclude(include2); } } processPossibleInclude(object, canInclude, include); } } if (canInclude instanceof Include) { processPossibleInclude(object, null, (Include) canInclude); } } }