@Override public void setRoot(Object value) { // allow null root... if (value == null) { this.root = value; } else { super.setRoot(value); } }
public Object readMap(AbstractHessianInput in) throws IOException { Object object = super.readMap(in); if (object instanceof AbstractQuery) { AbstractQuery abstractClientQuery = (AbstractQuery) object; Object root = abstractClientQuery.getRoot(); if (root instanceof Class) { ObjEntity entity = clientResolver.lookupObjEntity((Class) root); if (entity == null) { throw new CayenneRuntimeException("Unmapped client class: " + root); } abstractClientQuery.setRoot(entity.getName()); } } return object; } }
public String toString() { return new ToStringBuilder(this) .append("root", root) .append("name", getName()) .toString(); }
/** * Implements default routing mechanism relying on the EntityResolver to find DataMap * based on the query root. This mechanism should be sufficient for most queries that * "know" their root. * * @since 1.2 */ public void route(QueryRouter router, EntityResolver resolver, Query substitutedQuery) { DataMap map = getMetaData(resolver).getDataMap(); if (map == null) { throw new CayenneRuntimeException("No DataMap found, can't route query %s", this); } router.route(router.engineForDataMap(map), this, substitutedQuery); } }
/** * Routes itself and if there are any prefetches configured, creates * prefetch queries and routes them as well. * * @since 1.2 */ @Override public void route(QueryRouter router, EntityResolver resolver, Query substitutedQuery) { super.route(router, resolver, substitutedQuery); // suppress prefetches for paginated queries.. instead prefetches will // be resolved // per row... if (metaData.getPageSize() <= 0) { routePrefetches(router, resolver); } }
/** * Creates a Cayenne query out of EOFetchSpecification data. * * @since 1.1 */ protected Query makeQuery(EOModelHelper helper, EOObjEntity entity, String queryName) { DataMap dataMap = helper.getDataMap(); Map queryPlist = helper.queryPListMap(entity.getName(), queryName); if (queryPlist == null) { return null; } AbstractQuery query; if (queryPlist.containsKey("hints")) { // just a predefined SQL query query = new EOSQLQuery(entity, queryPlist); } else { query = new EOQuery(entity, queryPlist); } query.setName(entity.qualifiedQueryName(queryName)); dataMap.addQuery(query); return query; }
@Override public String toString() { return new ToStringBuilder(this) .append("root", root) .append("name", getName()) .toString(); }
/** * Implements default routing mechanism relying on the EntityResolver to find DataMap * based on the query root. This mechanism should be sufficient for most queries that * "know" their root. * * @since 1.2 */ public void route(QueryRouter router, EntityResolver resolver, Query substitutedQuery) { DataMap map = getMetaData(resolver).getDataMap(); if (map == null) { throw new CayenneRuntimeException("No DataMap found, can't route query " + this); } router.route(router.engineForDataMap(map), this, substitutedQuery); } }