public static Table resolveTable(FromItem fromItem) { final Table table = fromItem.getTable(); return resolveUnderlyingTable(table); }
public static Table resolveTable(FromItem fromItem) { final Table table = fromItem.getTable(); return resolveUnderlyingTable(table); }
@Override public SatisfiedFromBuilder on(String left, String right) throws IllegalArgumentException { Table leftTable = leftItem.getTable(); if (leftTable == null) { throw new IllegalArgumentException("Left side of join is not a Table, cannot resolve ON item: '" + left + "'."); } Table rightTable = rightItem.getTable(); if (rightTable == null) { throw new IllegalArgumentException("Right side of join is not a Table, cannot resolve ON item: '" + right + "'."); } Column leftColumn = leftTable.getColumnByName(left); Column rightColumn = rightTable.getColumnByName(right); return on(leftColumn, rightColumn); }
@Override public SatisfiedFromBuilder on(String left, String right) throws IllegalArgumentException { Table leftTable = leftItem.getTable(); if (leftTable == null) { throw new IllegalArgumentException("Left side of join is not a Table, cannot resolve ON item: '" + left + "'."); } Table rightTable = rightItem.getTable(); if (rightTable == null) { throw new IllegalArgumentException("Right side of join is not a Table, cannot resolve ON item: '" + right + "'."); } Column leftColumn = leftTable.getColumnByName(left); Column rightColumn = rightTable.getColumnByName(right); return on(leftColumn, rightColumn); }
/** * Creates a SelectItem that references a column from a particular {@link FromItem}, for example a.price or p.age * * @param column * @param fromItem */ public SelectItem(Column column, FromItem fromItem) { this(null, column, fromItem); if (fromItem != null) { Table fromItemTable = fromItem.getTable(); if (fromItemTable != null && fromItemTable.getType() != TableType.ALIAS) { Table columnTable = column.getTable(); if (columnTable != null && !columnTable.equals(fromItemTable)) { throw new IllegalArgumentException("Column's table '" + columnTable.getName() + "' is not equal to referenced table: " + fromItemTable); } } } }
/** * Creates a SelectItem that references a column from a particular {@link FromItem}, for example a.price or p.age * * @param column * @param fromItem */ public SelectItem(Column column, FromItem fromItem) { this(null, column, fromItem); if (fromItem != null) { Table fromItemTable = fromItem.getTable(); if (fromItemTable != null && fromItemTable.getType() != TableType.ALIAS) { Table columnTable = column.getTable(); if (columnTable != null && !columnTable.equals(fromItemTable)) { throw new IllegalArgumentException("Column's table '" + columnTable.getName() + "' is not equal to referenced table: " + fromItemTable); } } } }
@Override protected String rewriteFromItem(Query query, FromItem item) { String result = super.rewriteFromItem(query, item); Table table = item.getTable(); if (table != null) { Schema schema = table.getSchema(); if (schema != null) { String schemaName = schema.getName(); if (schemaName != null) { result = result.replaceFirst(schemaName, '\"' + schema.getName() + '\"'); } } } return result; } }
@Override protected String rewriteFromItem(Query query, FromItem item) { String result = super.rewriteFromItem(query, item); Table table = item.getTable(); if (table != null) { Schema schema = table.getSchema(); if (schema != null) { String schemaName = schema.getName(); if (schemaName != null) { result = result.replaceFirst(schemaName, '\"' + schema.getName() + '\"'); } } } return result; } }
public static List<FromItem> getTableFromItems(FromItem item) { List<FromItem> result = new ArrayList<FromItem>(); if (item.getTable() != null) { result.add(item); } else if (item.getSubQuery() != null) { FromItem[] sqItems = getTableFromItems(item.getSubQuery()); for (int i = 0; i < sqItems.length; i++) { result.add(sqItems[i]); } } else if (item.getJoin() != null) { FromItem leftSide = item.getLeftSide(); result.addAll(getTableFromItems(leftSide)); FromItem rightSide = item.getRightSide(); result.addAll(getTableFromItems(rightSide)); } else { throw new IllegalStateException("FromItem was neither of Table type, SubQuery type or Join type: " + item); } return result; }
public static List<FromItem> getTableFromItems(FromItem item) { List<FromItem> result = new ArrayList<FromItem>(); if (item.getTable() != null) { result.add(item); } else if (item.getSubQuery() != null) { FromItem[] sqItems = getTableFromItems(item.getSubQuery()); for (int i = 0; i < sqItems.length; i++) { result.add(sqItems[i]); } } else if (item.getJoin() != null) { FromItem leftSide = item.getLeftSide(); result.addAll(getTableFromItems(leftSide)); FromItem rightSide = item.getRightSide(); result.addAll(getTableFromItems(rightSide)); } else { throw new IllegalStateException("FromItem was neither of Table type, SubQuery type or Join type: " + item); } return result; }
List<FromItem> tableFromItems = MetaModelHelper.getTableFromItems(item); for (FromItem fromItem : tableFromItems) { Table table = fromItem.getTable();
List<FromItem> tableFromItems = MetaModelHelper.getTableFromItems(item); for (FromItem fromItem : tableFromItems) { Table table = fromItem.getTable();
final Table table = item.getTable(); if (alias == null && table != null && reference.equals(table.getName())) { return item;
final Table table = item.getTable(); if (alias == null && table != null && reference.equals(table.getName())) { return item;
public Query selectAll(final FromItem fromItem) { if (fromItem.getTable() != null) { final List<Column> columns = fromItem.getTable().getColumns(); for (final Column column : columns) { select(column, fromItem); } } else if (fromItem.getJoin() != null) { selectAll(fromItem.getLeftSide()); selectAll(fromItem.getRightSide()); } else if (fromItem.getSubQuery() != null) { final List<SelectItem> items = fromItem.getSubQuery().getSelectClause().getItems(); for (final SelectItem subQuerySelectItem : items) { select(new SelectItem(subQuerySelectItem, fromItem)); } } else { throw new MetaModelException("All select items ('*') not determinable with from item: " + fromItem); } return this; }
public Query selectAll(final FromItem fromItem) { if (fromItem.getTable() != null) { final List<Column> columns = fromItem.getTable().getColumns(); for (final Column column : columns) { select(column, fromItem); } } else if (fromItem.getJoin() != null) { selectAll(fromItem.getLeftSide()); selectAll(fromItem.getRightSide()); } else if (fromItem.getSubQuery() != null) { final List<SelectItem> items = fromItem.getSubQuery().getSelectClause().getItems(); for (final SelectItem subQuerySelectItem : items) { select(new SelectItem(subQuerySelectItem, fromItem)); } } else { throw new MetaModelException("All select items ('*') not determinable with from item: " + fromItem); } return this; }
private Column findColumnInAliasedTable(Column column, FromItem fromItem, String aliasPart, String columnPart) { if (column != null) { // ensure that if the column has already been found, return it return column; } Table table = fromItem.getTable(); if (table != null) { String alias = fromItem.getAlias(); if (alias != null && alias.equals(aliasPart)) { column = table.getColumnByName(columnPart); } } else { FromItem leftSide = fromItem.getLeftSide(); column = findColumnInAliasedTable(column, leftSide, aliasPart, columnPart); FromItem rightSide = fromItem.getRightSide(); column = findColumnInAliasedTable(column, rightSide, aliasPart, columnPart); if (column != null) { Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { List<FromItem> items = subQuery.getFromClause().getItems(); for (FromItem subQueryFromItem : items) { column = findColumnInAliasedTable(column, subQueryFromItem, aliasPart, columnPart); } } } } return column; }
private Column findColumnInAliasedTable(Column column, FromItem fromItem, String aliasPart, String columnPart) { if (column != null) { // ensure that if the column has already been found, return it return column; } Table table = fromItem.getTable(); if (table != null) { String alias = fromItem.getAlias(); if (alias != null && alias.equals(aliasPart)) { column = table.getColumnByName(columnPart); } } else { FromItem leftSide = fromItem.getLeftSide(); column = findColumnInAliasedTable(column, leftSide, aliasPart, columnPart); FromItem rightSide = fromItem.getRightSide(); column = findColumnInAliasedTable(column, rightSide, aliasPart, columnPart); if (column != null) { Query subQuery = fromItem.getSubQuery(); if (subQuery != null) { List<FromItem> items = subQuery.getFromClause().getItems(); for (FromItem subQueryFromItem : items) { column = findColumnInAliasedTable(column, subQueryFromItem, aliasPart, columnPart); } } } } return column; }