Package org.apache.metamodel.schema

Examples of org.apache.metamodel.schema.MutableColumn


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


        }
    }

    private Column getTextContentColumn(MutableTable table, String preferredColumnName) {
        Column[] columns = table.getColumns();
        MutableColumn column = null;
        for (Column col : columns) {
            if (NATIVE_TYPE_TEXT.equals(col.getNativeType())) {
                column = (MutableColumn) col;
                break;
            }
        }
        if (column == null && preferredColumnName != null) {
            logger.info("Creating text content column for table: " + table.getName());
            column = new MutableColumn(preferredColumnName + TEXT_CONTENT_TEMP_SUFFIX, ColumnType.STRING, table,
                    table.getColumnCount(), true);
            column.setNativeType(NATIVE_TYPE_TEXT);
            table.addColumn(column);
        }
        return column;
    }
View Full Code Here

        return column;
    }

    private MutableColumn getIdColumn(MutableTable table) {
        Column[] columns = table.getColumns();
        MutableColumn column = null;
        for (Column col : columns) {
            if (NATIVE_TYPE_PRIMARY_KEY.equals(col.getNativeType())) {
                column = (MutableColumn) col;
                break;
            }
        }
        if (column == null) {
            String tableName = table.getName();
            logger.info("Creating id column for table: " + tableName);
            column = new MutableColumn(tableName + "_metamodel_surrogate_id", ColumnType.INTEGER, table, table.getColumnCount(),
                    false);
            column.setNativeType(NATIVE_TYPE_PRIMARY_KEY);
            column.setIndexed(true);
            table.addColumn(column);
        }
        return column;
    }
View Full Code Here

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

    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

        assertEquals("SELECT TOP 20 MY_SCHEMA.\"foo\".\"bar\" FROM MY_SCHEMA.\"foo\"", qr.rewriteQuery(q));
    }

    public void testRewriteFilterItem() {

        MutableColumn timestampColumn = new MutableColumn("timestamp");
        timestampColumn.setType(ColumnType.TIMESTAMP);
        timestampColumn.setNativeType("DATETIME");
        Query q = new Query()
                .from(table)
                .select(column)
                .select(timestampColumn)
                .where(new FilterItem(new SelectItem(timestampColumn), OperatorType.LESS_THAN, TimeComparator
View Full Code Here

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());

        AbstractQueryRewriter rewriter = new DefaultQueryRewriter(null) {

View Full Code Here

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

    String queryString = new MysqlQueryRewriter(null).rewriteQuery(q);
    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

    protected void setUp() throws Exception {
        super.setUp();
        schema = new MutableSchema("sch");
        table = new MutableTable("foo").setSchema(schema);
        schema.addTable(table);
        col = new MutableColumn("bar").setTable(table);
        table.addColumn(col);
    }
View Full Code Here

TOP

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

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.