public Include copy() throws QueryException { Include newInclude = new Include(getPackageMetaData()); if (hasDirectFields()) { for (EReference eReference : getFieldsDirect()) { newInclude.addFieldDirect(eReference.getName()); } } if (hasTypes()) { for (TypeDef typeDef : getTypes()) { newInclude.addType(typeDef); } } if (hasFields()) { for (EReference eReference : getFields()) { newInclude.addField(eReference); } } if (hasReferences()) { for (Reference reference : getReferences()) { newInclude.addIncludeReference(reference.getInclude(), reference.getName()); } } return newInclude; } }
private Include createFilteredInclude(Include inputInclude) throws QueryException { Include newInclude = new Include(inputInclude.getPackageMetaData()); for (TypeDef typeDef : inputInclude.getTypes()) { newInclude.addType(typeDef); } if (inputInclude.hasFields()) { for (EReference field : inputInclude.getFields()) { if (field.getName().equals("data")) { // Skip, this is the actual filtering return newInclude; } newInclude.addField(field); } } if (inputInclude.hasIncludes()) { for (Include include2 : inputInclude.getIncludes()) { newInclude.addInclude(createFilteredInclude(include2)); } } return newInclude; } }
private void applyFields(Set<String> geometryFields, TypeDef typeDef, Include include) throws QueryException { include.addType(typeDef); include.addField("geometry"); Include geometryInclude = include.createInclude(); geometryInclude.addType(GeometryPackage.eINSTANCE.getGeometryInfo(), false); geometryInclude.addField("data"); Include geometryData = geometryInclude.createInclude(); geometryData.addType(GeometryPackage.eINSTANCE.getGeometryData(), false); geometryData.addField("color"); for (String field : geometryFields) { geometryData.addField(field); } }
public Include createInclude() { Include include = new Include(packageMetaData); addInclude(include); return include; }
private void createFilteredInclude(QueryPart result, Include include) throws QueryException { Include newInclude = result.createInclude(); for (TypeDef typeDef : include.getTypes()) { newInclude.addType(typeDef); } for (EReference field : include.getFields()) { newInclude.addField(field); } for (Include include2 : include.getIncludes()) { newInclude.addInclude(createFilteredInclude(include2)); } }
return; if (hasTypes()) { sb.append(indent(indent) + "types\n"); for (TypeDef typeDef : getTypes()) { sb.append(indent(indent + 1) + typeDef.geteClass().getName() + "\n"); if (hasFields()) { sb.append(indent(indent) + "fields\n"); for (EReference field : getFields()) { sb.append(indent(indent + 1) + field.getName() + "\n"); if (hasDirectFields()) { sb.append(indent(indent) + "directfields\n"); for (EReference field : getFieldsDirect()) { sb.append(indent(indent + 1) + field.getName() + "\n"); if (hasIncludes()) { sb.append(indent(indent) + "includes\n"); for (Include include : getIncludes()) { include.dump(indent + 1, sb); if (hasOutputTypes()) { sb.append(indent(indent) + "outputTypes\n"); for (EClass outputType : getOutputTypes()) { sb.append(indent(indent + 1) + outputType.getName() + "\n");
for (TypeDef type : include.getTypes()) { ObjectNode typeDefNode = OBJECT_MAPPER.createObjectNode(); typeDefNode.put("name", type.geteClass().getName()); if (include.hasFields()) { ArrayNode fieldsNode = OBJECT_MAPPER.createArrayNode(); for (EReference eReference : include.getFields()) { fieldsNode.add(eReference.getName()); if (include.hasDirectFields()) { ArrayNode fieldsNode = OBJECT_MAPPER.createArrayNode(); for (EReference eReference : include.getFieldsDirect()) { fieldsNode.add(eReference.getName()); if (include.hasIncludes() || include.hasReferences()) { ArrayNode includes = OBJECT_MAPPER.createArrayNode(); includeNode.set("includes", includes); if (include.hasIncludes()) { for (Include nextInclude : include.getIncludes()) { includes.add(dumpInclude(nextInclude)); if (include.hasReferences()) { for (Reference reference : include.getReferences()) { includes.add(reference.getName()); if (include.hasOutputTypes()) { throw new RuntimeException("Not implemented");
if (packageMetaData.getEClass("IfcElement").isSuperTypeOf(eClass)) { Include connected = queryPart.createInclude(); connected.addType(eClass, false); connected.addField("ConnectedTo"); connected.addField("ConnectedFrom"); Include connectedTo = connected.createInclude(); connectedTo.addType(packageMetaData.getEClass("IfcRelConnectsPathElements"), false); connectedTo.addField("RelatedElement"); connectedTo.addField("RelatingElement"); connectedTo.addInclude(representationInclude); connectedTo.addInclude(objectPlacement); connectedTo.addInclude(ownerHistory); connectedTo.addInclude(decomposes); Include openingsInclude = connectedTo.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); hasOpenings.addInclude(objectPlacement); fillsVoidsInclude.addType(eClass, false); fillsVoidsInclude.addField("VoidsElements"); Include fillsInclude = fillsVoidsInclude.createInclude(); fillsInclude.addType(packageMetaData.getEClass("IfcRelVoidsElement"), false); fillsInclude.addField("RelatingBuildingElement");
product.addType(packageMetaData.getEClass("IfcProduct"), true); product.addFieldDirect("geometry"); Include geometryInfo = product.createInclude(); geometryInfo.addType(GeometryPackage.eINSTANCE.getGeometryInfo(), false);
protected void processPossibleInclude(HashMapVirtualObject object, CanInclude previousInclude, Include include) throws QueryException, BimserverDatabaseException { if (include.hasTypes()) { for (TypeDef filterClass : include.getTypes()) { if (include.hasDirectFields()) { for (EReference eReference : include.getFieldsDirect()) { Object ref = object.get(eReference.getName()); if (ref != null) { if (include.hasFields()) { for (EStructuralFeature eStructuralFeature : include.getFields()) {
EClass geometryInfoClass = getPackageMetaData().getEClassIncludingDependencies("GeometryInfo"); Include include = queryPart.createInclude(); include.addType(geometryInfoClass, false); include.addField("data"); Include geometryData = include.createInclude(); geometryData.addType(getPackageMetaData().getEClassIncludingDependencies("GeometryData"), false); geometryData.addFieldDirect("indices"); geometryData.addFieldDirect("normals"); geometryData.addFieldDirect("vertices"); geometryData.addFieldDirect("colorsQuantized");
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); } } }
private Include parseInclude(Query query, ObjectNode jsonNode, Include include, CanInclude parentInclude) throws QueryException { if (include == null) { include = new Include(packageMetaData); if (typeNode.isTextual()) { EClass eClass = packageMetaData.getEClassIncludingDependencies(typeNode.asText()); include.addOutputType(eClass); } else { throw new QueryException("\"outputType\" field mst be of type string"); if (typeNode.isTextual()) { EClass eClass = packageMetaData.getEClass(typeNode.asText()); include.addOutputType(eClass); } else { throw new QueryException("\"outputTypes\"[" + i + "] field mst be of type string"); JsonNode fieldNode = jsonNode.get("field"); if (fieldNode.isTextual()) { include.addField(fieldNode.asText()); } else { throw new QueryException("\"field\" must be of type string"); JsonNode fieldNode = fields.get(i); if (fieldNode.isTextual()) { include.addField(fieldNode.asText()); } else { throw new QueryException("\"fields\"[" + i + "] must be of type string"); JsonNode fieldNode = fields.get(i); if (fieldNode.isTextual()) {
public QueryIncludeStackFrame(QueryObjectProvider queryObjectProvider, QueryContext queryContext, CanInclude previousInclude, Include include, HashMapVirtualObject currentObject, QueryPart queryPart) throws QueryException, BimserverDatabaseException { super(queryContext, queryObjectProvider, queryPart); this.include = include; this.currentObject = currentObject; List<EReference> features = include.getFields(); List<EReference> featuresDirect = include.getFieldsDirect(); if ((features == null || features.isEmpty()) && (featuresDirect == null || featuresDirect.isEmpty())) { setDone(true); return; } if (features == null) { featureIterator = featuresDirect.iterator(); directFeatureSet = new HashSet<>(featuresDirect); } else if (featuresDirect == null) { featureIterator = features.iterator(); } else { featureIterator = Iterators.concat(features.iterator(), featuresDirect.iterator()); } if (include.getOutputTypes() != null) { this.outputFilterCids = new HashSet<>(); for (EClass eClass : include.getOutputTypes()) { short cid = queryObjectProvider.getDatabaseSession().getCidOfEClass(eClass); outputFilterCids.add(cid); } } }
Include geometryDataInclude = queryPart.createInclude(); try { geometryDataInclude.addType(GeometryPackage.eINSTANCE.getGeometryData(), false); geometryDataInclude.addFieldDirect("vertices");
if (inc.hasFields()) { for (EReference field : inc.getFields()) { if (ifcProduct.isSuperTypeOf((EClass)field.getEType()) || ((EClass)field.getEType()).isSuperTypeOf(ifcProduct)) { Include newInclude = inc.createInclude(); applyFields(geometryFields, new TypeDef(ifcProduct, true), newInclude);
public void addField(EReference field) throws QueryException { this.addField(field.getName()); }
public Include createDefine(String name) { Include include = new Include(packageMetaData); this.defines.put(name, include); return include; }
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); hasOpenings.addInclude(objectPlacement);