@SuppressWarnings("unchecked") @Override public <T extends IdEObject> T create(Class<T> clazz) throws IfcModelInterfaceException { return (T) create(packageMetaData.getEClassIncludingDependencies(clazz)); }
objectIdmCache = new HashMap<EClass, ObjectIDM>(); for (PackageMetaData packageMetaData : metaDataManager.getAllIfc()) { final HideAllInversesObjectIDM hideAllInverse = new HideAllInversesObjectIDM(Collections.singleton(packageMetaData.getEPackage()), packageMetaData); hideAllInverseMap.put(packageMetaData.getEPackage(), hideAllInverse); for (final EClass onlyIncludeRepresentationForThisClass : packageMetaData.getAllSubClasses(packageMetaData.getEClass("IfcProduct"))) { ObjectIDM objectIdm = new ObjectIDM() { @Override
public Set<EClass> getAllSubClasses(EClass superClass) { Set<EClass> set = allSubClasses.get(superClass.getName()); if (set == null) { for (PackageMetaData dep : getDependencies()) { Set<EClass> allSubClasses2 = dep.getAllSubClasses(superClass); if (allSubClasses2 != null) { return allSubClasses2; } } } return set; }
@SuppressWarnings("unchecked") @Override public <T extends IdEObject> T create(EClass eClass) { if (eClass.getEPackage() == ePackage) { return (T) ePackage.getEFactoryInstance().create(eClass); } else { for (PackageMetaData dep : dependencies) { if (dep.has(eClass)) { return dep.create(eClass); } } } throw new RuntimeException("Mismatch"); }
public Set<EClass> getAllEClassesThatHaveInverses() { // TODO cache Set<EClass> result = new HashSet<>(); for (EClassifier eClassifier : getEPackage().getEClassifiers()) { if (eClassifier instanceof EClass) { EClass eClass = (EClass)eClassifier; for (EReference eReference : eClass.getEReferences()) { if (hasInverse(eReference)) { result.add(eClass); continue; } } } } return result; }
int newUnsettedLength = packageMetaData.getUnsettedLength(subClass); int previousUnsettedLength = packageMetaData.getUnsettedLength(subClass, eAttribute); if (packageMetaData.useForDatabaseStorage(subClass, feature)) { if (feature == eAttribute) { unsetted[fieldCounter / 8] |= (1 << (fieldCounter % 8));
String type = jsonReader.nextString(); if (eClass == null) { eClass = model.getPackageMetaData().getEClassIncludingDependencies(type); if(jsonReader.nextName().equals("_t")){ String t = jsonReader.nextString(); IdEObject wrappedObject = model.create(model.getPackageMetaData().getEClass(t),-1); if(jsonReader.nextName().equals("_v")){ EStructuralFeature wv = wrappedObject.eClass().getEStructuralFeature("wrappedValue"); if (nextName.equals("_t")) { String t = jsonReader.nextString(); IdEObject wrappedObject = (IdEObject) model.create(model.getPackageMetaData().getEClass(t), -1); if (jsonReader.nextName().equals("_v")) { EStructuralFeature wv = wrappedObject.eClass().getEStructuralFeature("wrappedValue"); if (jsonReader.nextName().equals("_t")) { String refType = jsonReader.nextString(); IdEObject refObject = (IdEObject) model.create(model.getPackageMetaData().getEClassIncludingDependencies(refType), refOid); ((IdEObjectImpl)refObject).setLoadingState(State.OPPOSITE_SETTING); model.add(refObject.getOid(), refObject); if (jsonReader.nextName().equals("_t")) { String refType = jsonReader.nextString(); EClass referenceEClass = model.getPackageMetaData().getEClassIncludingDependencies(refType); if (jsonReader.nextName().equals("_t")) { String t = jsonReader.nextString(); IdEObject wrappedObject = (IdEObject) model.create(model.getPackageMetaData().getEClassIncludingDependencies(t), -1);
JsonNode typeNode = jsonNode.get("outputType"); if (typeNode.isTextual()) { EClass eClass = packageMetaData.getEClassIncludingDependencies(typeNode.asText()); include.addOutputType(eClass); } else { JsonNode typeNode = types.get(i); if (typeNode.isTextual()) { EClass eClass = packageMetaData.getEClass(typeNode.asText()); include.addOutputType(eClass); } else {
public ObjectIdentifier getOidOfGuid(String schema, String guid, int pid, int rid) throws BimserverDatabaseException { PackageMetaData packageMetaData = getMetaDataManager().getPackageMetaData(schema); for (EClass eClass : packageMetaData.getAllSubClasses(packageMetaData.getEClass("IfcRoot"))) { RecordIterator recordIterator = database.getKeyValueStore().getRecordIterator(eClass.getEPackage().getName() + "_" + eClass.getName(), BinUtils.intToByteArray(pid), BinUtils.intToByteArray(pid), this); value.position(value.position() + packageMetaData.getUnsettedLength(eClass));
public Set<ObjectIdentifier> getOidsOfName(String schema, String name, int pid, int rid) throws BimserverDatabaseException, MetaDataException { Set<ObjectIdentifier> result = new HashSet<ObjectIdentifier>(); for (EClass eClass : getMetaDataManager().getPackageMetaData(schema).getAllSubClasses(getMetaDataManager().getPackageMetaData(schema).getEClass("IfcRoot"))) { RecordIterator recordIterator = database.getKeyValueStore().getRecordIterator(eClass.getEPackage().getName() + "_" + eClass.getName(), BinUtils.intToByteArray(pid), BinUtils.intToByteArray(pid), this);
GenerateGeometryResult generateGeometryResult = new GenerateGeometryResult(); packageMetaData = model.getPackageMetaData(); productClass = packageMetaData.getEClass("IfcProduct"); productRepresentationClass = packageMetaData.getEClass("IfcProductRepresentation"); geometryFeature = productClass.getEStructuralFeature("geometry"); representationFeature = productClass.getEStructuralFeature("Representation"); if (model.getPackageMetaData().getSchema() == Schema.IFC4) { pluginName = "org.bimserver.ifc.step.serializer.Ifc4StepSerializerPlugin"; } else if (model.getPackageMetaData().getSchema() == Schema.IFC2X3TC1) { pluginName = "org.bimserver.ifc.step.serializer.Ifc2x3tc1StepSerializerPlugin"; } else { Set<EClass> classes = new HashSet<>(); for (IdEObject object : model.getAllWithSubTypes(packageMetaData.getEClass("IfcProduct"))) { IdEObject representation = (IdEObject)object.eGet(representationFeature); if (representation != null && ((List<?>)representation.eGet(representationsFeature)).size() > 0) { classes.remove(packageMetaData.getEClass("IfcAnnotation")); classes.remove(packageMetaData.getEClass("IfcOpeningElement")); HideAllInversesObjectIDM idm = new HideAllInversesObjectIDM(CollectionUtils.singleSet(packageMetaData.getEPackage()), model.getPackageMetaData()); OidProvider oidProvider = new OidProvider(){ @Override modelHelper.copyDecomposes(idEObject, newOwnerHistory); bigMap.put(newObject, idEObject); if (packageMetaData.getEClass("IfcElement").isSuperTypeOf(eClass)) { EStructuralFeature hasOpeningsFeature = idEObject.eClass().getEStructuralFeature("HasOpenings");
public boolean useForSerialization(EClass eClass, EStructuralFeature eStructuralFeature) { if (this.getSchemaDefinition() == null) { return true; } return useForSerialization.get(eClass).contains(eStructuralFeature); }
public <T extends IdEObject> T create(Class<T> clazz) throws IfcModelInterfaceException, ObjectAlreadyExistsException { EClassifier eClassifier = getPackageMetaData().getEPackage().getEClassifier(clazz.getSimpleName()); if (eClassifier == null) { eClassifier = GeometryPackage.eINSTANCE.getEClassifier(clazz.getSimpleName()); } if (eClassifier == null) { throw new IfcModelInterfaceException("EClass not found " + clazz); } return create((EClass) eClassifier); }
JsonQueryObjectModelConverter jsonQueryObjectModelConverter = new JsonQueryObjectModelConverter(packageMetaData); String queryNameSpace = packageMetaData.getSchema().name().toLowerCase() + "-stdlib"; queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ContainedInStructure", true)); if (packageMetaData.getSchema() == Schema.IFC4) { queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":IsTypedBy", true)); Include objectPlacement = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ObjectPlacement", true); queryPart.addInclude(objectPlacement); if (packageMetaData.getEClass("IfcElement").isSuperTypeOf(eClass)) { Include openingsInclude = queryPart.createInclude(); openingsInclude.addType(packageMetaData.getEClass(eClass.getName()), false); openingsInclude.addField("HasOpenings"); Include hasOpenings = openingsInclude.createInclude(); hasOpenings.addType(packageMetaData.getEClass("IfcRelVoidsElement"), false); hasOpenings.addField("RelatedOpeningElement"); hasOpenings.addInclude(representationInclude);
GenerateGeometryResult generateGeometryResult = new GenerateGeometryResult(); packageMetaData = queryContext.getPackageMetaData(); productClass = packageMetaData.getEClass("IfcProduct"); geometryFeature = productClass.getEStructuralFeature("geometry"); representationFeature = productClass.getEStructuralFeature("Representation"); representationsFeature = packageMetaData.getEClass("IfcProductDefinitionShape").getEStructuralFeature("Representations"); itemsFeature = packageMetaData.getEClass("IfcShapeRepresentation").getEStructuralFeature("Items"); mappingSourceFeature = packageMetaData.getEClass("IfcMappedItem").getEStructuralFeature("MappingSource"); if (queryContext.getPackageMetaData().getSchema() == Schema.IFC4) { pluginName = "org.bimserver.ifc.step.serializer.Ifc4StepStreamingSerializerPlugin"; } else if (queryContext.getPackageMetaData().getSchema() == Schema.IFC2X3TC1) { pluginName = "org.bimserver.ifc.step.serializer.Ifc2x3tc1StepStreamingSerializerPlugin"; } else { throw new GeometryGeneratingException("Unknown schema " + queryContext.getPackageMetaData().getSchema()); report.setIfcSchema(queryContext.getPackageMetaData().getSchema()); report.setUseMappingOptimization(optimizeMappedItems); report.setReuseGeometry(reuseGeometry); RenderEnginePool renderEnginePool = bimServer.getRenderEnginePools().getRenderEnginePool(packageMetaData.getSchema(), renderEngine.getPluginDescriptor().getPluginClassName(), bimServer.getPluginSettingsCache().getPluginSettings(renderEngine.getOid())); String queryNameSpace = packageMetaData.getSchema().name().toLowerCase() + "-stdlib"; classes = queryContext.getOidCounters().keySet(); } else { classes = packageMetaData.getEClasses(); if (packageMetaData.getEClass("IfcProduct").isSuperTypeOf(eClass)) {
excluded.add(packageMetaData.getEClass(exclude)); queryPart.addType(packageMetaData.getEClass("IfcProduct"), true, excluded); product.addType(packageMetaData.getEClass("IfcProduct"), true); product.addFieldDirect("geometry"); Include geometryInfo = product.createInclude(); HashMapVirtualObject next = queryObjectProvider.next(); while (next != null) { AbstractHashMapVirtualObject geometry = next.getDirectFeature(packageMetaData.getEReference("IfcProduct", "geometry")); if (geometry != null) { Long dataId = (Long) geometry.get("data");
if (packageMetaData.getEClass("IfcProduct").isSuperTypeOf(typeDef.geteClass())) { Include include = queryPart.createInclude(); applyFields(geometryFields, new TypeDef(packageMetaData.getEClass("IfcProduct"), true), include); applyFields(geometryFields, new TypeDef(packageMetaData.getEClass("IfcProduct"), true), newInclude); HashMapVirtualObject next = queryObjectProvider.next(); while (next != null) { IdEObject newObject = packageMetaData.create(next.eClass()); IdEObjectImpl idEObjectImpl = (IdEObjectImpl)newObject; idEObjectImpl.setPid(revision.getProject().getId()); IdEObject listObject = packageMetaData.create(hashMapVirtualObject.eClass()); List subList = (List<?>) hashMapVirtualObject.get("List"); List newList = (List<?>) listObject.eGet(listObject.eClass().getEStructuralFeature("List"));
private float processUnits(DatabaseSession databaseSession, QueryContext queryContext) throws QueryException, IOException, BimserverDatabaseException { Query query = new Query("Unit query", packageMetaData); QueryPart unitQueryPart = query.createQueryPart(); unitQueryPart.addType(packageMetaData.getEClass("IfcProject"), false); Include unitsInContextInclude = unitQueryPart.createInclude(); unitsInContextInclude.addType(packageMetaData.getEClass("IfcProject"), false); unitsInContextInclude.addField("UnitsInContext"); Include units = unitsInContextInclude.createInclude(); units.addType(packageMetaData.getEClass("IfcUnitAssignment"), false); units.addField("Units"); Include unit = units.createInclude(); unit.addType(packageMetaData.getEClass("IfcSIUnit"), false); if (packageMetaData.getEClass("IfcSIUnit").isSuperTypeOf(next.eClass())) { if (next.get("UnitType") == packageMetaData.getEEnumLiteral("IfcUnitEnum", "LENGTHUNIT").getInstance()) { Object prefix = next.get("Prefix"); if (prefix == null) {
public void exclude(EClass eClass, EStructuralFeature eStructuralFeature) { if (includedFeatures.containsKey(eClass)) { includedFeatures.get(eClass).remove(eStructuralFeature); } for (EClass subClass : packageMetaData.getDirectSubClasses(eClass)) { exclude(subClass, eStructuralFeature); } }