IdEObject cachedObject = objectCache.get(keyOid); if (cachedObject != null && ((IdEObjectImpl)cachedObject).getLoadingState() == State.LOADED) { if (!model.contains(keyOid) && cachedObject.eClass().getEAnnotation("wrapped") == null) { try { model.addAllowMultiModel(keyOid, cachedObject); } else { IdEObject object = null; if (model.contains(keyOid) && ((IdEObjectImpl)model.get(keyOid)).getLoadingState() == State.LOADED) { object = model.get(keyOid); } else {
((IdEObjectImpl) idEObject).setRid(keyRid); if (model.contains(keyOid) && ((IdEObjectImpl) model.get(keyOid)).getLoadingState() == State.LOADED) { return (T) model.get(keyOid); } else {
return foundInCache; if (model.contains(oid)) { return model.get(oid);
@SuppressWarnings({ "unchecked", "rawtypes" }) private void processRef(IfcModelInterface model, WaitingList<Long> waitingList, IdEObjectImpl object, EStructuralFeature eStructuralFeature, int index, AbstractEList list, long refOid) throws DeserializeException { EntityDefinition entityBN = model.getPackageMetaData().getSchemaDefinition().getEntityBN(object.eClass().getName()); Attribute attributeBN = entityBN.getAttributeBNWithSuper(eStructuralFeature.getName()); if (skipInverses && attributeBN instanceof InverseAttribute && ((EReference)eStructuralFeature).getEOpposite() != null) { // skip } else { if (model.contains(refOid)) { EObject referencedObject = model.get(refOid); if (referencedObject != null) { addToList(eStructuralFeature, index, list, referencedObject); } } else { waitingList.add(refOid, new ListWaitingObject(-1, object, (EReference) eStructuralFeature, index)); } } }
private void processTodoList(IfcModelInterface model, TodoList todoList, QueryInterface query) throws BimserverDatabaseException { IdEObject idEObject = todoList.poll(); while (idEObject != null) { IdEObject result = get(idEObject, idEObject.getOid(), model, query, todoList); if (result == null) { throw new BimserverDatabaseException("Object not found: " + query.getPid() + " " + query.getRid() + " " + idEObject.getOid() + " " + idEObject.eClass().getName()); } if (!model.contains(result.getOid())) { try { model.addAllowMultiModel(result.getOid(), result); } catch (IfcModelInterfaceException e) { throw new BimserverDatabaseException(e); } } idEObject = todoList.poll(); } }