protected QueryDescriptor makeEOSQLQueryDescriptor(ObjEntity root, Map plistMap) { SQLTemplateDescriptor descriptor = QueryDescriptor.sqlTemplateDescriptor(); descriptor.setRoot(root); Object fetchLimit = plistMap.get("fetchLimit"); if (fetchLimit != null) { try { if (fetchLimit instanceof Number) { descriptor.setProperty(QueryMetadata.FETCH_LIMIT_PROPERTY, String.valueOf(((Number) fetchLimit).intValue())); } else if (StringUtils.isNumeric(fetchLimit.toString())) { descriptor.setProperty(QueryMetadata.FETCH_LIMIT_PROPERTY, fetchLimit.toString()); } } catch (NumberFormatException nfex) { // ignoring... } } //query // TODO: doesn't work with Stored Procedures. Map hints = (Map) plistMap.get("hints"); if (hints != null && !hints.isEmpty()) { String sqlExpression = (String) hints.get("EOCustomQueryExpressionHintKey"); if (sqlExpression != null) { descriptor.setSql(sqlExpression); } } return descriptor; }
query.setSql(text); mediator.fireQueryEvent(new QueryEvent(this, query));
/** * Builds a Query object based on internal configuration information. */ public QueryDescriptor buildQueryDescriptor() { QueryDescriptor descriptor = QueryDescriptor.descriptor(queryType); descriptor.setName(name); descriptor.setDataMap(dataMap); descriptor.setRoot(getRoot()); descriptor.setProperties(properties); switch (queryType) { case QueryDescriptor.SELECT_QUERY: ((SelectQueryDescriptor) descriptor).setQualifier(qualifier); ((SelectQueryDescriptor) descriptor).setOrderings(orderings); ((SelectQueryDescriptor) descriptor).setPrefetches(prefetches); break; case QueryDescriptor.SQL_TEMPLATE: ((SQLTemplateDescriptor) descriptor).setSql(sql); ((SQLTemplateDescriptor) descriptor).setAdapterSql(adapterSql); break; case QueryDescriptor.EJBQL_QUERY: ((EJBQLQueryDescriptor) descriptor).setEjbql(ejbql); break; case QueryDescriptor.PROCEDURE_QUERY: ((ProcedureQueryDescriptor) descriptor).setResultEntityName(resultEntity); break; default: // no additional properties } return descriptor; }