public static Query all(PackageMetaData packageMetaData) { Query query = new Query(packageMetaData); QueryPart part = query.createQueryPart(); part.setIncludeAllFields(true); return query; }
ObjectNode predefinedQuery = OBJECT_MAPPER.readValue(resource, ObjectNode.class); Query query = parseJson(namespaceString, predefinedQuery); Include define = query.getDefine(singleIncludeName); if (copyExternalDefines) { define = define.copy(); throw new QueryException("Could not find '" + singleIncludeName + "' in defines in namespace " + query.getName());
public QueryStackFrame(QueryObjectProvider queryObjectProvider, QueryContext reusable) throws JsonParseException, JsonMappingException, IOException { this.queryObjectProvider = queryObjectProvider; this.reusable = reusable; Query query = queryObjectProvider.getQuery(); queryIterator = query.getQueryParts().iterator(); }
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); } }
private void loadGeometry() throws QueryException, ServerException, UserException, PublicInterfaceNotFoundException, IOException, GeometryException, IfcModelInterfaceException { if (includeGeometry) { Query query = new Query("test", getPackageMetaData()); ObjectNode settings = new ObjectMapper().createObjectNode(); query.setGeometrySettings(settings); query.getGeometrySettings().put("useSmallInts", false); query.getGeometrySettings().put("splitGeometry", false); QueryPart queryPart = query.createQueryPart();
public Query parseJson(String queryName, ObjectNode fullQuery) throws QueryException { Query query = new Query(queryName, packageMetaData); query.setOriginalJson(fullQuery); int version = LATEST_VERSION; if (fullQuery.has("version")) { throw new QueryException("Only version " + LATEST_VERSION + " supported by this version of BIMserver"); query.setVersion(version); query.setDoubleBuffer(fullQuery.has("doublebuffer") ? fullQuery.get("doublebuffer").asBoolean() : false); if (fullQuery.has("defines")) { JsonNode defines = fullQuery.get("defines"); query.setGeometrySettings((ObjectNode) fullQuery.get("loaderSettings"));
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")); }
if (query.isDoubleBuffer()) { Query newQuery = new Query(packageMetaData); QueryPart newQueryPart = newQuery.createQueryPart(); QueryObjectProvider queryObjectProvider = new QueryObjectProvider(databaseSession, getBimServer(), query, roids, packageMetaData); HashMapVirtualObject next = queryObjectProvider.next();
try { HashMapVirtualObject next = objectProvider.next(); Query query = new Query("Double buffer query " + eClass.getName(), this.streamingGeometryGenerator.packageMetaData); QueryPart queryPart = query.createQueryPart(); while (next != null) { long oid = next.getOid(); queryPart.addOid(oid); if (eClass.isSuperTypeOf(next.eClass())) { if (originalQuery.getQueryParts().get(0).getOids().contains(oid)) { job.addObject(next.getOid(), next.eClass().getName());
public ObjectNode toJson(Query query) { ObjectNode queryNode = OBJECT_MAPPER.createObjectNode(); Map<String, Include> defines = query.getDefines(); ObjectNode definesNode = OBJECT_MAPPER.createObjectNode(); queryNode.set("defines", definesNode); queryNode.put("doublebuffer", query.isDoubleBuffer()); for (String key : defines.keySet()) { Include include = defines.get(key); for (QueryPart queryPart : query.getQueryParts()) { ObjectNode queryPartNode = OBJECT_MAPPER.createObjectNode(); if (queryPart.hasTypes()) { if (query.getGeometrySettings() != null) { queryNode.set("loaderSettings", query.getGeometrySettings());
Database db = DatabaseBuilder.open(new File("access.mdb")); for (Query query : db.getQueries()) { System.out.println(query.getName() + ": " + query.toSQLString()); }
private void dumpEndQuery() { Iterator<StackFrame> iterator = stack.iterator(); int a = 0; LOGGER.info("Top 20 stack frames"); while (iterator.hasNext() && a < 20) { StackFrame next = iterator.next(); LOGGER.info("\t" + next.toString()); a++; } StackFrame poll = stack.poll(); int i=0; LOGGER.info("Last 50 frames"); if (poll != null) { LOGGER.info("Query dump"); while (poll != null && i < 50) { i++; LOGGER.info("\t" + poll.toString()); poll = stack.poll(); } } long end = System.nanoTime(); LOGGER.debug("Query " + query.getName() + ", " + reads + " reads, " + stackFramesProcessed + " stack frames processed, " + oidsRead.size() + " objects read, " + ((end - start) / 1000000) + "ms"); }
query.setGeometrySettings((ObjectNode)objectNode.get("loaderSettings")); query.addQueryPart(queryPart);
Query query = new Query(getPackageMetaData());
public QueryPart createQueryPart() { QueryPart queryPart = new QueryPart(packageMetaData); addQueryPart(queryPart); return queryPart; }
public HashMapVirtualObject getByOid(PackageMetaData packageMetaData, DatabaseSession databaseSession, long roid, long oid) throws JsonParseException, JsonMappingException, IOException, QueryException, BimserverDatabaseException { Query query = new Query("test", packageMetaData); QueryPart queryPart = query.createQueryPart(); queryPart.addOid(oid); QueryObjectProvider queryObjectProvider = new QueryObjectProvider(databaseSession, bimServer, query, Collections.singleton(roid), packageMetaData); HashMapVirtualObject first = queryObjectProvider.next(); return first; }
public QueryObjectProvider(DatabaseSession databaseSession, BimServer bimServer, Query query, Set<Long> roids, PackageMetaData packageMetaData) throws IOException, QueryException { this.databaseSession = databaseSession; this.bimServer = bimServer; this.query = query; this.roids = roids; this.packageMetaData = packageMetaData; stack = new ArrayDeque<StackFrame>(); stack.push(new StartFrame(this, roids)); for (QueryPart queryPart : query.getQueryParts()) { if (queryPart.hasOids()) { goingToRead.addAll(queryPart.getOids()); } } }
@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; }
@Override public void newObject(HashMapVirtualObject next) { if (eClass.isSuperTypeOf(next.eClass())) { if (next.eGet(GeometryRunner.this.streamingGeometryGenerator.representationFeature) != null) { if (originalQuery.getQueryParts().get(0).getOids().contains(next.getOid())) { objects.add(next); } } } } });
@Override public void execute(Transaction transaction) throws UserException, BimserverLockConflictException, BimserverDatabaseException, IOException, QueryException { PackageMetaData packageMetaData = transaction.getDatabaseSession().getMetaDataManager().getPackageMetaData(transaction.getProject().getSchema()); HashMapVirtualObject object = transaction.get(oid); if (object == null) { Query query = new Query(packageMetaData); QueryPart queryPart = query.createQueryPart(); queryPart.addOid(oid); QueryObjectProvider queryObjectProvider = new QueryObjectProvider(transaction.getDatabaseSession(), transaction.getBimServer(), query, Collections.singleton(transaction.getPreviousRevision().getOid()), packageMetaData); object = queryObjectProvider.next(); } if (object == null) { throw new UserException("Object with oid " + oid + " not found"); } if (!ChangeHelper.canBeChanged(eClass)) { throw new UserException("Only objects from the following schemas are allowed to be changed: Ifc2x3tc1 and IFC4, this object (" + eClass.getName() + ") is from the \"" + eClass.getEPackage().getName() + "\" package"); } transaction.deleted(object); } }