Package org.apache.metamodel.schema

Examples of org.apache.metamodel.schema.MutableTable


    @Override
    protected Schema getMainSchema() throws MetaModelException {
        final MutableSchema schema = new MutableSchema(SCHEMA_NAME);
        for (final SimpleTableDef tableDef : _tableDefs) {
            final MutableTable table = tableDef.toTable().setSchema(schema);
            CouchDbTableCreationBuilder.addMandatoryColumns(table);
            schema.addTable(table);
        }
        return schema;
    }
View Full Code Here


        super(updateCallback, schema, name);
    }

    @Override
    public Table execute() throws MetaModelException {
        MutableTable table = getTable();

        String name = table.getName();

        CouchDbInstance instance = getUpdateCallback().getDataContext().getCouchDbInstance();
        instance.createDatabase(name);

        addMandatoryColumns(table);

        MutableSchema schema = (MutableSchema) table.getSchema();
        schema.addTable(table);

        return table;
    }
View Full Code Here

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

        MutableTable table = getTable();
        String[] columnNames = table.getColumnNames();
        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

        for (Entry<String, String> entry : _tableNamesToInternalIds.entrySet()) {

            final String tableName = entry.getKey();
            final String relationshipId = entry.getValue();

            final MutableTable table = (MutableTable) schema.getTableByName(tableName);

            buildColumns(table, relationshipId, xssfReader);
        }
        return schema;
    }
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.VARCHAR, 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

    @Override
    protected Schema getMainSchema() throws MetaModelException {
        final String schemaName = getDefaultSchemaName();
        final MutableSchema schema = new MutableSchema(schemaName);
        final String tableName = _resource.getName();
        final MutableTable table = new MutableTable(tableName, TableType.TABLE, schema);
        schema.addTable(table);

        final FixedWidthReader reader = createReader();
        final String[] columnNames;
        try {
            if (_configuration.getColumnNameLineNumber() != FixedWidthConfiguration.NO_COLUMN_NAME_LINE) {
                for (int i = 1; i < _configuration.getColumnNameLineNumber(); i++) {
                    reader.readLine();
                }
                columnNames = reader.readLine();
            } else {
                columnNames = reader.readLine();
                if (columnNames != null) {
                    AlphabeticSequence sequence = new AlphabeticSequence();
                    for (int i = 0; i < columnNames.length; i++) {
                        columnNames[i] = sequence.next();
                    }
                }
            }
        } finally {
            FileHelper.safeClose(reader);
        }

        if (columnNames != null) {
            for (int i = 0; i < columnNames.length; i++) {
                final String columnName = columnNames[i];
                final MutableColumn column = new MutableColumn(columnName, ColumnType.VARCHAR, table, i, true);
                column.setColumnSize(_configuration.getValueWidth(i));
                table.addColumn(column);
            }
        }

        return schema;
    }
View Full Code Here

            }
        };

        assertFalse(executed.get().booleanValue());

        MutableTable likeTable = new MutableTable("blablablabla");
        likeTable.addColumn(new MutableColumn("foo", ColumnType.VARCHAR, likeTable, 0, 1234, "vch", true, null, false,
                null));
        likeTable.addColumn(new MutableColumn("bar"));
        likeTable.addColumn(new MutableColumn("baz"));

        builder.like(likeTable);
        Table table = builder.execute();

        assertTrue(executed.get().booleanValue());
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.setTable(table);
  }

  public void testRewriteFromItem() throws Exception {
    assertEquals("foo",
        qr.rewriteFromItem(new FromItem(new MutableTable("foo"))));
  }
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.