@Override public ObjectNode getQueryNode() { if (query.getOriginalJson() != null) { return query.getOriginalJson(); } return new JsonQueryObjectModelConverter(packageMetaData).toJson(query); }
private void processMappingQuery(final DatabaseSession databaseSession, QueryContext queryContext, GenerateGeometryResult generateGeometryResult, final StreamingSerializerPlugin ifcSerializerPlugin, final RenderEngineSettings settings, final RenderEngineFilter renderEngineFilter, RenderEnginePool renderEnginePool, ThreadPoolExecutor executor, EClass eClass, Query query, QueryPart queryPart, boolean geometryReused, Map<Long, ProductDef> map, int nrObjects) throws QueryException, IOException { JsonQueryObjectModelConverter jsonQueryObjectModelConverter = new JsonQueryObjectModelConverter(packageMetaData); queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":IfcAnnotationContainedInStructure", true)); } else { queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ContainedInStructure", true)); queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":IsTypedBy", true)); queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":Decomposes", true)); queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":OwnerHistory", true)); Include representationInclude = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":RepresentationSpecificMapping", true); queryPart.addInclude(representationInclude); Include objectPlacement = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ObjectPlacement", true); queryPart.addInclude(objectPlacement); if (packageMetaData.getEClass("IfcElement").isSuperTypeOf(eClass)) {
public static QueryObjectProvider fromJsonNode(DatabaseSession databaseSession, BimServer bimServer, JsonNode fullQuery, Set<Long> roids, PackageMetaData packageMetaData) throws JsonParseException, JsonMappingException, IOException, QueryException { if (fullQuery instanceof ObjectNode) { JsonQueryObjectModelConverter converter = new JsonQueryObjectModelConverter(packageMetaData); Query query = converter.parseJson("query", (ObjectNode) fullQuery); return new QueryObjectProvider(databaseSession, bimServer, query, roids, packageMetaData); } else { throw new QueryException("Query root must be of type object"); } }
private void processSubInclude(Query query, CanInclude parentInclude, JsonNode includeNode) throws QueryException { if (includeNode instanceof ObjectNode) { ObjectNode innerInclude = (ObjectNode)includeNode; parentInclude.addInclude(parseInclude(query, innerInclude, null, parentInclude)); } else if (includeNode.isTextual()) { String includeName = includeNode.asText(); if (includeName.contains(":")) { parentInclude.addIncludeReference(getDefineFromFile(includeName, true), includeName); } else { Include otherInclude = query.getDefine(includeName); if (otherInclude == null) { throw new QueryException("Cannot find define \"" + includeName + "\""); } parentInclude.addIncludeReference(otherInclude, includeName); } } else { throw new QueryException("\"include\" must be of type object or string"); } }
PackageMetaData packageMetaData = getBimServer().getMetaDataManager().getPackageMetaData(revision.getProject().getSchema()); lastPackageMetaData = packageMetaData; JsonQueryObjectModelConverter converter = new JsonQueryObjectModelConverter(packageMetaData); ObjectNode queryObject; try { queryObject = OBJECT_MAPPER.readValue(json, ObjectNode.class); converter.setCopyExternalDefines(true); Query query = converter.parseJson("query", (ObjectNode) queryObject);
if (objectNode.has("type")) { JsonNode typeNode = objectNode.get("type"); parseTypeNode(queryPart, -1, typeNode); for (int i=0; i<types.size(); i++) { JsonNode typeNode = types.get(i); parseTypeNode(queryPart, i, typeNode); if (propertiesNode instanceof ObjectNode) { ObjectNode properties = (ObjectNode) objectNode.get("properties"); parseProperties(queryPart, properties); } else { throw new QueryException("\"properties\" must be of type object"); InBoundingBox inBoundingBox = null; if (boundingBox.has("x") && boundingBox.has("y") && boundingBox.has("z") && boundingBox.has("width") && boundingBox.has("height") && boundingBox.has("depth")) { double x = checkFloat(boundingBox, "x"); double y = checkFloat(boundingBox, "y"); double z = checkFloat(boundingBox, "z"); double width = checkFloat(boundingBox, "width"); double height = checkFloat(boundingBox, "height"); double depth = checkFloat(boundingBox, "depth"); inBoundingBox = new InBoundingBox(x, y, z, width, height, depth); } else { processSubInclude(query, queryPart, includeNode); for (int i=0; i<includes.size(); i++) { JsonNode include = includes.get(i);
try { ObjectNode predefinedQuery = OBJECT_MAPPER.readValue(resource, ObjectNode.class); Query query = parseJson(namespaceString, predefinedQuery); Include define = query.getDefine(singleIncludeName); if (copyExternalDefines) {
JsonNode defines = fullQuery.get("defines"); if (defines instanceof ObjectNode) { parseDefines(query, (ObjectNode)fullQuery.get("defines")); } else { throw new QueryException("\"defines\" must be of type object"); parseJsonQuery(query, (ObjectNode)queries.get(i)); JsonNode queryNode = fullQuery.get("query"); if (queryNode instanceof ObjectNode) { parseJsonQuery(query, (ObjectNode) fullQuery.get("query")); } else { throw new QueryException("\"query\" must be of type object"); parseJsonQuery(query, fullQuery);
if (include.hasIncludes()) { for (Include nextInclude : include.getIncludes()) { includes.add(dumpInclude(nextInclude));
private void parseDefines(Query query, ObjectNode jsonNode) throws QueryException { Iterator<String> fieldNames = jsonNode.fieldNames(); // First pass, get all the name and create stub includes, using two passing to allow the usage of includes defined later in the structure while (fieldNames.hasNext()) { String fieldName = fieldNames.next(); JsonNode defineNode = jsonNode.get(fieldName); if (defineNode instanceof ObjectNode) { Include include = new Include(packageMetaData); query.addDefine(fieldName, include); } else { throw new QueryException("\"defines\"[" + fieldName + "] must be of type object"); } } // Second pass, actually construct the includes fieldNames = jsonNode.fieldNames(); while (fieldNames.hasNext()) { String fieldName = fieldNames.next(); JsonNode defineNode = jsonNode.get(fieldName); ObjectNode define = (ObjectNode)defineNode; parseInclude(query, define, query.getDefine(fieldName), null); } }
for (String key : defines.keySet()) { Include include = defines.get(key); definesNode.set(key, dumpInclude(include)); if (queryPart.hasIncludes()) { for (Include include : queryPart.getIncludes()) { ObjectNode includeNode = dumpInclude(include); includesNode.add(includeNode);
public long query(Query query, long roid, long serializerOid) throws ServerException, UserException, PublicInterfaceNotFoundException { ObjectNode queryNode = new JsonQueryObjectModelConverter(query.getPackageMetaData()).toJson(query); Long topicId = getServiceInterface().download(Collections.singleton(roid), queryNode.toString(), serializerOid, false); return topicId; }
private void processQuery(final DatabaseSession databaseSession, QueryContext queryContext, GenerateGeometryResult generateGeometryResult, final StreamingSerializerPlugin ifcSerializerPlugin, final RenderEngineSettings settings, final RenderEngineFilter renderEngineFilter, RenderEnginePool renderEnginePool, ThreadPoolExecutor executor, EClass eClass, Query query, QueryPart queryPart, boolean geometryReused, Map<Long, ProductDef> map, int nrObjects) throws QueryException, IOException { JsonQueryObjectModelConverter jsonQueryObjectModelConverter = new JsonQueryObjectModelConverter(packageMetaData); queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":IfcAnnotationContainedInStructure", true)); } else { queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ContainedInStructure", true)); queryPart.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":IsTypedBy", true)); Include representationInclude = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":Representation", true); Include objectPlacement = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ObjectPlacement", true); Include decomposes = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":Decomposes", true); Include ownerHistory = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":OwnerHistory", true); fillsInclude.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ContainedInStructure", true)); materialsInclude.addType(eClass, false); materialsInclude.addField("HasAssociations"); materialsInclude.addInclude(jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":IfcRelAssociatesMaterial", true));
Plugin plugin = getBimServer().getPluginManager().getPlugin(serializerPluginConfiguration.getPluginDescriptor().getPluginClassName(), true); JsonQueryObjectModelConverter converter = new JsonQueryObjectModelConverter(packageMetaData); ObjectNode queryObject = OBJECT_MAPPER.readValue(jsonQuery, ObjectNode.class); Query query = converter.parseJson("query", (ObjectNode) queryObject);
} else { ObjectNode json = new JsonQueryObjectModelConverter(packageMetaData).toJson(query); try { StringWriter stringWriter = new StringWriter();
try { PackageMetaData packageMetaData = getMetaDataManager().getPackageMetaData(schema); JsonQueryObjectModelConverter jsonQueryObjectModelConverter = new JsonQueryObjectModelConverter(packageMetaData); String queryNameSpace = schema + "-" + type; if (type.contentEquals("stdlib")) { Include objectPlacement = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ObjectPlacement", true);
public void queryNew(Query query, IfcModelChangeListener ifcModelChangeListener) { try { modelState = ModelState.LOADING; JsonQueryObjectModelConverter converter = new JsonQueryObjectModelConverter(getPackageMetaData()); Long topicId = bimServerClient.getServiceInterface().download(Collections.singleton(roid), converter.toJson(query).toString(), getJsonSerializerOid(), false); waitForDonePreparing(topicId); if (ifcModelChangeListener != null) { addChangeListener(ifcModelChangeListener); } processDownload(topicId); bimServerClient.getServiceInterface().cleanupLongAction(topicId); if (ifcModelChangeListener != null) { removeChangeListener(ifcModelChangeListener); } modelState = ModelState.NONE; } catch (Exception e) { LOGGER.error("", e); } }
JsonQueryObjectModelConverter jsonQueryObjectModelConverter = new JsonQueryObjectModelConverter(packageMetaData); String queryNameSpace = packageMetaData.getSchema().name().toLowerCase() + "-stdlib"; Include objectPlacement = jsonQueryObjectModelConverter.getDefineFromFile(queryNameSpace + ":ObjectPlacement", true);
private void loadDeep() throws ServerException, UserException, PublicInterfaceNotFoundException, QueryException { long start = System.nanoTime(); if (modelState != ModelState.FULLY_LOADED && modelState != ModelState.LOADING) { modelState = ModelState.LOADING; Query query = new Query("test", getPackageMetaData()); QueryPart queryPart = query.createQueryPart(); queryPart.setIncludeAllFields(true); ObjectNode queryNode = new JsonQueryObjectModelConverter(query.getPackageMetaData()).toJson(query); Long topicId = bimServerClient.getServiceInterface().download(Collections.singleton(roid), queryNode.toString(), getJsonSerializerOid(), false); waitForDonePreparing(topicId); try { processDownload(topicId); bimServerClient.getServiceInterface().cleanupLongAction(topicId); modelState = ModelState.FULLY_LOADED; buildIndex(); loadGeometry(); } catch (IfcModelInterfaceException | IOException e) { LOGGER.error("", e); } catch (QueryException e) { LOGGER.error("", e); } catch (GeometryException e) { LOGGER.error("", e); } } long end = System.nanoTime(); LOGGER.info((((end - start) / 1000000) + " ms")); }
@Override public IdEObject getByGuid(String guid) { IdEObject idEObject = super.getByGuid(guid); if (idEObject == null && !assumeCompletePreload) { try { modelState = ModelState.LOADING; Query query = new Query(getPackageMetaData()); QueryPart queryPart = query.createQueryPart(); queryPart.addGuid(guid); JsonQueryObjectModelConverter converter = new JsonQueryObjectModelConverter(getPackageMetaData()); long topicId = bimServerClient.getServiceInterface().download(Collections.singleton(roid), converter.toJson(query).toString(), getJsonSerializerOid(), false); waitForDonePreparing(topicId); processDownload(topicId); clientDebugInfo.incGuid(); bimServerClient.getServiceInterface().cleanupLongAction(topicId); modelState = ModelState.NONE; return super.getByGuid(guid); } catch (Exception e) { LOGGER.error("", e); } } return idEObject; }