/** * Return the alias for our table */ protected DatabaseTable getAliasedTable() { DataExpression base = (DataExpression)getBaseExpression(); DatabaseTable alias = base.aliasForTable(getField().getTable()); if (alias == null) { return getField().getTable(); } else { return alias; } }
/** * PUBLIC: * Return an expression that wraps the inheritance type field in an expression. * <p>Example: * <pre><blockquote> * builder.getClassForInheritance().equal(SmallProject.class); * </blockquote></pre> */ @Override public Expression type() { return new ClassTypeExpression(this); }
/** * INTERNAL: * Alias the database field for our current environment */ protected void initializeAliasedField() { DatabaseField tempField = getField().clone(); DatabaseTable aliasedTable = getAliasedTable(); aliasedField = tempField; aliasedField.setTable(aliasedTable); }
public void validateNode() { ClassDescriptor descriptor = getContainingDescriptor(); if (descriptor ==null){ throw QueryException.invalidTypeExpression(getBaseExpression()); } if ( (!descriptor.hasInheritance()) || (!descriptor.getInheritancePolicy().hasClassIndicator()) ) { throw QueryException.invalidTypeExpression(descriptor.getJavaClassName()); } super.validateNode(); }
@Override public Expression rebuildOn(Expression newBase) { Expression newLocalBase = getBaseExpression().rebuildOn(newBase); Expression result = newLocalBase.type(); result.setSelectIfOrderedBy(selectIfOrderedBy()); return result; }
if ((!getBaseExpression().isExpressionBuilder()) && getBaseExpression().isQueryKeyExpression()) { object = getBaseExpression().valueFromObject(object, session, translationRow, valueHolderPolicy, isObjectUnregistered); comparisonVector.addElement(vectorObject); } else { Object valueOrValues = typeValueFromObject(vectorObject, session); return typeValueFromObject(object, session);
/** * INTERNAL: * Return all the fields */ public Vector getFields() { Vector result = new Vector(1); DatabaseField field = getField(); if (field != null) { result.addElement(field); } return result; }
/** * INTERNAL: * Like QueryKeyExpression, return the descriptor for the class type used, null if one can't be determined yet. * Should only be called when a session is already set. */ @Override public ClassDescriptor getContainingDescriptor() { return ((ObjectExpression)getBaseExpression()).getDescriptor(); }
/** * INTERNAL: */ public DatabaseField getField() { if (field == null) { ClassDescriptor descriptor = getContainingDescriptor(); if (!descriptor.hasInheritance() || descriptor.getInheritancePolicy().hasClassExtractor()){ throw QueryException.invalidTypeExpression(descriptor.getJavaClassName()); } field = descriptor.getInheritancePolicy().getClassIndicatorField(); } return field; }
/** * INTERNAL: * For CR#2456 if this is part of an objExp.equal(objExp), do not need to add * additional expressions to normalizer both times, and the foreign key join * replaces the equal expression. */ public Expression normalize(ExpressionNormalizer normalizer, Vector foreignKeyJoinPointer) { if (hasBeenNormalized()) { return this; } return super.normalize(normalizer); }
/** * INTERNAL: * Return the field appropriately aliased */ @Override public DatabaseField getAliasedField() { if (aliasedField == null) { initializeAliasedField(); } return aliasedField; }
/** * INTERNAL: * Used to print a debug form of the expression tree. */ public void writeDescriptionOn(BufferedWriter writer) throws IOException { writer.write("TYPE"); writer.write(tableAliasesDescription()); }
Object value = iterator.next(); if (!(value instanceof Expression)){ value = getFieldValue(value, session);
@Override public void validateNode() { ClassDescriptor descriptor = getContainingDescriptor(); if (descriptor ==null){ throw QueryException.invalidTypeExpression(getBaseExpression()); } if ( (!descriptor.hasInheritance()) || (!descriptor.getInheritancePolicy().hasClassIndicator()) ) { throw QueryException.invalidTypeExpression(descriptor.getJavaClassName()); } super.validateNode(); }
@Override public Expression rebuildOn(Expression newBase) { Expression newLocalBase = getBaseExpression().rebuildOn(newBase); Expression result = newLocalBase.type(); result.setSelectIfOrderedBy(selectIfOrderedBy()); return result; }
public Object valueFromObject(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy, boolean isObjectUnregistered) { if ((!getBaseExpression().isExpressionBuilder()) && getBaseExpression().isQueryKeyExpression()) { object = getBaseExpression().valueFromObject(object, session, translationRow, valueHolderPolicy, isObjectUnregistered); comparisonVector.addElement(null); } else { Object valueOrValues = typeValueFromObject(vectorObject, session); return typeValueFromObject(object, session);
/** * INTERNAL: * Return all the fields */ @Override public Vector getFields() { Vector result = new Vector(1); DatabaseField field = getField(); if (field != null) { result.addElement(field); } return result; }
/** * INTERNAL: * Like QueryKeyExpression, return the descriptor for the class type used, null if one can't be determined yet. * Should only be called when a session is already set. */ public ClassDescriptor getContainingDescriptor() { return ((ObjectExpression)getBaseExpression()).getDescriptor(); }
/** * INTERNAL: */ public DatabaseField getField() { if (field == null) { ClassDescriptor descriptor = getContainingDescriptor(); if (!descriptor.hasInheritance() || descriptor.getInheritancePolicy().hasClassExtractor()){ throw QueryException.invalidTypeExpression(descriptor.getJavaClassName()); } field = descriptor.getInheritancePolicy().getClassIndicatorField(); } return field; }
/** * INTERNAL: * For CR#2456 if this is part of an objExp.equal(objExp), do not need to add * additional expressions to normalizer both times, and the foreign key join * replaces the equal expression. */ public Expression normalize(ExpressionNormalizer normalizer, Vector foreignKeyJoinPointer) { if (hasBeenNormalized()) { return this; } return super.normalize(normalizer); }