@Override public ModelQueryExecutor newQueryExecutor(ModelExecutorContext context) { return new DefaultModelQueryExecutor(handleContext(context), queryExtension); }
protected void applyFilters(ModelExecutionContext context, CriteriaQuery query, Params params, QueryOptions options, Map<String, ModelAndMapping> jms, Map<String, Object> fields) { applyFilters(context, query, params, options, jms, fields, filterByParams); }
protected void applySelect(CriteriaQuery query, String select, String... requiredFields) { applySelect(query, select, true, requiredFields); }
ModelAndProp modelAndProp = lookupModelAndProp(jms, alias, name); if (null == modelAndProp.property) { continue; checkProperty(modelAndProp, name); applyFieldFilterIn(expr, alias, modelAndProp.field, a); } else { applyFieldFilter(expr, alias, modelAndProp.field, value, "="); ModelAndProp modelAndProp = lookupModelAndProp(jms, alias, name); checkProperty(modelAndProp, name); String sqlOperator = toSqlOperator(op); applyFieldFilterExpr(expr, alias, modelAndProp.field, valueExpr, sqlOperator); } else if (op == ScelToken.IN) { applyFieldFilterIn(expr, alias, modelAndProp.field, nodes[i].values()); } else { applyFieldFilter(expr, alias, modelAndProp.field, value, sqlOperator);
applyOrderBy(query, orderBy); ModelAndMapping joinedModel = lookupModelAndMapping(rp.getTargetEntityName()); if (null == joinedModel) { throw new BadRequestException("The joined model '" + rp.getTargetEntityName() + "' of relation '" + join.getRelation() + "' not found"); applySelectOrAggregates(query, options, joinedModels); applyFilters(context, query, options.getParams(), options, joinedModels, filters, filterByParams); expand(expand, list);
protected void expandByRestEmbedded(Expand expand, List<Record> records, RelationProperty rp, RelationMapping rm) { Set<Object> ids = new HashSet<>(); records.forEach(r -> calcIdsByEmbeddedField(ids, r, rm.getEmbeddedFileName())); if (ids.isEmpty()) { return; for (List<Object> partOfIds : split(ids, 50)) { String filter = idFieldName + " in (" + joinInIds(partOfIds) + ")"; QueryOptions options = new QueryOptions(); options.setFilters(filter);
@Override public QueryOneResult queryOne(Object id, QueryOptionsBase options) { if (remoteRest) { RestResource restResource = restResourceFactory.createResource(dao.getOrmContext(), em); Record record = restResource.find(id, options); return new QueryOneResult(record); } ModelExecutionContext context = new DefaultModelExecutionContext(this.context); if (null != ex.handler) { ex.handler.processQueryOneOptions(context, id, options); } Record record; CriteriaQuery<Record> query = createCriteriaQuery().whereById(id); applySelect(query, options, new HashMap<>()); ex.preQueryOne(context, id, query); if (null != ex.handler) { ex.handler.preQueryOne(context, id, query); } record = query.firstOrNull(); expandOne(record, options); if (null != ex.handler && null != record) { ex.handler.postQueryOne(context, id, record); } Object entity = ex.processQueryOneRecord(context, id, record); return new QueryOneResult(record, entity); }
@Override public QueryListResult count(CountOptions options, Consumer<CriteriaQuery> callback) { if (remoteRest) { RestResource restResource = restResourceFactory.createResource(dao.getOrmContext(), em); return new QueryListResult(null, restResource.count(options), null); } ModelExecutionContext context = new DefaultModelExecutionContext(this.context); CriteriaQuery<Record> query = createCriteriaQuery(); QueryOptions queryOptions = new QueryOptions(); queryOptions.setFilters(options.getFilters()); applyFilters(context, query, null, queryOptions, null, null); if (callback != null) { callback.accept(query); } long count = query.count(); return new QueryListResult(null, count, null); }
protected void expandByDbEmbedded(Expand expand, List<Record> records, RelationProperty rp, RelationMapping rm) { records.forEach(r -> calcIdsByEmbeddedField(ids, r, rm.getEmbeddedFileName())); if (ids.isEmpty()) { return; dao.createCriteriaQuery(targetEm).where(idFieldName + " in ?", ids); if (!Strings.isEmpty(expand.getSelect())) { applySelect(expandQuery, expand.getSelect(), false, idFieldName);
protected void expandByDb(Expand expand, List<Record> records, RelationProperty rp) { RelationMapping rm = em.getRelationMapping(rp.getRelationName()); if (rm.isEmbedded()) { expandByDbEmbedded(expand, records, rp, rm); return; applySelect(expandQuery, expand.getSelect(), Strings.format("_jt_.{0} as {1}", referredFieldName, referredFieldAlias)); } else { applySelect(expandQuery, expand.getSelect(), referredFieldName); referredFieldAlias = referredFieldName;
protected void applySelectOrAggregates(CriteriaQuery query, QueryOptions options, Map<String, ModelAndMapping> joins) { if (Strings.isEmpty(options.getAggregates()) && Strings.isEmpty(options.getGroupBy())) { applySelect(query, options, joins); return;
applySelect(expandQuery, expand.getSelect());