/* * Tries to determine whether the given column is an identity column. * * @param table The table * * @param column The column * * @return <code>true</code> if the column is an identity column */ protected boolean isAutoIncrement(Connection connection, Table table, Column column) throws SQLException { // TODO: For now, we only check whether there is a sequence & trigger as // generated by DdlUtils // But once sequence/trigger support is in place, it might be possible // to 'parse' the // trigger body (via SELECT trigger_name, trigger_body FROM // user_triggers) in order to // determine whether it fits our auto-increment definition PreparedStatement prepStmt = null; IDdlBuilder builder = getPlatform().getDdlBuilder(); String triggerName = builder.getConstraintName(OracleDdlBuilder.PREFIX_TRIGGER, table, column.getName(), null); String seqName = builder.getConstraintName(OracleDdlBuilder.PREFIX_SEQUENCE, table, column.getName(), null); if (!getPlatform().getDdlBuilder().isDelimitedIdentifierModeOn()) { triggerName = triggerName.toUpperCase(); seqName = seqName.toUpperCase(); } try { prepStmt = connection.prepareStatement("SELECT * FROM user_triggers WHERE trigger_name = ?"); prepStmt.setString(1, triggerName); ResultSet resultSet = prepStmt.executeQuery(); if (!resultSet.next()) { resultSet.close(); return false; } // we have a trigger, so lets check the sequence prepStmt.close(); prepStmt = connection.prepareStatement("SELECT * FROM user_sequences WHERE sequence_name = ?"); prepStmt.setString(1, seqName); resultSet = prepStmt.executeQuery(); boolean resultFound = resultSet.next(); resultSet.close(); return resultFound; } finally { if (prepStmt != null) { prepStmt.close(); } } }
private void alterCaseToMatchLogicalCase(Table table) { table.setName(table.getName().toUpperCase()); Column[] columns = table.getColumns(); for (Column column : columns) { column.setName(column.getName().toUpperCase()); } IIndex[] indexes = table.getIndices(); for (IIndex index : indexes) { index.setName(index.getName().toUpperCase()); IndexColumn[] indexColumns = index.getColumns(); for (IndexColumn indexColumn : indexColumns) { indexColumn.setName(indexColumn.getName().toUpperCase()); } } }
public static void write(Table table, Writer output) { try { output.write("\t<table name=\"" + StringEscapeUtils.escapeXml(table.getName()) + "\">\n"); for (Column column : table.getColumns()) { output.write("\t\t<column name=\"" + StringEscapeUtils.escapeXml(column.getName()) + "\""); if (column.isPrimaryKey()) { output.write(" primaryKey=\"" + column.isPrimaryKey() + "\""); } if (column.isRequired()) { output.write(" required=\"" + column.isRequired() + "\""); } if (column.getMappedType() != null) { output.write(" type=\"" + column.getMappedType() + "\""); } if (column.getSize() != null) { output.write(" size=\"" + column.getSize() + "\""); } if (column.getDefaultValue() != null) { output.write( " default=\"" + StringEscapeUtils.escapeXml(column.getDefaultValue()) + "\""); } if (column.isAutoIncrement()) { output.write(" autoIncrement=\"" + column.isAutoIncrement() + "\""); } if (column.getJavaName() != null) { output.write(" javaName=\"" + column.getJavaName() + "\""); } if (column.getPlatformColumns() != null && column.getPlatformColumns().size() > 0) { Collection<PlatformColumn> platformColumns = column.getPlatformColumns().values(); output.write(">\n"); for (PlatformColumn platformColumn : platformColumns) { output.write("\t\t\t<platform-column name=\"" + platformColumn.getName() + "\""); output.write(" type=\"" + platformColumn.getType() + "\""); if (platformColumn.getSize() > 0) { output.write(" size=\"" + platformColumn.getSize() + "\""); } if (platformColumn.getDecimalDigits() > 0) { output.write(" decimalDigits=\"" + platformColumn.getDecimalDigits() + "\""); } if (platformColumn.getDefaultValue() != null) { output.write( " default=\"" + StringEscapeUtils.escapeXml(platformColumn.getDefaultValue()) + "\""); } output.write("/>\n"); } output.write("\t\t</column>\n"); } else { output.write("/>\n"); } } for (ForeignKey fk : table.getForeignKeys()) { output.write( "\t\t<foreign-key name=\"" + StringEscapeUtils.escapeXml(fk.getName()) + "\" foreignTable=\"" + StringEscapeUtils.escapeXml(fk.getForeignTableName()) + "\">\n"); for (Reference ref : fk.getReferences()) { output.write( "\t\t\t<reference local=\"" + StringEscapeUtils.escapeXml(ref.getLocalColumnName()) + "\" foreign=\"" + StringEscapeUtils.escapeXml(ref.getForeignColumnName()) + "\"/>\n"); } output.write("\t\t</foreign-key>\n"); } for (IIndex index : table.getIndices()) { if (index.isUnique()) { output.write( "\t\t<unique name=\"" + StringEscapeUtils.escapeXml(index.getName()) + "\">\n"); for (IndexColumn column : index.getColumns()) { output.write( "\t\t\t<unique-column name=\"" + StringEscapeUtils.escapeXml(column.getName()) + "\"/>\n"); } output.write("\t\t</unique>\n"); } else { output.write( "\t\t<index name=\"" + StringEscapeUtils.escapeXml(index.getName()) + "\">\n"); for (IndexColumn column : index.getColumns()) { output.write( "\t\t\t<index-column name=\"" + StringEscapeUtils.escapeXml(column.getName()) + "\""); if (column.getSize() != null) { output.write(" size=\"" + column.getSize() + "\""); } output.write("/>\n"); } output.write("\t\t</index>\n"); } } output.write("\t</table>\n"); } catch (IOException e) { throw new IoException(e); } }