@Override public Table execute() throws MetaModelException { final MongoDbDataContext dataContext = getUpdateCallback() .getDataContext(); final Schema schema = dataContext.getDefaultSchema(); final MutableTable table = getTable(); if (table.getColumnByName("_id") == null) { // all mongo db collections have an _id field as the first field. ImmutableColumn idColumn = new ImmutableColumn("_id", ColumnType.ROWID, table, table.getColumnCount(), null, null, null, null, true, null, true); table.addColumn(idColumn); } table.setSchema(schema); getUpdateCallback().createCollection(table.getName()); dataContext.addTable(table); return table; } }
@Override protected Schema getMainSchema() throws MetaModelException { final MutableSchema schema = new MutableSchema("sample_schema"); final MutableTable table = new MutableTable("sample_table", TableType.TABLE, schema); schema.addTable(table); table.addColumn(new MutableColumn("foo", ColumnType.INTEGER, table, 0, true)); table.addColumn(new MutableColumn("bar", ColumnType.VARCHAR, table, 1, true)); return schema; }
public static Map<String, ?> getMappingSource(final MutableTable table) { if (table.getColumnByName(FIELD_ID) == null) { final MutableColumn idColumn = new MutableColumn(FIELD_ID, ColumnType.STRING).setTable(table).setPrimaryKey( true); table.addColumn(0, idColumn); } final Map<String, Map<String, String>> propertiesMap = new LinkedHashMap<>(); for (Column column : table.getColumns()) { final String columnName = column.getName(); if (FIELD_ID.equals(columnName)) { // do nothing - the ID is a client-side construct continue; } final String fieldName = getValidatedFieldName(columnName); final Map<String, String> propertyMap = new HashMap<>(); final String type = getType(column); propertyMap.put("type", type); propertiesMap.put(fieldName, propertyMap); } HashMap<String, Map<String, Map<String, String>>> docTypeMap = new HashMap<>(); docTypeMap.put("properties", propertiesMap); final Map<String, Map<String, Map<String, Map<String, String>>>> mapping = new HashMap<>(); mapping.put(table.getName(), docTypeMap); return mapping; }
@Override public OutputDataStreamBuilder withColumn(final String name, final ColumnType type) { final int columnNumber = _table.getColumnCount() + 1; final MutableColumn column = new MutableColumn(name, type, _table, columnNumber, true); _table.addColumn(column); return this; }
private void addColumnFromNonKeyAttribute(String indexName, MutableTable table, String attributeName) { MutableColumn column = (MutableColumn) table.getColumnByName(attributeName); if (column == null) { column = new MutableColumn(attributeName, table); table.addColumn(column); } appendRemarks(column, indexName + " non-key attribute"); }
private Column getTextContentColumn(MutableTable table, String preferredColumnName) { MutableColumn column = null; for (Column col : table.getColumns()) { 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; }
MutableTable tablesTable = new MutableTable("tables", TableType.TABLE, informationSchema); MutableTable columnsTable = new MutableTable("columns", TableType.TABLE, informationSchema); MutableTable relationshipsTable = new MutableTable("relationships", TableType.TABLE, informationSchema); informationSchema.addTable(tablesTable).addTable(columnsTable).addTable(relationshipsTable); tablesTable.addColumn(new MutableColumn("name", ColumnType.VARCHAR, tablesTable, 0, false)); tablesTable.addColumn(new MutableColumn("type", ColumnType.VARCHAR, tablesTable, 1, true)); tablesTable.addColumn(new MutableColumn("num_columns", ColumnType.INTEGER, tablesTable, 2, true)); tablesTable.addColumn(new MutableColumn("remarks", ColumnType.VARCHAR, tablesTable, 3, true)); columnsTable.addColumn(new MutableColumn("name", ColumnType.VARCHAR, columnsTable, 0, false)); columnsTable.addColumn(new MutableColumn("type", ColumnType.VARCHAR, columnsTable, 1, true)); columnsTable.addColumn(new MutableColumn("native_type", ColumnType.VARCHAR, columnsTable, 2, true)); columnsTable.addColumn(new MutableColumn("size", ColumnType.INTEGER, columnsTable, 3, true)); columnsTable.addColumn(new MutableColumn("nullable", ColumnType.BOOLEAN, columnsTable, 4, true)); columnsTable.addColumn(new MutableColumn("indexed", ColumnType.BOOLEAN, columnsTable, 5, true)); columnsTable.addColumn(new MutableColumn("table", ColumnType.VARCHAR, columnsTable, 6, false)); columnsTable.addColumn(new MutableColumn("remarks", ColumnType.VARCHAR, columnsTable, 7, true)); .addColumn(new MutableColumn("primary_table", ColumnType.VARCHAR, relationshipsTable, 0, false)); relationshipsTable .addColumn(new MutableColumn("primary_column", ColumnType.VARCHAR, relationshipsTable, 1, false)); relationshipsTable .addColumn(new MutableColumn("foreign_table", ColumnType.VARCHAR, relationshipsTable, 2, false)); relationshipsTable .addColumn(new MutableColumn("foreign_column", ColumnType.VARCHAR, relationshipsTable, 3, false)); MutableRelationship.createRelationship(tablesTable.getColumnByName("name"), columnsTable.getColumnByName("table"));
if (foreignTable.getPrimaryKeyRelationships().size() != 0) { Relationship[] foreignPrimaryRelationships = foreignTable.getPrimaryKeyRelationships().toArray(new Relationship[0]); 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>(primaryTable.getColumns()); List<Column> foreignColumns = new ArrayList<Column>(foreignTable.getColumns()); String primaryTableName = primaryTable.getName(); String foreignTableName = foreignTable.getName(); MutableColumn idColumn = getIdColumn(foreignTable); foreignColumns.remove(idColumn); Column[] foreignKeys = foreignTable.getForeignKeys().toArray(new Column[0]); for (Column foreignKey : foreignKeys) { foreignColumns.remove(foreignKey); primaryTable, primaryTable.getColumnCount(), foreignColumn.isNullable()); newPrimaryColumn.setIndexed(foreignColumn.isIndexed()); newPrimaryColumn.setNativeType(foreignColumn.getNativeType()); primaryTable.addColumn(newPrimaryColumn); MutableSchema mutableSchema = (MutableSchema) foreignTable.getSchema(); mutableSchema.removeTable(foreignTable);
if (table == null) { logger.info("Creating table: {}", tableName); table = new MutableTable(tableName, TableType.TABLE, _schema); _schema.addTable(table); idColumn = getIdColumn(table); 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); idColumn = getIdColumn(table); tableRows = _tableData.get(tableName); Column[] foreignKeys = table.getForeignKeys().toArray(new Column[0]); if (foreignKeys.length == 1) { foreignKeyColumn = (MutableColumn) foreignKeys[0]; 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); Object[] rowData = new Object[table.getColumnCount()];
@Override protected Schema getMainSchema() throws MetaModelException { final MutableSchema theSchema = new MutableSchema(getMainSchemaName()); for (final SimpleTableDef tableDef : tableDefs) { final MutableTable table = tableDef.toTable().setSchema(theSchema); final TableMetadata cassandraTable = cassandraCluster.getMetadata().getKeyspace(keySpaceName).getTable(table .getName()); if (cassandraTable != null) { final List<ColumnMetadata> primaryKeys = cassandraTable.getPrimaryKey(); for (ColumnMetadata primaryKey : primaryKeys) { final MutableColumn column = (MutableColumn) table.getColumnByName(primaryKey.getName()); if (column != null) { column.setPrimaryKey(true); } column.setNativeType(primaryKey.getType().getName().name()); } } theSchema.addTable(table); } return theSchema; }
@Override protected Schema getMainSchema() throws MetaModelException { final MutableSchema schema = new MutableSchema(getMainSchemaName()); for (XmlSaxTableDef tableDef : _tableDefs) { final String rowXpath = tableDef.getRowXpath(); final MutableTable table = new MutableTable(getTableName(tableDef)).setSchema(schema).setRemarks("XPath: " + rowXpath); final MutableColumn rowIndexColumn = new MutableColumn(COLUMN_NAME_ROW_ID, ColumnType.INTEGER) .setColumnNumber(0).setNullable(false).setTable(table).setRemarks("Row/tag index (0-based)"); table.addColumn(rowIndexColumn); for (String valueXpath : tableDef.getValueXpaths()) { final MutableColumn column = new MutableColumn(getName(tableDef, valueXpath)).setRemarks("XPath: " + valueXpath); if (valueXpath.startsWith("index(") && valueXpath.endsWith(")")) { column.setType(ColumnType.INTEGER); } else { column.setType(ColumnType.STRING); } column.setTable(table); table.addColumn(column); } schema.addTable(table); } return new ImmutableSchema(schema); }
@Override public ColumnCreationBuilder withColumn(String name) { logger.debug("withColumn({})", name); MutableColumn col = (MutableColumn) _table.getColumnByName(name); if (col == null) { col = new MutableColumn(name).setTable(_table).setColumnNumber(_table.getColumnCount()); _table.addColumn(col); } return new ColumnCreationBuilderImpl(this, col); }
MutableTable table = new MutableTable(tableName).setSchema(schema); schema.addTable(table); table.addColumn(column);
@Override public Table execute() { final ExcelUpdateCallback updateCallback = getUpdateCallback(); final MutableTable table = getTable(); final Sheet sheet = updateCallback.createSheet(table.getName()); final int lineNumber = updateCallback.getConfiguration().getColumnNameLineNumber(); if (lineNumber != ExcelConfiguration.NO_COLUMN_NAME_LINE) { final int zeroBasedLineNumber = lineNumber - 1; final Row row = sheet.createRow(zeroBasedLineNumber); for (final Column column : table.getColumns()) { final int columnNumber = column.getColumnNumber(); row.createCell(columnNumber).setCellValue(column.getName()); } } final MutableSchema schema = (MutableSchema) getSchema(); schema.addTable((MutableTable) table); return table; } }
/** * Adds a column to the current builder * * @param name * @return */ public CreateTableColumnBuilder withColumn(String name) { MutableColumn column = new MutableColumn(name); _table.addColumn(column); return new CreateTableColumnBuilder(this, column); }
public MutableTable(String name, Schema schema) { this(name); setSchema(schema); }
public CreateTable(Schema schema, String tableName) { _table = new MutableTable(tableName, TableType.TABLE, schema); }
@Override public Table execute() { final String sql = createSqlStatement(); logger.info("Create table statement created: {}", sql); final Connection connection = getUpdateCallback().getConnection(); Statement st = null; try { st = connection.createStatement(); final int rowsAffected = st.executeUpdate(sql); logger.debug("Create table statement executed, {} rows affected", rowsAffected); } catch (SQLException e) { throw JdbcUtils.wrapException(e, "execute create table statement: " + sql, JdbcActionType.UPDATE); } finally { FileHelper.safeClose(st); } final JdbcSchema schema = (JdbcSchema) getSchema(); schema.refreshTables(connection); return schema.getTableByName(getTable().getName()); }