@Override public RelationQueryExecutor newRelationQueryExecutor(RelationExecutorContext context) { return new DefaultRelationQueryExecutor(handleContext(context), relationQueryExtension); } }
@Override public QueryListResult queryList(Object id, QueryOptions options) { RelationExecutionContext context = new DefaultRelationExecutionContext(DefaultRelationQueryExecutor.this.context); ex.preRelateQueryList(context, id, options); QueryListResult result; if (remoteRest) { result = queryListRemoteSource(id, options); }else if (rm.isEmbedded()) { result = queryListEmbedded(id, options); }else if (tem.isRemoteRest()) { result = queryListRemoteTarget(id, options); }else { result = iqe.queryListByRelation(id, options); } ex.postRelateQueryList(context, id, result.getList()); ex.completeRelateQueryList(context, id, result); return result; }
@Override public QueryOneResult queryOne(Object id, QueryOptionsBase options) { if (!rm.isManyToOne()) { throw new IllegalStateException("Relation '" + rm.getName() + "' must be " + RelationType.MANY_TO_ONE + "' for query one"); } RelationExecutionContext context = new DefaultRelationExecutionContext(DefaultRelationQueryExecutor.this.context); ex.preRelateQueryOne(context, id, options); Record record; if (remoteRest) { record = queryOneRemoteSource(id, options); }else if (tem.isRemoteRest()) { record = queryOneRemoteTarget(id, options); }else { record = iqe.queryOneByRelation(id, options); } ex.postRelateQueryOne(context, id, record); QueryOneResult result = new QueryOneResult(record); ex.completeRelateQueryOne(context, id, result); return result; }