/** * Access the internal EclipseLink query wrapped within the JPA query. A EclipseLink * JPA created from JP QL only contains a ReadAllQuery if only a single entity * type is being returned. * * A ReadAllQuery is the super class of a ReportQuery so this method will * always work for either a ReportQuery or ReadAllQuery. */ public static ReadAllQuery getReadAllQuery(Query query) { DatabaseQuery dbQuery = getDatabaseQuery(query); if (dbQuery.isReadAllQuery()) { return (ReadAllQuery)dbQuery; } throw new IllegalArgumentException(ExceptionLocalization.buildMessage("jpa_helper_invalid_read_all_query" + query.getClass())); }
/** * INTERNAL: * Prepare the query from the prepared query. * This allows a dynamic query to prepare itself directly from a prepared query instance. * This is used in the JPQL parse cache to allow preparsed queries to be used to prepare * dynamic queries. * This only copies over properties that are configured through JPQL. */ @Override public void prepareFromQuery(DatabaseQuery query) { super.prepareFromQuery(query); if (query.isReadAllQuery()) { ReadAllQuery readQuery = (ReadAllQuery)query; this.containerPolicy = readQuery.containerPolicy; if (readQuery.hasHierarchicalExpressions()) { this.orderSiblingsByExpressions = readQuery.orderSiblingsByExpressions; this.connectByExpression = readQuery.connectByExpression; this.startWithExpression = readQuery.startWithExpression; } } }
/** * INTERNAL: * Prepare the query from the prepared query. * This allows a dynamic query to prepare itself directly from a prepared query instance. * This is used in the JPQL parse cache to allow preparsed queries to be used to prepare * dynamic queries. * This only copies over properties that are configured through JPQL. */ @Override public void prepareFromQuery(DatabaseQuery query) { super.prepareFromQuery(query); if (query.isReadAllQuery()) { ReadAllQuery readQuery = (ReadAllQuery)query; this.containerPolicy = readQuery.containerPolicy; if (readQuery.hasHierarchicalExpressions()) { this.orderSiblingsByExpressions = readQuery.orderSiblingsByExpressions; this.connectByExpression = readQuery.connectByExpression; this.startWithExpression = readQuery.startWithExpression; } } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { if (query.isReadAllQuery()) { Class collectionClass = null; if (valueToApply instanceof String) { collectionClass = loadClass((String)valueToApply, query, loader); } else { collectionClass = (Class)valueToApply; } ((ReadAllQuery)query).useCollectionClass(collectionClass); } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } return query; } }
/** * Prepare and validate. * Allow subclasses to override. */ public void prepare(DatabaseQuery query, AbstractSession session) throws QueryException { if (query.isReadAllQuery() && (!query.isReportQuery()) && query.shouldUseWrapperPolicy()) { setElementDescriptor(query.getDescriptor()); //make sure DataReadQuery points to this container policy } else if (query.isDataReadQuery()) { ((DataReadQuery)query).setContainerPolicy(this); } }
/** * Prepare and validate. * Allow subclasses to override. */ public void prepare(DatabaseQuery query, AbstractSession session) throws QueryException { if (query.isReadAllQuery() && (!query.isReportQuery()) && query.shouldUseWrapperPolicy()) { setElementDescriptor(query.getDescriptor()); //make sure DataReadQuery points to this container policy } else if (query.isDataReadQuery()) { ((DataReadQuery)query).setContainerPolicy(this); } }
/** * Prepare and validate. * Allow subclasses to override. */ public void prepare(DatabaseQuery query, AbstractSession session) throws QueryException { if (query.isReadAllQuery() && (!query.isReportQuery()) && query.shouldUseWrapperPolicy()) { setElementDescriptor(query.getDescriptor()); //make sure DataReadQuery points to this container policy } else if (query.isDataReadQuery()) { ((DataReadQuery)query).setContainerPolicy(this); } }
/** * INTERNAL: * Prepare the query from the prepared query. * This allows a dynamic query to prepare itself directly from a prepared query instance. * This is used in the JPQL parse cache to allow preparsed queries to be used to prepare * dynamic queries. * This only copies over properties that are configured through JPQL. */ public void prepareFromQuery(DatabaseQuery query) { super.prepareFromQuery(query); if (query.isReadAllQuery()) { ReadAllQuery readQuery = (ReadAllQuery)query; this.containerPolicy = readQuery.containerPolicy; if (readQuery.hasHierarchicalExpressions()) { this.orderSiblingsByExpressions = readQuery.getOrderSiblingsByExpressions(); this.connectByExpression = readQuery.getConnectByExpression(); this.startWithExpression = readQuery.getStartWithExpression(); } if (readQuery.hasBatchReadAttributes()) { this.batchReadAttributeExpressions = readQuery.batchReadAttributeExpressions; this.batchReadMappingQueries = readQuery.batchReadMappingQueries; this.batchReadAttributes = readQuery.batchReadAttributes; } } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { if (!((Boolean)valueToApply).booleanValue()) { if (query.isReadAllQuery()) { if (((ReadAllQuery) query).getContainerPolicy().isCursoredStreamPolicy()) { ((ReadAllQuery) query).setContainerPolicy(ContainerPolicy.buildDefaultPolicy()); } } else if (query.isDataReadQuery()) { if (((DataReadQuery) query).getContainerPolicy().isCursoredStreamPolicy()) { ((DataReadQuery) query).setContainerPolicy(ContainerPolicy.buildDefaultPolicy()); } } } else { if (query.isReadAllQuery()) { if (!((ReadAllQuery) query).getContainerPolicy().isCursoredStreamPolicy()) { ((ReadAllQuery) query).useCursoredStream(); } } else if (query.isDataReadQuery()) { if (!((DataReadQuery) query).getContainerPolicy().isCursoredStreamPolicy()) { ((DataReadQuery) query).useCursoredStream(); } } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } } return query; } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { if (!((Boolean)valueToApply).booleanValue()) { if (query.isReadAllQuery()) { if (((ReadAllQuery) query).getContainerPolicy().isScrollableCursorPolicy()) { ((ReadAllQuery) query).setContainerPolicy(ContainerPolicy.buildDefaultPolicy()); } } else if (query.isDataReadQuery()) { if (((DataReadQuery) query).getContainerPolicy().isScrollableCursorPolicy()) { ((DataReadQuery) query).setContainerPolicy(ContainerPolicy.buildDefaultPolicy()); } } } else { if (query.isReadAllQuery()) { if (!((ReadAllQuery) query).getContainerPolicy().isScrollableCursorPolicy()) { ((ReadAllQuery) query).useScrollableCursor(); } } else if (query.isDataReadQuery()) { if (!((DataReadQuery) query).getContainerPolicy().isScrollableCursorPolicy()) { ((DataReadQuery) query).useScrollableCursor(); } } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } } return query; } }
if (query.isReadAllQuery()) { Class containerClass = ((ReadAllQuery) query).getContainerPolicy().getContainerClass(); if (!Helper.classImplementsInterface(containerClass, ClassConstants.List_Class)) {
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { int value = (Integer)valueToApply; if (query.isReadAllQuery()) { if (!((ReadAllQuery) query).getContainerPolicy().isScrollableCursorPolicy()) { ((ReadAllQuery) query).useScrollableCursor(); } ((ScrollableCursorPolicy)((ReadAllQuery) query).getContainerPolicy()).setResultSetType(value); } else if (query.isDataReadQuery()) { if (!((DataReadQuery) query).getContainerPolicy().isScrollableCursorPolicy()) { ((DataReadQuery) query).useScrollableCursor(); } ((ScrollableCursorPolicy)((DataReadQuery) query).getContainerPolicy()).setResultSetType(value); } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } return query; } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { int value = (Integer)valueToApply; if (query.isReadAllQuery()) { if (!((ReadAllQuery) query).getContainerPolicy().isScrollableCursorPolicy()) { ((ReadAllQuery) query).useScrollableCursor(); } ((ScrollableCursorPolicy)((ReadAllQuery) query).getContainerPolicy()).setResultSetConcurrency(value); } else if (query.isDataReadQuery()) { if (!((DataReadQuery) query).getContainerPolicy().isScrollableCursorPolicy()) { ((DataReadQuery) query).useScrollableCursor(); } ((ScrollableCursorPolicy)((DataReadQuery) query).getContainerPolicy()).setResultSetConcurrency(value); } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } return query; } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { if (query.isReadAllQuery()) { if (!((ReadAllQuery) query).getContainerPolicy().isCursoredStreamPolicy()) { ((ReadAllQuery) query).useCursoredStream(); } ((CursoredStreamPolicy)((ReadAllQuery) query).getContainerPolicy()).setInitialReadSize(QueryHintsHandler.parseIntegerHint(valueToApply, QueryHints.CURSOR_INITIAL_SIZE)); } else if (query.isDataReadQuery()) { if (!((DataReadQuery) query).getContainerPolicy().isCursoredStreamPolicy()) { ((DataReadQuery) query).useCursoredStream(); } ((CursoredStreamPolicy)((DataReadQuery) query).getContainerPolicy()).setInitialReadSize(QueryHintsHandler.parseIntegerHint(valueToApply, QueryHints.CURSOR_INITIAL_SIZE)); } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } return query; } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { if (query.isReadAllQuery()) { if (!((ReadAllQuery) query).getContainerPolicy().isCursorPolicy()) { ((ReadAllQuery) query).useCursoredStream(); } ((CursorPolicy)((ReadAllQuery) query).getContainerPolicy()).setPageSize(QueryHintsHandler.parseIntegerHint(valueToApply, QueryHints.CURSOR_PAGE_SIZE)); } else if (query.isDataReadQuery()) { if (!((DataReadQuery) query).getContainerPolicy().isCursorPolicy()) { ((DataReadQuery) query).useCursoredStream(); } ((CursorPolicy)((DataReadQuery) query).getContainerPolicy()).setPageSize(QueryHintsHandler.parseIntegerHint(valueToApply, QueryHints.CURSOR_PAGE_SIZE)); } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } return query; } }
DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) { if (query.isReadAllQuery()) { if (!((ReadAllQuery) query).getContainerPolicy().isCursoredStreamPolicy()) { ((ReadAllQuery) query).useCursoredStream(); } ((CursoredStreamPolicy)((ReadAllQuery) query).getContainerPolicy()).setSizeQuery(new ValueReadQuery((String)valueToApply)); } else if (query.isDataReadQuery()) { if (!((DataReadQuery) query).getContainerPolicy().isCursoredStreamPolicy()) { ((DataReadQuery) query).useCursoredStream(); } ((CursoredStreamPolicy)((ReadAllQuery) query).getContainerPolicy()).setSizeQuery(new ValueReadQuery((String)valueToApply)); } else { throw new IllegalArgumentException(ExceptionLocalization.buildMessage("ejb30-wrong-type-for-query-hint",new Object[]{getQueryId(query), name, getPrintValue(valueToApply)})); } return query; } }
Expression indicatorExpression = null; if (this.query.isReadAllQuery() && policy.hasChildren() && !policy.hasMultipleTableChild()) { indicatorExpression = policy.getWithAllSubclassesExpression(); } else {
/** * Pre-build configure the SQL call. */ public void prepareCursorSelectAllRows() throws QueryException { getCall().returnCursor(); ContainerPolicy cp; DatabaseQuery query = getQuery(); if (query.isReadAllQuery()) { cp = ((ReadAllQuery)query).getContainerPolicy(); } else { cp = ((DataReadQuery)query).getContainerPolicy(); } if (cp.isScrollableCursorPolicy()) { ScrollableCursorPolicy scp = (ScrollableCursorPolicy)cp; DatabaseCall call = getDatabaseCall(); call.setIsResultSetScrollable(true); call.setResultSetType(scp.getResultSetType()); call.setResultSetConcurrency(scp.getResultSetConcurrency()); // Only set the fetch size to be the page size, if the fetch size was not set on the query. if (((ReadQuery)getQuery()).getFetchSize() == 0) { call.setResultSetFetchSize(scp.getPageSize()); } } if (getQuery().isReportQuery()){ prepareReportQueryItems(); } prepareCall(); }
/** * Pre-build configure the SQL call. */ public void prepareCursorSelectAllRows() throws QueryException { getCall().returnCursor(); ContainerPolicy cp; DatabaseQuery query = getQuery(); if (query.isReadAllQuery()) { cp = ((ReadAllQuery)query).getContainerPolicy(); } else { cp = ((DataReadQuery)query).getContainerPolicy(); } if (cp.isScrollableCursorPolicy()) { ScrollableCursorPolicy scp = (ScrollableCursorPolicy)cp; DatabaseCall call = getDatabaseCall(); call.setIsResultSetScrollable(true); call.setResultSetType(scp.getResultSetType()); call.setResultSetConcurrency(scp.getResultSetConcurrency()); // Only set the fetch size to be the page size, if the fetch size was not set on the query. if (((ReadQuery)getQuery()).getFetchSize() == 0) { call.setResultSetFetchSize(scp.getPageSize()); } } if (getQuery().isReportQuery()){ prepareReportQueryItems(); } prepareCall(); }
/** * Pre-build configure the SQL call. */ public void prepareCursorSelectAllRows() throws QueryException { getCall().returnCursor(); ContainerPolicy cp; DatabaseQuery query = getQuery(); if (query.isReadAllQuery()) { cp = ((ReadAllQuery)query).getContainerPolicy(); } else { cp = ((DataReadQuery)query).getContainerPolicy(); } if (cp.isScrollableCursorPolicy()) { ScrollableCursorPolicy scp = (ScrollableCursorPolicy)cp; DatabaseCall call = getDatabaseCall(); call.setIsResultSetScrollable(true); call.setResultSetType(scp.getResultSetType()); call.setResultSetConcurrency(scp.getResultSetConcurrency()); // Only set the fetch size to be the page size, if the fetch size was not set on the query. if (((ReadQuery)getQuery()).getFetchSize() == 0) { call.setResultSetFetchSize(scp.getPageSize()); } } if (getQuery().isReportQuery()){ prepareReportQueryItems(); } prepareCall(); }