This should really be automagic but for now we'll have a manual migration.

git-svn-id: https://samskivert.googlecode.com/svn/trunk@2063 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
mdb
2007-02-28 00:25:43 +00:00
parent 10e97ffcb7
commit 7f34967737
@@ -108,8 +108,7 @@ public abstract class EntityMigration extends Modifier
}
}
protected void init (String tableName, HashMap<String,FieldMarshaller> marshallers)
{
protected void init (String tableName, HashMap<String,FieldMarshaller> marshallers) {
super.init(tableName, marshallers);
_newColumnDef = marshallers.get(_newColumnName).getColumnDefinition();
}
@@ -117,6 +116,35 @@ public abstract class EntityMigration extends Modifier
protected String _oldColumnName, _newColumnName, _newColumnDef;
}
/**
* A convenient migration for changing the type of an existing column.
*/
public static class Retype extends EntityMigration
{
public Retype (int targetVersion, String columnName) {
super(targetVersion);
_columnName = columnName;
}
public int invoke (Connection conn) throws SQLException {
Statement stmt = conn.createStatement();
try {
log.info("Updating type of '" + _columnName + "' in " + _tableName);
return stmt.executeUpdate("alter table " + _tableName + " change column " +
_columnName + " " + _newColumnDef);
} finally {
stmt.close();
}
}
protected void init (String tableName, HashMap<String,FieldMarshaller> marshallers) {
super.init(tableName, marshallers);
_newColumnDef = marshallers.get(_columnName).getColumnDefinition();
}
protected String _columnName, _newColumnDef;
}
/**
* If this method returns true, this migration will be run <b>before</b> the default
* migrations, if false it will be run after.