GeometryType.java
package org.dbunit.ext.postgresql;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import org.dbunit.dataset.datatype.AbstractDataType;
import org.dbunit.dataset.datatype.TypeCastException;
public class GeometryType extends AbstractDataType {
public GeometryType() {
super("geometry", Types.OTHER, String.class, false);
}
public Object getSqlValue(int column, ResultSet resultSet)
throws SQLException, TypeCastException {
return resultSet.getString(column);
}
public void setSqlValue(Object geom, int column, PreparedStatement statement)
throws SQLException, TypeCastException {
statement.setObject(column,
getGeometry(geom, statement.getConnection()));
}
public Object typeCast(Object arg0) throws TypeCastException {
return arg0.toString();
}
private Object getGeometry(Object value, Connection connection)
throws TypeCastException {
Object tempgeom = null;
try {
Class aPGIntervalClass = super.loadClass("net.postgis.jdbc.PGgeometry",
connection);
Constructor ct = aPGIntervalClass
.getConstructor(new Class[] { String.class });
tempgeom = ct.newInstance(new Object[] { value });
} catch (ClassNotFoundException e) {
throw new TypeCastException(value, this, e);
} catch (InvocationTargetException e) {
throw new TypeCastException(value, this, e);
} catch (NoSuchMethodException e) {
throw new TypeCastException(value, this, e);
} catch (IllegalAccessException e) {
throw new TypeCastException(value, this, e);
} catch (InstantiationException e) {
throw new TypeCastException(value, this, e);
}
return tempgeom;
}
}