Package org.apache.metamodel.schema

Examples of org.apache.metamodel.schema.MutableTable


import org.apache.metamodel.schema.MutableTable;

public class PostgresqlQueryRewriterTest extends TestCase {

  public void testRewriteLimit() throws Exception {
    MutableTable table = new MutableTable("foo");
    table.setSchema(new MutableSchema("MY_SCHEMA"));
    table.setQuote("\"");
    MutableColumn column = new MutableColumn("bar");
    column.setQuote("\"");
    column.setTable(table);
    Query q = new Query().from(table).select(column).setMaxRows(25).setFirstRow(5);
    String queryString = new PostgresqlQueryRewriter(null).rewriteQuery(q);
View Full Code Here


  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

    @Override
    public Table execute() {
        CsvUpdateCallback csvUpdateCallback = getUpdateCallback();

        MutableTable table = getTable();
        String[] columnNames = table.getColumnNames();

        CsvDataContext csvDataContext = (CsvDataContext) csvUpdateCallback.getDataContext();

        if (csvDataContext.getConfiguration().getColumnNameLineNumber() != CsvConfiguration.NO_COLUMN_NAME_LINE) {
            csvUpdateCallback.writeRow(columnNames, false);
        }

        CsvSchema schema = (CsvSchema) table.getSchema();
        CsvTable csvTable = new CsvTable(schema, table.getName(), table.getColumnNames());
        schema.setTable(csvTable);
        return csvTable;
    }
View Full Code Here

        Attr[] attributes = getAttributes(element);
        String textContent = getTextContent(element);
        String tableName = tablePrefix + element.getNodeName();
        if (attributes.length > 0 || textContent != null || hasSiblings(element)) {
            // We need to represent this type of node with a table
            MutableTable table = (MutableTable) _schema.getTableByName(tableName);
            Column idColumn;
            MutableColumn foreignKeyColumn;
            List<Object[]> tableRows;
            if (table == null) {
                logger.info("Creating table: {}", tableName);
                table = new MutableTable(tableName, TableType.TABLE, _schema);
                _schema.addTable(table);
                idColumn = getIdColumn(table);
                tableRows = new ArrayList<Object[]>();
                _tableData.put(tableName, tableRows);

                if (parentKeyColumn != null) {
                    Table parentTable = parentKeyColumn.getTable();
                    foreignKeyColumn = new MutableColumn(parentTable.getName() + "_id", parentKeyColumn.getType(), table,
                            table.getColumnCount(), false);
                    foreignKeyColumn.setNativeType(NATIVE_TYPE_FOREIGN_KEY);
                    table.addColumn(foreignKeyColumn);

                    MutableRelationship.createRelationship(new Column[] { parentKeyColumn }, new Column[] { foreignKeyColumn });

                } else {
                    foreignKeyColumn = null;
                }
            } else {
                idColumn = getIdColumn(table);
                tableRows = _tableData.get(tableName);
                Column[] foreignKeys = table.getForeignKeys();
                if (foreignKeys.length == 1) {
                    foreignKeyColumn = (MutableColumn) foreignKeys[0];
                } else {
                    foreignKeyColumn = null;
                }
            }

            Column textContentColumn = getTextContentColumn(table, element.getNodeName());
            Map<Column, String> columnValues = new HashMap<Column, String>();
            for (Attr attr : attributes) {
                String name = attr.getName();
                MutableColumn column = (MutableColumn) table.getColumnByName(name);
                if (column == null) {
                    logger.info("Creating column: {}.{}", tableName, name);
                    column = new MutableColumn(name, ColumnType.STRING, table, table.getColumnCount(), true);
                    column.setNativeType(NATIVE_TYPE_ATTRIBUTE);
                    table.addColumn(column);
                }
                columnValues.put(column, attr.getValue());
            }

            // Create a row
            Object[] rowData = new Object[table.getColumnCount()];
            // Iterate id column
            int id = tableRows.size() + 1;
            rowData[idColumn.getColumnNumber()] = id;
            if (foreignKeyColumn != null) {
                rowData[foreignKeyColumn.getColumnNumber()] = parentKey;
View Full Code Here

    public static boolean isRootElement(Element element) {
        return !(element.getParentNode() instanceof Element);
    }

    public XmlDomDataContext flattenTables(Relationship relationship) {
        MutableTable primaryTable = (MutableTable) relationship.getPrimaryTable();
        MutableTable foreignTable = (MutableTable) relationship.getForeignTable();

        // Check that foreignTable is not primary table in other relationships
        // (if so we can't flatten as that would require id-rewriting of those
        // foreign tables as well)
        if (foreignTable.getPrimaryKeyRelationships().length != 0) {
            Relationship[] foreignPrimaryRelationships = foreignTable.getPrimaryKeyRelationships();
            String[] foreignPrimaryNames = new String[foreignPrimaryRelationships.length];
            for (int i = 0; i < foreignPrimaryRelationships.length; i++) {
                foreignPrimaryNames[i] = foreignPrimaryRelationships[i].getForeignTable().getName();
            }
            throw new UnsupportedOperationException("Cannot flatten foreign table '" + foreignTable.getName()
                    + "' as it acts as primary table for tables: " + Arrays.toString(foreignPrimaryNames));
        }

        List<Column> primaryColumns = new ArrayList<Column>(Arrays.asList(primaryTable.getColumns()));
        List<Column> foreignColumns = new ArrayList<Column>(Arrays.asList(foreignTable.getColumns()));

        // Remove the surrogate id
        String primaryTableName = primaryTable.getName();
        String foreignTableName = foreignTable.getName();
        MutableColumn idColumn = getIdColumn(foreignTable);
        foreignColumns.remove(idColumn);

        // Remove the foreign keys
        Column[] foreignKeys = foreignTable.getForeignKeys();
        for (Column foreignKey : foreignKeys) {
            foreignColumns.remove(foreignKey);
        }

        Query q = new Query();
        q.select(primaryColumns.toArray(new Column[primaryColumns.size()]));
        q.select(foreignColumns.toArray(new Column[foreignColumns.size()]));
        q.from(new FromItem(JoinType.LEFT, relationship));
        if (logger.isDebugEnabled()) {
            logger.debug("Setting table data for '{}' to query result: {}", primaryTableName, q.toString());
        }
        List<Object[]> tableRows = executeQuery(q).toObjectArrays();

        for (Column foreignColumn : foreignColumns) {
            MutableColumn newPrimaryColumn = new MutableColumn(foreignColumn.getName(), foreignColumn.getType(), primaryTable,
                    primaryTable.getColumnCount(), foreignColumn.isNullable());
            newPrimaryColumn.setIndexed(foreignColumn.isIndexed());
            newPrimaryColumn.setNativeType(foreignColumn.getNativeType());
            primaryTable.addColumn(newPrimaryColumn);
        }
        _tableData.put(primaryTableName, tableRows);

        MutableSchema mutableSchema = (MutableSchema) foreignTable.getSchema();
        mutableSchema.removeTable(foreignTable);

        _tableData.remove(foreignTableName);
        ((MutableRelationship) relationship).remove();
View Full Code Here

    private IQueryRewriter qr = new SQLServerQueryRewriter(null);

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        table = new MutableTable("foo");
        table.setSchema(new MutableSchema("MY_SCHEMA"));
        table.setQuote("\"");
        column = new MutableColumn("bar");
        column.setQuote("\"");
        column.setTable(table);
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

import org.apache.metamodel.schema.MutableTable;

public class AbstractQueryRewriterTest extends TestCase {

    public void testRewriteQuery() throws Exception {
        Query q = new Query().selectCount().from(new MutableTable("foobar"))
                .where(new MutableColumn("foob"), OperatorType.EQUALS_TO, null).groupBy(new MutableColumn("col1"))
                .having(new FilterItem(new SelectItem(new MutableColumn("col2")), OperatorType.GREATER_THAN, 40))
                .orderBy(new MutableColumn("bla"));
        assertEquals("SELECT COUNT(*) FROM foobar WHERE foob IS NULL GROUP BY col1 HAVING col2 > 40 ORDER BY bla ASC",
                q.toString());
View Full Code Here

import org.apache.metamodel.schema.MutableTable;

public class MysqlQueryRewriterTest extends TestCase {

  public void testRewriteLimit() throws Exception {
    Query q = new Query().from(new MutableTable("foo"))
        .select(new MutableColumn("bar")).setMaxRows(25).setFirstRow(6);
    String queryString = new MysqlQueryRewriter(null).rewriteQuery(q);
    assertEquals("SELECT bar FROM foo LIMIT 25 OFFSET 5", queryString);
  }
View Full Code Here

    assertEquals("SELECT bar FROM foo LIMIT 25 OFFSET 5", queryString);
  }

  public void testRewriteFilterOperandQuote() throws Exception {
    MutableColumn col = new MutableColumn("bar");
    Query q = new Query().from(new MutableTable("foo")).select(col)
        .where(col, OperatorType.EQUALS_TO, "M'jellow strain'ger");
    String queryString = new MysqlQueryRewriter(null).rewriteQuery(q);
    assertEquals("SELECT bar FROM foo WHERE bar = 'M\\'jellow strain\\'ger'",
        queryString);
  }
View Full Code Here

TOP

Related Classes of org.apache.metamodel.schema.MutableTable

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.