public Include createDefine(String name) { Include include = new Include(packageMetaData); this.defines.put(name, include); return include; }
public Include createInclude() { Include include = new Include(packageMetaData); addInclude(include); return include; }
public Include createInclude() { Include include = new Include(packageMetaData); addInclude(include); return include; }
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 Include parseInclude(Query query, ObjectNode jsonNode, Include include, CanInclude parentInclude) throws QueryException { if (include == null) { include = new Include(packageMetaData);
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; } }
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; } }
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); } } }