public Include createInclude() { Include include = new Include(packageMetaData); addInclude(include); return include; }
public static Query all(PackageMetaData packageMetaData) { Query query = new Query(packageMetaData); QueryPart part = query.createQueryPart(); part.setIncludeAllFields(true); return query; }
@Override public ObjectNode getQueryNode() { if (query.getOriginalJson() != null) { return query.getOriginalJson(); } return new JsonQueryObjectModelConverter(packageMetaData).toJson(query); }
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)); } }
public boolean hasReadOrIsGoingToRead(EClass eClass) { for (QueryPart queryPart : query.getQueryParts()) { boolean allNull = queryPart.getGuids() == null && queryPart.getNames() == null && queryPart.getOids() == null && queryPart.getInBoundingBox() == null && queryPart.getProperties() == null && queryPart.getClassifications() == null; if (queryPart.hasTypes()) { if (typeDefContains(queryPart, eClass)) { if (allNull) { return true; } } } else { return allNull; } } return false; }
private QueryPart createFilteredQueryPart(QueryPart input) throws QueryException { QueryPart result = new QueryPart(input.getPackageMetaData()); for (TypeDef typeDef : input.getTypes()) { result.addType(typeDef); } for (Include include : input.getIncludes()) { createFilteredInclude(result, include); } return result; }
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; }
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"); } }
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); } }
private boolean typeDefContains(QueryPart queryPart, EClass eClass) { for (TypeDef typeDef : queryPart.getTypes()) { if (typeDef.geteClass() == eClass) { return true; } if (typeDef.isIncludeSubTypes()) { for (EClass subType : packageMetaData.getAllSubClasses(eClass)) { if (subType == eClass && !typeDef.excludes(subType)) { return true; } } } } return false; }
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); } }
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"); } }
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; }
public Include createInclude() { Include include = new Include(packageMetaData); addInclude(include); return include; }
public QueryPart createQueryPart() { QueryPart queryPart = new QueryPart(packageMetaData); addQueryPart(queryPart); return queryPart; }
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; }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("defines\n"); for (String define : defines.keySet()) { sb.append("\t" + define + "\n"); Include include = defines.get(define); include.dump(2, sb); } sb.append("queries\n"); for (QueryPart queryPart : queryParts) { queryPart.dump(2, sb); } return sb.toString(); }
public void dump(int indent, StringBuilder sb) { sb.append(indent(indent) + "x: " + x + ", y: " + y + ", z: " + z + ", width: " + width + ", height: " + height + ", depth: " + depth); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); dump(0, sb); return sb.toString(); } }