Package org.apache.metamodel.query

Examples of org.apache.metamodel.query.FromItem


  public void testRewriteFromItem() throws Exception {
    PostgresqlQueryRewriter rewriter = new PostgresqlQueryRewriter(null);

    assertEquals("\"public\".foo",
        rewriter.rewriteFromItem(new FromItem(new MutableTable("foo").setSchema(new MutableSchema("public")))));
  }
View Full Code Here


        column.setQuote("\"");
        column.setTable(table);
    }

    public void testRewriteFromItem() throws Exception {
        assertEquals("foo", qr.rewriteFromItem(new FromItem(new MutableTable("foo"))));
    }
View Full Code Here

        StringBuilder sb = new StringBuilder();
        if (fromClause.getItemCount() > 0) {
            sb.append(AbstractQueryClause.PREFIX_FROM);
            List<FromItem> items = fromClause.getItems();
            for (int i = 0; i < items.size(); i++) {
                FromItem item = items.get(i);
                if (i != 0) {
                    sb.append(AbstractQueryClause.DELIM_COMMA);
                }
                sb.append(rewriteFromItem(query, item));
            }
View Full Code Here

            final Query innerQuery = query.clone();
            innerQuery.setFirstRow(null);
            innerQuery.setMaxRows(null);

            final Query outerQuery = new Query();
            final FromItem subQuerySelectItem = new FromItem(innerQuery).setAlias("metamodel_subquery");
            outerQuery.from(subQuerySelectItem);

            final List<SelectItem> innerSelectItems = innerQuery.getSelectClause().getItems();
            for (SelectItem selectItem : innerSelectItems) {
                outerQuery.select(new SelectItem(selectItem, subQuerySelectItem));
View Full Code Here

                selectItem.setAlias(alias);
            }

            _query.select(selectItem);
        } catch (MultipleSelectItemsParsedException e) {
            FromItem fromItem = e.getFromItem();
            if (fromItem != null) {
                _query.selectAll(fromItem);
            } else {
                throw e;
            }
View Full Code Here

        }

        int lastIndexOfDot = expression.lastIndexOf(".");

        String columnName = null;
        FromItem fromItem = null;

        if (lastIndexOfDot != -1) {
            String prefix = expression.substring(0, lastIndexOfDot);
            columnName = expression.substring(lastIndexOfDot + 1);
            fromItem = _query.getFromClause().getItemByReference(prefix);
        }

        if (fromItem == null) {
            if (_query.getFromClause().getItemCount() == 1) {
                fromItem = _query.getFromClause().getItem(0);
                columnName = expression;
            } else {
                fromItem = null;
                columnName = null;
            }
        }

        if (fromItem != null) {
            if ("*".equals(columnName)) {
                throw new MultipleSelectItemsParsedException(fromItem);
            } else if (fromItem.getTable() != null) {
                Column column = fromItem.getTable().getColumnByName(columnName);
                if (column != null) {
                    SelectItem selectItem = new SelectItem(function, column, fromItem);
                    return selectItem;
                }
            } else if (fromItem.getSubQuery() != null) {
                final Query subQuery = fromItem.getSubQuery();
                final SelectItem subQuerySelectItem = new SelectItemParser(subQuery, _allowExpressionBasedSelectItems).findSelectItem(columnName);
                if (subQuerySelectItem == null) {
                    return null;
                }
                return new SelectItem(subQuerySelectItem, fromItem);
View Full Code Here

        _query = query;
    }

    @Override
    public void parse(String delim, String itemToken) {
        final FromItem fromItem;

        final int parenthesisStart = itemToken.indexOf('(');
        if (parenthesisStart != -1) {
            if (parenthesisStart != 0) {
                throw new QueryParserException("Not capable of parsing FROM token: " + itemToken
                        + ". Expected parenthesis to start at first character.");
            }
            final int parenthesisEnd = itemToken.indexOf(')', parenthesisStart);
            if (parenthesisEnd == -1) {
                throw new QueryParserException("Not capable of parsing FROM token: " + itemToken
                        + ". Expected end parenthesis.");
            }

            final String subQueryString = itemToken.substring(parenthesisStart + 1, parenthesisEnd);
            logger.debug("Parsing sub-query: {}", subQueryString);

            final Query subQuery = new QueryParser(_dataContext, subQueryString).parse();
            fromItem = new FromItem(subQuery);

            final String alias = itemToken.substring(parenthesisEnd + 1).trim();
            if (!alias.isEmpty()) {
                fromItem.setAlias(alias);
            }
        } else if (itemToken.toUpperCase().indexOf(" JOIN ") != -1) {
            fromItem = parseJoinItem(itemToken);
        } else {
            fromItem = parseTableItem(itemToken);
View Full Code Here

        final Table table = _dataContext.getTableByQualifiedLabel(tokens[0]);
        if (table == null) {
            throw new QueryParserException("Not capable of parsing FROM token: " + itemToken);
        }

        final FromItem result = new FromItem(table);
        result.setAlias(alias);
        result.setQuery(_query);
        return result;
    }
View Full Code Here

            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();
View Full Code Here

        final int indexOfOn = secondPart.toUpperCase().indexOf(" ON ");

        // secondTableToken = "BAR b"
        final String secondTableToken = secondPart.substring(0, indexOfOn).trim();

        final FromItem leftSide = parseTableItem(firstTableToken);
        final FromItem rightSide = parseTableItem(secondTableToken);

        // onClausess = ["f.id = b.id"]
        final String[] onClauses = secondPart.substring(indexOfOn + " ON ".length()).split(" AND ");
        final SelectItem[] leftOn = new SelectItem[onClauses.length];
        final SelectItem[] rightOn = new SelectItem[onClauses.length];
        for (int i = 0; i < onClauses.length; i++) {
            final String onClause = onClauses[i];
            final int indexOfEquals = onClause.indexOf("=");
            // leftPart = "f.id"
            final String leftPart = onClause.substring(0, indexOfEquals).trim();
            // rightPart = "b.id"
            final String rightPart = onClause.substring(indexOfEquals + 1).trim();

            leftOn[i] = findSelectItem(leftPart, leftSide, rightSide);
            rightOn[i] = findSelectItem(rightPart, leftSide, rightSide);
        }

        final FromItem result = new FromItem(joinType, leftSide, rightSide, leftOn, rightOn);
        result.setQuery(_query);
        return result;
    }
View Full Code Here

TOP

Related Classes of org.apache.metamodel.query.FromItem

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.