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);
}
}
}