@Override public void visit(ColumnReference obj) { this.onGoingExpression.push(obj.getMetadataObject()); }
@Override public void visit(ColumnReference obj) { buffer.append(SimpleDBMetadataProcessor.getQuotedName(obj.getMetadataObject())); this.previousColumn = obj.getMetadataObject(); }
private String getNameFromElement(ColumnReference e) { AbstractMetadataRecord mdObject = e.getMetadataObject(); if (mdObject == null) { return ""; //$NON-NLS-1$ } return mdObject.getSourceName(); }
protected boolean isMultiSelectColumn( Expression expression ) { boolean result = false; if (expression instanceof ColumnReference) { Column element = ((ColumnReference)expression).getMetadataObject(); String nativeType = element.getNativeType(); if (MULTIPICKLIST.equalsIgnoreCase(nativeType) || RESTRICTEDMULTISELECTPICKLIST.equalsIgnoreCase(nativeType)) { result = true; } } return result; }
/** * Helper method for getting runtime {@link org.teiid.connector.metadata.runtime.Element} from a * {@link org.teiid.language.DerivedColumn}. * @param symbol Input ISelectSymbol * @return Element returned metadata runtime Element */ private Column getElementFromSymbol(DerivedColumn symbol) { ColumnReference expr = (ColumnReference) symbol.getExpression(); return expr.getMetadataObject(); }
protected boolean isIdColumn( Expression expression ) { boolean result = false; if (expression instanceof ColumnReference) { Column element = ((ColumnReference)expression).getMetadataObject(); String nameInSource = element.getSourceName(); if (nameInSource.equalsIgnoreCase("id")) { //$NON-NLS-1$ result = true; } } return result; }
@Override public void visit(ColumnReference obj) { this.columns.add(obj.getMetadataObject()); super.visit(obj); }
@Override public void visit(ColumnReference obj) { this.filter.append(obj.getMetadataObject().getName()); }
void appendColumnReference(StringBuilder queryString, ColumnReference ref) { queryString.append(ref.getMetadataObject().getParent().getSourceName()); queryString.append('.'); queryString.append(ref.getMetadataObject().getSourceName()); }
@Override public List<?> translate(LanguageObject obj, ExecutionContext context) { if (obj instanceof ColumnReference) { ColumnReference elem = (ColumnReference)obj; if (elem.getType() == TypeFacility.RUNTIME_TYPES.BOOLEAN && elem.getMetadataObject() != null && TINYINT.equalsIgnoreCase(elem.getMetadataObject().getNativeType())) { return Arrays.asList("case when ", elem, " is null then null when ", elem, " = -1 or ", elem, " > 0 then 1 else 0 end"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } } return super.translate(obj, context); }
private boolean isFixedChar(Expression obj) { if (!isOracleSuppliedDriver() || !(obj instanceof ColumnReference)) { return false; } ColumnReference cr = (ColumnReference)obj; return (cr.getType() == TypeFacility.RUNTIME_TYPES.STRING || cr.getType() == TypeFacility.RUNTIME_TYPES.CHAR) && cr.getMetadataObject() != null && ("CHAR".equalsIgnoreCase(cr.getMetadataObject().getNativeType()) //$NON-NLS-1$ || "NCHAR".equalsIgnoreCase(cr.getMetadataObject().getNativeType())); //$NON-NLS-1$ }
private Object checkAndConvertToObjectId(Expression left, Expression right, Object rightValue) { if (left instanceof ColumnReference && right instanceof Literal) { String navtiveType = ((ColumnReference)left).getMetadataObject().getNativeType(); if (navtiveType != null && navtiveType.equals(ObjectId.class.getName())) { return new ObjectId((String)rightValue); } } return rightValue; }
@Override public void visit(SortSpecification obj) { if (this.orderBy.length() > 0) { this.orderBy.append(Tokens.COMMA); } ColumnReference column = (ColumnReference)obj.getExpression(); this.orderBy.append(column.getMetadataObject().getName()); // default is ascending if (obj.getOrdering() == Ordering.DESC) { this.orderBy.append(Tokens.SPACE).append(DESC.toLowerCase()); } }
@Override void appendColumnReference(StringBuilder queryString, ColumnReference ref) { if (isChildToParentJoin() && this.rightTableInJoin.equals(ref.getMetadataObject().getParent()) && this.parentName != null) { //TODO: a self join won't work with this logic queryString.append(parentName); queryString.append('.'); queryString.append(ref.getMetadataObject().getSourceName()); } else { super.appendColumnReference(queryString, ref); } }
public String getColumnName(ColumnReference obj) { String elemShortName = null; AbstractMetadataRecord elementID = obj.getMetadataObject(); if(elementID != null) { elemShortName = getRecordName(elementID); } else { elemShortName = obj.getName(); } return elemShortName; }
static String getLiteralQueryString(Expression lhs, Expression rhs) { Column mdIDElement = ((ColumnReference)lhs).getMetadataObject(); String expressionName = getLiteralString(mdIDElement, (Literal)rhs); expressionName = escapeReservedChars(expressionName); return expressionName; }
@Override public List<?> translate(Function function) { //if column and type is date, just use date format Expression ex = function.getParameters().get(0); String format = TIMESTAMP_FORMAT; if (ex instanceof ColumnReference && "date".equalsIgnoreCase(((ColumnReference)ex).getMetadataObject().getNativeType())) { //$NON-NLS-1$ format = DATETIME_FORMAT; } else if (!(ex instanceof Literal) && !(ex instanceof Function)) { //this isn't needed in every case, but it's simpler than inspecting the expression more ex = ConvertModifier.createConvertFunction(getLanguageFactory(), function.getParameters().get(0), TypeFacility.RUNTIME_NAMES.TIMESTAMP); } return Arrays.asList("to_char(", ex, ", '", format, "')"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } });
private String getParameterDataType(Expression expr) { Function f = (Function) expr; Expression param = f.getParameters().get(0); if (param instanceof ColumnReference) { return ((ColumnReference) param).getMetadataObject().getRuntimeType(); } else if (param instanceof Literal) { return DataTypeManager.getDataTypeName(((Literal) param).getType()); } return null; } }
@Override public List<?> translate(Function function) { Expression ex = function.getParameters().get(0); if (ex.getType() == TypeFacility.RUNTIME_TYPES.DATE || ex.getType() == TypeFacility.RUNTIME_TYPES.TIME || (ex instanceof ColumnReference && "date".equalsIgnoreCase(((ColumnReference)ex).getMetadataObject().getNativeType())) //$NON-NLS-1$ || (!(ex instanceof ColumnReference) && !(ex instanceof Literal) && !(ex instanceof Function))) { ex = ConvertModifier.createConvertFunction(getLanguageFactory(), function.getParameters().get(0), TypeFacility.RUNTIME_NAMES.TIMESTAMP); function.getParameters().set(0, ex); } return super.translate(function); } }
private ColumnReference createTempColumn(int i, Expression ex) { if (ex instanceof ColumnReference) { ColumnReference left = (ColumnReference)ex; return new ColumnReference(null, COL_PREFIX + i, left.getMetadataObject(), ex.getType()); } //just an expression - there's a lot of metadata lost here return new ColumnReference(null, COL_PREFIX + i, null, ex.getType()); }