public boolean isReferenceClassLocked() { if (lockedExpressions == null) { return false; } // Normally the expressionBuilder is stored first but not necessarily // when a child ForUpdateOfClause is built for a nested query, or if a //user made this clause. for (int i = 0; i < lockedExpressions.size(); i++) { if (((Expression)lockedExpressions.elementAt(i)).isExpressionBuilder()) { return true; } } return false; }
public boolean isReferenceClassLocked() { if (this.lockedExpressions == null) { return false; } // Normally the expressionBuilder is stored first but not necessarily // when a child ForUpdateOfClause is built for a nested query, or if a //user made this clause. int size = this.lockedExpressions.size(); for (int i = 0; i < size; i++) { if (this.lockedExpressions.get(i).isExpressionBuilder()) { return true; } } return false; }
public boolean isReferenceClassLocked() { if (this.lockedExpressions == null) { return false; } // Normally the expressionBuilder is stored first but not necessarily // when a child ForUpdateOfClause is built for a nested query, or if a //user made this clause. int size = this.lockedExpressions.size(); for (int i = 0; i < size; i++) { if (this.lockedExpressions.get(i).isExpressionBuilder()) { return true; } } return false; }
/** * Iterate through a list of expressions searching for the given attribute name. * Return true if it is found, false otherwise. */ protected boolean isAttributeNameInJoinedExpressionList(String attributeName, List joinedExpressionList) { for (Iterator joinEnum = joinedExpressionList.iterator(); joinEnum.hasNext();) { QueryKeyExpression expression = (QueryKeyExpression)joinEnum.next(); while (!expression.getBaseExpression().isExpressionBuilder()) { expression = (QueryKeyExpression)expression.getBaseExpression(); } if (expression.getName().equals(attributeName)) { return true; } } return false; }
/** * Iterate through a list of expressions searching for the given attribute name. * Return true if it is found, false otherwise. */ protected boolean isAttributeNameInJoinedExpressionList(String attributeName, List joinedExpressionList) { for (Iterator joinEnum = joinedExpressionList.iterator(); joinEnum.hasNext();) { QueryKeyExpression expression = (QueryKeyExpression)joinEnum.next(); while (!expression.getBaseExpression().isExpressionBuilder()) { expression = (QueryKeyExpression)expression.getBaseExpression(); } if (expression.getName().equals(attributeName)) { return true; } } return false; }
/** * Iterate through a list of expressions searching for the given attribute name. * Return true if it is found, false otherwise. */ protected boolean isAttributeNameInJoinedExpressionList(String attributeName, List joinedExpressionList) { for (Iterator joinEnum = joinedExpressionList.iterator(); joinEnum.hasNext();) { QueryKeyExpression expression = (QueryKeyExpression)joinEnum.next(); while (!expression.getBaseExpression().isExpressionBuilder()) { expression = (QueryKeyExpression)expression.getBaseExpression(); } if (expression.getName().equals(attributeName)) { return true; } } return false; }
/** * INTERNAL: * Search the tree for any expressions (like SubSelectExpressions) that have been * built using a builder that is not attached to the query. This happens in case of an Exists * call using a new ExpressionBuilder(). This builder needs to be replaced with one from the query. */ public void resetPlaceHolderBuilder(ExpressionBuilder queryBuilder){ if(this.baseExpression.isExpressionBuilder() && ((ExpressionBuilder)this.baseExpression).wasQueryClassSetInternally()){ this.baseExpression = queryBuilder; if (this.builder != null){ this.builder = queryBuilder; } }else{ this.baseExpression.resetPlaceHolderBuilder(queryBuilder); } }
public void addJoinedAttributeExpression(Expression attributeExpression) { if(!getJoinedAttributeExpressions().contains(attributeExpression)) { if((attributeExpression instanceof BaseExpression)) { Expression baseExpression = ((BaseExpression)attributeExpression).getBaseExpression(); if(baseExpression != null && !baseExpression.isExpressionBuilder()) { addJoinedAttributeExpression(baseExpression); } } getJoinedAttributeExpressions().add(attributeExpression); } }
/** * INTERNAL: * Search the tree for any expressions (like SubSelectExpressions) that have been * built using a builder that is not attached to the query. This happens in case of an Exists * call using a new ExpressionBuilder(). This builder needs to be replaced with one from the query. */ @Override public void resetPlaceHolderBuilder(ExpressionBuilder queryBuilder){ if(this.baseExpression.isExpressionBuilder() && ((ExpressionBuilder)this.baseExpression).wasQueryClassSetInternally()){ this.baseExpression = queryBuilder; if (this.builder != null){ this.builder = queryBuilder; } }else{ this.baseExpression.resetPlaceHolderBuilder(queryBuilder); } }
/** * INTERNAL: * Search the tree for any expressions (like SubSelectExpressions) that have been * built using a builder that is not attached to the query. This happens in case of an Exists * call using a new ExpressionBuilder(). This builder needs to be replaced with one from the query. */ @Override public void resetPlaceHolderBuilder(ExpressionBuilder queryBuilder){ if(this.baseExpression.isExpressionBuilder() && ((ExpressionBuilder)this.baseExpression).wasQueryClassSetInternally()){ this.baseExpression = queryBuilder; if (this.builder != null){ this.builder = queryBuilder; } }else{ this.baseExpression.resetPlaceHolderBuilder(queryBuilder); } }
/** * INTERNAL: * Return if partial attribute. */ public boolean isPartialAttribute(String attributeName) { if (this.partialAttributeExpressions == null) { return false; } List<Expression> partialAttributeExpressions = getPartialAttributeExpressions(); int size = partialAttributeExpressions.size(); for (int index = 0; index < size; index++) { QueryKeyExpression expression = (QueryKeyExpression)partialAttributeExpressions.get(index); while (!expression.getBaseExpression().isExpressionBuilder()) { expression = (QueryKeyExpression)expression.getBaseExpression(); } if (expression.getName().equals(attributeName)) { return true; } } return false; }
/** * INTERNAL: * If there is root expression in the list then indicates whether it shouldUseOuterJoin, * otherwise return false. */ protected boolean hasRootExpressionThatShouldUseOuterJoin(List expressions) { for (Iterator expressionsEnum = expressions.iterator(); expressionsEnum.hasNext();) { Expression next = (Expression)expressionsEnum.next(); // The expressionBuilder can be one of the locked expressions in // the ForUpdateOfClause. if (!next.isQueryKeyExpression()) { continue; } QueryKeyExpression expression = (QueryKeyExpression)next; if (expression.getBaseExpression().isExpressionBuilder() && expression.getName().equals(getAttributeName())) { return expression.shouldUseOuterJoin(); } } return false; }
/** * INTERNAL: * Return if partial attribute. */ public boolean isPartialAttribute(String attributeName) { if (!hasPartialAttributeExpressions()) { return false; } List<Expression> partialAttributeExpressions = getPartialAttributeExpressions(); int size = partialAttributeExpressions.size(); for (int index = 0; index < size; index++) { QueryKeyExpression expression = (QueryKeyExpression)partialAttributeExpressions.get(index); while (!expression.getBaseExpression().isExpressionBuilder()) { expression = (QueryKeyExpression)expression.getBaseExpression(); } if (expression.getName().equals(attributeName)) { return true; } } return false; }
protected Expression resolveBaseExpression(Expression expression) { Expression baseExpression = ((BaseExpression)expression).getBaseExpression(); //filter out aggregate expressions between this and the next node. while (!baseExpression.isExpressionBuilder() && ((QueryKeyExpression)baseExpression).getMapping().isAggregateMapping()){ baseExpression = ((BaseExpression)baseExpression).getBaseExpression(); } return baseExpression; }
public void add(Expression expression) { if (!contains(expression)) { if (expression.isObjectExpression()) { Expression baseExpression = resolveBaseExpression(expression); if (baseExpression != null && !baseExpression.isExpressionBuilder()) { add(baseExpression); ExpressionNode baseNode = findExpressionNode(baseExpression); ExpressionNode node = new ExpressionNode(expression, indexOfExpression(expression)); baseNode.addChild(node); index.put(expression, node); } else { ExpressionNode node = new ExpressionNode(expression, indexOfExpression(expression)); roots.add(node); index.put(expression, node); } } else { ExpressionNode node = new ExpressionNode(expression, indexOfExpression(expression)); roots.add(node); index.put(expression, node); } } }
/** * INTERNAL: * Return the value for in memory comparison. * This is only valid for valueable expressions. */ public Object valueFromObject(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy, boolean isObjectUnregistered) { // Joins not supported. if (!getBaseExpression().isExpressionBuilder()) { throw QueryException.cannotConformExpression(); } // For bug 2780817 get the mapping directly from the object. In EJB 2.0 // inheritance, each child must override mappings defined in an abstract // class with its own. DatabaseMapping mapping = session.getDescriptor(object.getClass()).getObjectBuilder().getMappingForField(getField()); if (mapping == null) { throw QueryException.cannotConformExpression(); } return mapping.valueFromObject(object, getField(), session); }
/** * INTERNAL: * Return the value for in memory comparison. * This is only valid for valueable expressions. */ public Object valueFromObject(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy, boolean isObjectUnregistered) { // Joins not supported. if (!getBaseExpression().isExpressionBuilder()) { throw QueryException.cannotConformExpression(); } // For bug 2780817 get the mapping directly from the object. In EJB 2.0 // inheritance, each child must override mappings defined in an abstract // class with its own. DatabaseMapping mapping = session.getDescriptor(object.getClass()).getObjectBuilder().getMappingForField(getField()); if (mapping == null) { throw QueryException.cannotConformExpression(); } return mapping.valueFromObject(object, getField(), session); }
/** * INTERNAL: * Return the descriptor for the base expression. This is used in ReportItem when building the * return value (a class), as none of the expressions will have a session. */ public ClassDescriptor getContainingDescriptor(ObjectLevelReadQuery query) { AbstractSession session; Class queryClass = null; if (getBaseExpression().isExpressionBuilder()){ queryClass = ((ExpressionBuilder)getBaseExpression()).getQueryClass(); return query.getSession().getDescriptor(queryClass); } else { //it must be a QueryKeyExpression return query.getLeafDescriptorFor(getBaseExpression(), query.getDescriptor()); } }
/** * INTERNAL: * Return the descriptor for the base expression. This is used in ReportItem when building the * return value (a class), as none of the expressions will have a session. */ public ClassDescriptor getContainingDescriptor(ObjectLevelReadQuery query) { Class queryClass = null; if (getBaseExpression().isExpressionBuilder()){ queryClass = ((ExpressionBuilder)getBaseExpression()).getQueryClass(); return query.getSession().getDescriptor(queryClass); } else { // It must be a QueryKeyExpression. return getBaseExpression().getLeafDescriptor(query, query.getDescriptor(), query.getSession()); } }
/** * INTERNAL: * Return the descriptor for the base expression. This is used in ReportItem when building the * return value (a class), as none of the expressions will have a session. */ public ClassDescriptor getContainingDescriptor(ObjectLevelReadQuery query) { Class queryClass = null; if (getBaseExpression().isExpressionBuilder()){ queryClass = ((ExpressionBuilder)getBaseExpression()).getQueryClass(); return query.getSession().getDescriptor(queryClass); } else { // It must be a QueryKeyExpression. return getBaseExpression().getLeafDescriptor(query, query.getDescriptor(), query.getSession()); } }