/** * 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; }