/** * INTERNAL: * Clone the query. */ @Override public Object clone() { ReportQuery cloneQuery = (ReportQuery)super.clone(); cloneQuery.items = new ArrayList<ReportItem>(this.items.size()); for (ReportItem item : this.items) { ReportItem newItem = (ReportItem)item.clone(); if (item.getJoinedAttributeManagerInternal() != null){ JoinedAttributeManager manager = item.getJoinedAttributeManager().clone(); manager.setBaseQuery(cloneQuery); newItem.setJoinedAttributeManager(manager); } cloneQuery.addItem(newItem); } if (this.groupByExpressions != null) { cloneQuery.groupByExpressions = new ArrayList<Expression>(this.groupByExpressions); } return cloneQuery; }
/** * INTERNAL: * Clone the query. */ public Object clone() { ReportQuery cloneQuery = (ReportQuery)super.clone(); cloneQuery.items = new ArrayList<ReportItem>(this.items.size()); for (ReportItem item : this.items) { ReportItem newItem = (ReportItem)item.clone(); if (item.getJoinedAttributeManagerInternal() != null){ JoinedAttributeManager manager = (JoinedAttributeManager)item.getJoinedAttributeManager().clone(); manager.setBaseQuery(cloneQuery); newItem.setJoinedAttributeManager(manager); } cloneQuery.addItem(newItem); } if (this.groupByExpressions != null) { cloneQuery.groupByExpressions = new ArrayList<Expression>(this.groupByExpressions); } return cloneQuery; }
throw QueryException.noDescriptorForClassFromInheritancePolicy(query, concreteClass); ReadAllQuery concreteQuery = (ReadAllQuery)query.clone(); concreteQuery.setReferenceClass(concreteClass); concreteQuery.setDescriptor(concreteDescriptor);
/** * INTERNAL: * Clone the query. */ @Override public Object clone() { ReportQuery cloneQuery = (ReportQuery)super.clone(); cloneQuery.items = new ArrayList<ReportItem>(this.items.size()); for (ReportItem item : this.items) { ReportItem newItem = (ReportItem)item.clone(); if (item.getJoinedAttributeManagerInternal() != null){ JoinedAttributeManager manager = item.getJoinedAttributeManager().clone(); manager.setBaseQuery(cloneQuery); newItem.setJoinedAttributeManager(manager); } cloneQuery.addItem(newItem); } if (this.groupByExpressions != null) { cloneQuery.groupByExpressions = new ArrayList<Expression>(this.groupByExpressions); } return cloneQuery; }
/** * INTERNAL: * Select all rows from a abstract table descriptor. * This is accomplished by selecting for all of the concrete classes and then merging the rows. * This does not optimize using type select, as the type information is not known. * @return vector containing database rows. * @exception DatabaseException - an error has occurred on the database. */ protected Vector selectAllRowUsingCustomMultipleTableSubclassRead(ReadAllQuery query) throws DatabaseException { Vector rows = new Vector(); // CR#3701077, it must either have a filter only instances expression, or not have subclasses. // This method recurses, so even though this is only called when shouldReadSubclasses is true, it may be false for subclasses. if ((getOnlyInstancesExpression() != null) || (! shouldReadSubclasses())) { ReadAllQuery concreteQuery = (ReadAllQuery)query.clone(); concreteQuery.setReferenceClass(getDescriptor().getJavaClass()); concreteQuery.setDescriptor(getDescriptor()); Vector concreteRows = ((ExpressionQueryMechanism)concreteQuery.getQueryMechanism()).selectAllRowsFromConcreteTable(); rows = Helper.concatenateVectors(rows, concreteRows); } // Recursively collect all rows from all concrete children and their children. for (Enumeration childrenEnum = getChildDescriptors().elements(); childrenEnum.hasMoreElements();) { ClassDescriptor concreteDescriptor = (ClassDescriptor)childrenEnum.nextElement(); Vector concreteRows = concreteDescriptor.getInheritancePolicy().selectAllRowUsingCustomMultipleTableSubclassRead(query); rows = Helper.concatenateVectors(rows, concreteRows); } return rows; }
manager.setReadAllQuery((ReadAllQuery)getReadAllQuery().clone());
manager.setReadAllQuery((ReadAllQuery)getReadAllQuery().clone());
manager.setReadAllQuery((ReadAllQuery)getReadAllQuery().clone());
/** * INTERNAL: * Check to see if a custom query should be used for this query. * This is done before the query is copied and prepared/executed. * null means there is none. */ @Override protected DatabaseQuery checkForCustomQuery(AbstractSession session, AbstractRecord translationRow) { Boolean useCustomQuery = isCustomQueryUsed; checkDescriptor(session); // Check if user defined a custom query. if (useCustomQuery == null) { setIsCustomQueryUsed((!isUserDefined()) && isExpressionQuery() && (getSelectionCriteria() == null) && isDefaultPropertiesQuery() && (!hasOrderByExpressions()) && (this.descriptor.getQueryManager().hasReadAllQuery())); // Value of isCustomQueryUsed is updated by setIsCustomQueryUsed method. useCustomQuery = isCustomQueryUsed; } if (useCustomQuery != null && useCustomQuery.booleanValue()) { ReadAllQuery customQuery = this.descriptor.getQueryManager().getReadAllQuery(); if (this.accessors != null) { customQuery = (ReadAllQuery) customQuery.clone(); customQuery.setIsExecutionClone(true); customQuery.setAccessors(this.accessors); } isCustomQueryUsed = useCustomQuery; return customQuery; } isCustomQueryUsed = useCustomQuery; return null; }
setReadAllQuery((ReadAllQuery)parentQueryManager.getReadAllQuery().clone());
setReadAllQuery((ReadAllQuery)parentQueryManager.getReadAllQuery().clone());
setReadAllQuery((ReadAllQuery)parentQueryManager.getReadAllQuery().clone());