public static String getDDLString(Schema schema, EnumSet<SchemaObjectType> types, String regexPattern) { DDLStringVisitor visitor = new DDLStringVisitor(types, regexPattern); visitor.visit(schema); return visitor.toString(); }
private void visit(Procedure procedure) { append(CREATE).append(SPACE); if (procedure.isVirtual()) { append(VIRTUAL); append(FOREIGN); append(SPACE).append(procedure.isFunction()?FUNCTION:PROCEDURE).append(SPACE).append(SQLStringVisitor.escapeSinglePart(procedure.getName())); append(LPAREN); append(COMMA).append(SPACE); visit(pp); append(RPAREN); append(SPACE).append(RETURNS); appendOptions(procedure.getResultSet()); append(SPACE).append(TABLE).append(SPACE); addColumns(procedure.getResultSet().getColumns(), true); String options = buildProcedureOptions(procedure); if (!options.isEmpty()) { append(NEWLINE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN); append(NEWLINE).append(SQLConstants.Reserved.AS).append(NEWLINE); String plan = procedure.getQueryPlan(); append(plan); append(SEMICOLON);
private void appendOptions(AbstractMetadataRecord record) { StringBuilder options = new StringBuilder(); addCommonOptions(options, record); buildOptions(record, options); if (options.length() != 0) { append(SPACE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN); } }
private void addConstraint(String defaultName, String type, KeyRecord constraint, boolean addOptions) { append(COMMA).append(NEWLINE).append(TAB); boolean nameMatches = defaultName.equals(constraint.getName()); if (!nameMatches) { append(CONSTRAINT).append(SPACE).append(SQLStringVisitor.escapeSinglePart(constraint.getName())).append(SPACE); } append(type); addColumns(constraint.getColumns(), false); if (addOptions) { appendOptions(constraint); } }
public static String getDomainDDLString(Database database) { DDLStringVisitor visitor = new DDLStringVisitor(null, null); for (Datatype dt : database.getMetadataStore().getDatatypes().values()) { if (dt.getType() != Datatype.Type.Domain) { continue; } visitor.visit(dt); visitor.append(SPACE); } return visitor.toString(); } }
private void buildContraints(Table table) { addConstraints(table.getAccessPatterns(), "AP", ACCESSPATTERN); //$NON-NLS-1$ KeyRecord pk = table.getPrimaryKey(); if (pk != null) { addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$ } addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE); addConstraints(table.getIndexes(), INDEX, INDEX); addConstraints(table.getFunctionBasedIndexes(), INDEX, INDEX); for (int i = 0; i < table.getForeignKeys().size(); i++) { ForeignKey key = table.getForeignKeys().get(i); addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$ append(SPACE).append(REFERENCES); if (key.getReferenceKey() != null) { if (key.getReferenceKey().getParent().getParent().equals(key.getParent().getParent())) { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getName())); } else { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getFullName())); } } else if (key.getReferenceTableName() != null) { append(SPACE).append(new GroupSymbol(key.getReferenceTableName())); } append(SPACE); addNames(key.getReferenceColumns()); appendOptions(key); } }
public String addTableBody(Table table) { String name = SQLStringVisitor.escapeSinglePart(table.getName()); append(name); if (table.getColumns() != null) { append(SPACE); append(LPAREN); boolean first = true; for (Column c:table.getColumns()) { if (first) { first = false; } else { append(COMMA); } visit(table, c); } buildContraints(table); append(NEWLINE); append(RPAREN); } // options String options = buildTableOptions(table); if (!options.isEmpty()) { append(SPACE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN); } return name; }
private void visit(FunctionMethod function) { append(CREATE).append(SPACE); if (function.getPushdown().equals(FunctionMethod.PushDown.MUST_PUSHDOWN)) { append(FOREIGN); append(VIRTUAL); append(SPACE).append(FUNCTION).append(SPACE).append(SQLStringVisitor.escapeSinglePart(function.getName())); append(LPAREN); append(COMMA).append(SPACE); visit(fp); append(RPAREN); append(SPACE).append(RETURNS); appendOptions(function.getOutputParameter()); append(SPACE); append(function.getOutputParameter().getType()); String options = buildFunctionOptions(function); if (!options.isEmpty()) { append(NEWLINE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN); append(SQLConstants.Tokens.SEMICOLON);
public void visit(Database database) { append(NEWLINE); append("/*").append(NEWLINE); append("###########################################").append(NEWLINE); append("# START DATABASE ").append(database.getName()).append(NEWLINE); append("###########################################").append(NEWLINE); append("*/").append(NEWLINE); append(CREATE).append(SPACE).append(DATABASE).append(SPACE) .append(SQLStringVisitor.escapeSinglePart(database.getName())).append(SPACE).append(VERSION) .append(SPACE).append(new Constant(database.getVersion())); appendOptions(database); append(SEMICOLON); append(NEWLINE); append(USE).append(SPACE).append(DATABASE).append(SPACE); append(SQLStringVisitor.escapeSinglePart(database.getName())).append(SPACE); append(VERSION).append(SPACE).append(new Constant(database.getVersion())); append(SEMICOLON); append(NEWLINE); append(NEWLINE); append("--############ Domains ############"); append(NEWLINE); visit(dt); append(NEWLINE); append(NEWLINE); append(NEWLINE); append("--############ Translators ############");
private void appendColumnOptions(BaseColumn column) { StringBuilder options = new StringBuilder(); addCommonOptions(options, column); if (!column.getDatatype().isBuiltin() && column.getDatatype().getType() != Datatype.Type.Domain) { //an enterprise type addOption(options, UDT, column.getDatatype().getName() + "("+column.getLength()+ ", " +column.getPrecision()+", " + column.getScale()+ ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } if (column.getDatatype().getRadix() != 0 && column.getRadix() != column.getDatatype().getRadix()) { addOption(options, RADIX, column.getRadix()); } buildColumnOptions(column, options); if (options.length() != 0) { append(SPACE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN); } }
private String buildProcedureOptions(Procedure procedure) { StringBuilder options = new StringBuilder(); addCommonOptions(options, procedure); if (procedure.getUpdateCount() != Procedure.AUTO_UPDATECOUNT) { addOption(options, UPDATECOUNT, procedure.getUpdateCount()); } if (!procedure.getProperties().isEmpty()) { for (String key:procedure.getProperties().keySet()) { addOption(options, key, procedure.getProperty(key, false)); } } return options.toString(); }
@Override public String getSchema(String vdbName, String vdbVersion, String modelName, EnumSet<SchemaObjectType> allowedTypes, String typeNamePattern) throws AdminException { if (vdbVersion == null) { vdbVersion = "1"; } VDBMetaData vdb = checkVDB(vdbName, vdbVersion); MetadataStore metadataStore = vdb.getAttachment(TransformationMetadata.class).getMetadataStore(); if (modelName != null) { Schema schema = metadataStore.getSchema(modelName); return DDLStringVisitor.getDDLString(schema, allowedTypes, typeNamePattern); } else { Database db = DatabaseUtil.convert(vdb, metadataStore); return DDLStringVisitor.getDDLString(db); } }
Column column = (Column)baseColumn; if (!column.isSelectable()) { addOption(options, SELECTABLE, column.isSelectable()); addOption(options, UPDATABLE, column.isUpdatable()); addOption(options, CURRENCY, column.isCurrency()); addOption(options, CASE_SENSITIVE, column.isCaseSensitive()); addOption(options, SIGNED, column.isSigned()); addOption(options, FIXED_LENGTH, column.isFixedLength()); addOption(options, CHAR_OCTET_LENGTH, column.getCharOctetLength()); addOption(options, SEARCHABLE, column.getSearchType().name()); addOption(options, MIN_VALUE, column.getMinimumValue()); addOption(options, MAX_VALUE, column.getMaximumValue()); addOption(options, NULL_VALUE_COUNT, column.getNullValues()); addOption(options, DISTINCT_VALUES, column.getDistinctValues()); addOption(options, NATIVE_TYPE, baseColumn.getNativeType()); buildOptions(baseColumn, options);
private void buildOptions(AbstractMetadataRecord record, StringBuilder options) { if (!record.getProperties().isEmpty()) { for (Map.Entry<String, String> entry:record.getProperties().entrySet()) { if (record instanceof Database && entry.getKey().equals("full-ddl")) { continue; } if (entry.getKey().equals(MetadataValidator.UNTYPED)) { continue; } addOption(options, entry.getKey(), entry.getValue()); } } }
private void addConstraints(List<KeyRecord> constraints, String defaultName, String type) { for (int i = 0; i < constraints.size(); i++) { KeyRecord constraint = constraints.get(i); addConstraint(defaultName + i, type, constraint, true); } }
public static String getDomainDDLString(Database database) { DDLStringVisitor visitor = new DDLStringVisitor(null, null); for (Datatype dt : database.getMetadataStore().getDatatypes().values()) { if (dt.getType() != Datatype.Type.Domain) { continue; } visitor.visit(dt); visitor.append(SPACE); } return visitor.toString(); } }
private void buildContraints(Table table) { addConstraints(table.getAccessPatterns(), "AP", ACCESSPATTERN); //$NON-NLS-1$ KeyRecord pk = table.getPrimaryKey(); if (pk != null) { addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$ } addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE); addConstraints(table.getIndexes(), INDEX, INDEX); addConstraints(table.getFunctionBasedIndexes(), INDEX, INDEX); for (int i = 0; i < table.getForeignKeys().size(); i++) { ForeignKey key = table.getForeignKeys().get(i); addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$ append(SPACE).append(REFERENCES); if (key.getReferenceKey() != null) { if (key.getReferenceKey().getParent().getParent().equals(key.getParent().getParent())) { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getName())); } else { append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getFullName())); } } else if (key.getReferenceTableName() != null) { append(SPACE).append(new GroupSymbol(key.getReferenceTableName())); } append(SPACE); addNames(key.getReferenceColumns()); appendOptions(key); } }
public String addTableBody(Table table) { String name = SQLStringVisitor.escapeSinglePart(table.getName()); append(name); if (table.getColumns() != null) { append(SPACE); append(LPAREN); boolean first = true; for (Column c:table.getColumns()) { if (first) { first = false; } else { append(COMMA); } visit(table, c); } buildContraints(table); append(NEWLINE); append(RPAREN); } // options String options = buildTableOptions(table); if (!options.isEmpty()) { append(SPACE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN); } return name; }