@SuppressWarnings("unchecked") @Override public <T extends IdEObject> T create(EClass eClass, OidProvider oidProvider) throws IfcModelInterfaceException, ObjectAlreadyExistsException { IdEObjectImpl object = (IdEObjectImpl) eClass.getEPackage().getEFactoryInstance().create(eClass); long oid = oidProvider.newOid(eClass); ((IdEObjectImpl) object).setOid(oid); ((IdEObjectImpl) object).setLoadingState(State.LOADED); add(oid, object, false, false); return (T) object; }
public void load(IdEObject object) { if (((IdEObjectImpl) object).getLoadingState() == State.LOADING) { return; } loadExplicit(object.getOid()); }
public boolean hasModel() { return getModel() != null; }
@SuppressWarnings("unchecked") @Override public <T extends IdEObject> T create(EClass eClass, long oid) throws IfcModelInterfaceException { if (eClass == null) { throw new IllegalArgumentException("eClass cannot be null"); } IdEObjectImpl object = (IdEObjectImpl) eClass.getEPackage().getEFactoryInstance().create(eClass); object.setModel(this); object.setOid(oid); return (T) object; }
public EObject create(EClass eClass) { // checkOpen(); IdEObjectImpl idEObject = createInternal(eClass, null); EStructuralFeature uuidFeature = eClass.getEStructuralFeature("uuid"); if (uuidFeature != null) { if (idEObject.eGet(uuidFeature) == null) { idEObject.eSet(uuidFeature, UUID.randomUUID().toString()); } } try { store(idEObject, Database.STORE_PROJECT_ID, Integer.MAX_VALUE); } catch (BimserverDatabaseException e) { LOGGER.error("", e); } return idEObject; }
public ServerLog convertFromSObject(SServerLog input, DatabaseSession session) throws BimserverDatabaseException { if (session == null) { throw new BimserverDatabaseException("session == null, use the other method"); } LOGGER.info("Potential unlinked object created"); ServerLog result = convertFromSObject(input, LogFactory.eINSTANCE.createServerLog(), session); ((IdEObjectImpl)result).setOid(input.getOid()); ((IdEObjectImpl)result).setRid(input.getRid()); return result; }
object.useInverses(false); object.setLoadingState(State.LOADING); while (jsonReader.hasNext()) { String featureName = jsonReader.nextName(); jsonReader.beginArray(); if (eStructuralFeature instanceof EAttribute) { List list = (List) object.eGet(eStructuralFeature); List<String> stringList = null; if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble()) { EStructuralFeature asStringFeature = eClass.getEStructuralFeature(eStructuralFeature.getName() + "AsString"); stringList = (List<String>) object.eGet(asStringFeature); AbstractEList list = (AbstractEList) object.eGet(eStructuralFeature); while (jsonReader.hasNext()) { if (embedded) { IdEObjectImpl listObject = model.create(((EReference) eStructuralFeature).getEReferenceType()); addToList(eStructuralFeature, index, list, listObject); EStructuralFeature listFeature = listObject.eClass().getEStructuralFeature("List"); jsonReader.beginArray(); AbstractEList innerList = (AbstractEList) listObject.eGet(listFeature); if(listFeature instanceof EAttribute){ while (jsonReader.hasNext()) { String refType = jsonReader.nextString(); IdEObject refObject = (IdEObject) model.create(model.getPackageMetaData().getEClassIncludingDependencies(refType), refOid);
idEObject = createInternal(eClass, query); ((IdEObjectImpl) idEObject).setOid(oid); ((IdEObjectImpl) idEObject).setPid(query.getPid()); if (rid == Integer.MAX_VALUE) { throw new BimserverDatabaseException("Database corrupt, rid cannot be " + Integer.MAX_VALUE); ((IdEObjectImpl) idEObject).setRid(rid); ((IdEObjectImpl) idEObject).useInverses(false); ((IdEObjectImpl) idEObject).setLoadingState(State.LOADING); ((IdEObjectImpl) idEObject).setLoaded(); ((IdEObjectImpl) idEObject).useInverses(true); if (DEVELOPER_DEBUG && idEObject.getRid() > 100000 || idEObject.getRid() < -100000) { LOGGER.debug("Improbable rid " + idEObject.getRid() + " - " + idEObject);
@SuppressWarnings({ "unchecked", "rawtypes" }) private IdEObject copy(EClass originalEClass, IdEObject original, boolean setOid, ObjectIDM objectIDM) throws IfcModelInterfaceException { if (!((IdEObjectImpl)original).isLoadedOrLoading()) { return null; ((IdEObjectImpl)newObject).setPid(original.getPid()); ((IdEObjectImpl)newObject).setLoadingState(State.LOADED); long oid = -1; if (keepOriginalOids) { oid = original.getOid(); ((IdEObjectImpl)newObject).setOid(oid); } else { if (newObject.getOid() == -1) { ((IdEObjectImpl)newObject).setOid(oid);
@SuppressWarnings("unchecked") @Override public <T extends IdEObject> T create(EClass eClass) throws IfcModelInterfaceException, ObjectAlreadyExistsException { final IdEObjectImpl idEObject = (IdEObjectImpl) eClass.getEPackage().getEFactoryInstance().create(eClass); idEObject.setModel(this); if (recordChanges) { idEObject.eAdapters().add(adapter); try { Long oid = bimServerClient.getLowLevelInterface().createObject(tid, eClass.getName(), eClass.getEStructuralFeature("GlobalId") != null); idEObject.setOid(oid); } catch (Exception e) { LOGGER.error("", e); } add(idEObject.getOid(), idEObject); } return (T) idEObject; }
public void setLoaded() { setLoadingState(State.LOADED); }
@SuppressWarnings("unchecked") private void add(long oid, IdEObject eObject, boolean ignoreDuplicateOids, boolean allowMultiModel) throws IfcModelInterfaceException, ObjectAlreadyExistsException { if (((IdEObjectImpl) eObject).hasModel() && !allowMultiModel && ((IdEObjectImpl) eObject).getModel() != this) { throw new IfcModelInterfaceException("This object (" + eObject + ") already belongs to a Model: " + ((IdEObjectImpl) eObject).getModel() + ", not this " + this); if (!((IdEObjectImpl) eObject).hasModel() || !allowMultiModel) { ((IdEObjectImpl) eObject).setModel(this);
if (cachedObject != null) { idEObject = cachedObject; if (cachedObject.getLoadingState() == State.LOADED && cachedObject.getRid() != Integer.MAX_VALUE) { cachedObject.load(); return (T) cachedObject; if (keyRid <= query.getRid()) { if (idEObject != null && idEObject.getRid() == Integer.MAX_VALUE) { ((IdEObjectImpl) idEObject).setRid(keyRid); if (model.contains(keyOid) && ((IdEObjectImpl) model.get(keyOid)).getLoadingState() == State.LOADED) { return (T) model.get(keyOid); } else { T convertByteArrayToObject = (T) convertByteArrayToObject(idEObject, eClass, eClass, keyOid, valueBuffer, model, keyRid, query, todoList); if (convertByteArrayToObject.getRid() == Integer.MAX_VALUE) { ((IdEObjectImpl) convertByteArrayToObject).setRid(keyRid);
public void loadExplicit(long oid) { try { IdEObjectImpl idEObjectImpl = (IdEObjectImpl) super.get(oid); if (idEObjectImpl != null && !idEObjectImpl.isLoadedOrLoading() && !assumeCompletePreload) { idEObjectImpl.setLoadingState(State.LOADING); modelState = ModelState.LOADING; Query query = new Query(getPackageMetaData()); QueryPart queryPart = query.createQueryPart(); queryPart.addOid(oid); JsonQueryObjectModelConverter converter = new JsonQueryObjectModelConverter(getPackageMetaData()); long topicId = bimServerClient.getServiceInterface().download(Collections.singleton(roid), converter.toJson(query).toString(), getJsonSerializerOid(), false); waitForDonePreparing(topicId); clientDebugInfo.incExplicit(); processDownload(topicId); bimServerClient.getServiceInterface().cleanupLongAction(topicId); idEObjectImpl.setLoadingState(State.LOADED); modelState = ModelState.NONE; } } catch (Exception e) { LOGGER.error("", e); } }
@SuppressWarnings("unchecked") protected IdEObject copy(IdEObject original) throws IfcModelInterfaceException, ObjectAlreadyExistsException { if (!((IdEObjectImpl)original).isLoadedOrLoading()) { return null; ((IdEObjectImpl)newObject).setOid(original.getOid()); converted.put(original, newObject); if (newObject.eClass().getEAnnotation("wrapped") == null) {
private IdEObject convertWrapped(Revision revision, IfcModelInterface ifcModel, HashMapWrappedVirtualObject hashMapWrappedVirtualObject) throws IfcModelInterfaceException { IdEObject embeddedObject = ifcModel.create(hashMapWrappedVirtualObject.eClass()); ((IdEObjectImpl)embeddedObject).setOid(-1); ((IdEObjectImpl)embeddedObject).setPid(revision.getProject().getId()); for (EAttribute eAttribute : hashMapWrappedVirtualObject.eClass().getEAllAttributes()) { embeddedObject.eSet(eAttribute, hashMapWrappedVirtualObject.eGet(eAttribute)); } return embeddedObject; }
public void resetOidsFlat() { for (IdEObject idEObject : objects.values()) { ((IdEObjectImpl) idEObject).setOid(-1); } }
@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; }
if (feature.getEAnnotation("twodimensionalarray") != null) { IdEObjectImpl newObject = createInternal((EClass) feature.getEType(), query); Object result = readList(newObject, originalQueryClass, buffer, model, query, todoList, newObject.eClass().getEStructuralFeature("List")); if (result != null) { newObject.eSet(newObject.eClass().getEStructuralFeature("List"), result);