public String generateForeignKeyAddStatement(ITable table) { try { List<IColumn> columnList = table.getColumnList(); List<IColumn> foreignKeys = new ArrayList<IColumn>(); for (IColumn column : columnList) { if (column.isForeignKey()) { foreignKeys.add(column); } } if (foreignKeys.size() > 0) { StringBuffer sb = new StringBuffer(); sb.append("ALTER TABLE "); // $NON-NLS-1$ sb.append(table.getQualifiedName()); sb.append("\n"); // $NON-NLS-1$ sb.append(" ADD FOREIGN KEY "); // $NON-NLS-1$ for (IColumn foreignKey : foreignKeys) { sb.append(" ("); // $NON-NLS-1$ sb.append(quoteIdentifier(table.getDatabaseInfo(), foreignKey.getName())); sb.append(")\n"); // $NON-NLS-1$ sb.append(" REFERENCES "); // $NON-NLS-1$ List<IForeignKeyReference> relationshipList = foreignKey.getForeignKeyReferenceList(); for (int i = 0; i < relationshipList.size(); i++) { IForeignKeyReference relationship = relationshipList.get(i); if (i == 0) { sb.append(relationship.getPrimaryKeyTable() + " ("); // $NON-NLS-1$ } sb.append(quoteIdentifier(table.getDatabaseInfo(), relationship.getPrimaryKeyColumn())); if ((relationshipList.size() > 1) && (i < relationshipList.size() - 1)) { sb.append(", "); // $NON-NLS-1$ } if (i == relationshipList.size() - 1) { sb.append(")"); // $NON-NLS-1$ } } } sb.append(";\n"); // $NON-NLS-1$ return sb.toString().trim(); } } catch (SQLException exc) { exc.printStackTrace(); } return null; }
public String generateTableCreateStatement(ITable table, boolean generateForeignKey) { try { List<IColumn> columnList = table.getColumnList(); StringBuffer tableCreateBuffer = new StringBuffer(); tableCreateBuffer.append("CREATE TABLE "); // $NON-NLS-1$ tableCreateBuffer.append(table.getQualifiedName()); tableCreateBuffer.append(" (\n"); // $NON-NLS-1$ List<IColumn> primaryKeys = new ArrayList<IColumn>(); List<IColumn> foreignKeys = new ArrayList<IColumn>(); for (IColumn column : columnList) { tableCreateBuffer.append( " " //$NON-NLS-1$ + quoteIdentifier(table.getDatabaseInfo(), column.getName()) + " "); //$NON-NLS-1$ tableCreateBuffer.append(column.getType().getName()); if (column.getSize() > 0) { tableCreateBuffer.append("(" + column.getSize() + ")"); // $NON-NLS-1$ //$NON-NLS-2$ } if (!column.isNullAllowed()) { tableCreateBuffer.append(" NOT NULL "); // $NON-NLS-1$ } if ((column.getDefaultValue() != null) && !column.getDefaultValue().trim().equals("")) { tableCreateBuffer.append(" DEFAULT " + column.getDefaultValue().trim()); // $NON-NLS-1$ } if (isAutoIncrementSupported(column)) { if (column.isAutoIncrement()) { tableCreateBuffer.append(" AUTO_INCREMENT "); // $NON-NLS-1$ } } // else if (isDefaultSupported(column)){ // // } if (column.isPrimaryKey()) { primaryKeys.add(column); } if (column.isForeignKey()) { foreignKeys.add(column); } if (columnList.indexOf(column) < (columnList.size() - 1)) { tableCreateBuffer.append(",\n"); // $NON-NLS-1$ } } if (primaryKeys.size() > 0) { tableCreateBuffer.append(",\n PRIMARY KEY ("); // $NON-NLS-1$ for (IColumn primaryKey : primaryKeys) { tableCreateBuffer.append(quoteIdentifier(table.getDatabaseInfo(), primaryKey.getName())); if (primaryKeys.indexOf(primaryKey) < (primaryKeys.size() - 1)) { tableCreateBuffer.append(","); // $NON-NLS-1$ } else { tableCreateBuffer.append(")\n"); // $NON-NLS-1$ } } } if (generateForeignKey) { if (foreignKeys.size() > 0) { tableCreateBuffer.append(",\n FOREIGN KEY "); // $NON-NLS-1$ for (IColumn foreignKey : foreignKeys) { tableCreateBuffer.append(" ("); // $NON-NLS-1$ tableCreateBuffer.append( quoteIdentifier(table.getDatabaseInfo(), foreignKey.getName())); tableCreateBuffer.append(") "); // $NON-NLS-1$ tableCreateBuffer.append(" REFRENCES "); // $NON-NLS-1$ List<IForeignKeyReference> relationshipList = foreignKey.getForeignKeyReferenceList(); for (int i = 0; i < relationshipList.size(); i++) { IForeignKeyReference relationship = relationshipList.get(i); if (i == 0) { tableCreateBuffer.append(relationship.getPrimaryKeyTable() + "("); // $NON-NLS-1$ } tableCreateBuffer.append( quoteIdentifier(table.getDatabaseInfo(), relationship.getPrimaryKeyColumn())); if ((relationshipList.size() > 1) && (i < relationshipList.size() - 1)) { tableCreateBuffer.append(", "); // $NON-NLS-1$ } if (i == relationshipList.size() - 1) { tableCreateBuffer.append(")"); // $NON-NLS-1$ } } } } } tableCreateBuffer.append("\n);\n"); // $NON-NLS-1$ return tableCreateBuffer.toString().trim(); } catch (SQLException exc) { exc.printStackTrace(); // ErrorManager.showException(exc); } return null; }