package com.bc.util.sql; import com.bc.util.geom.GeometryParser; import com.bc.util.geom.PointGeometry; import junit.framework.TestCase; import java.sql.Connection; import java.sql.SQLException; import java.text.ParseException; import java.util.HashMap; import java.util.List; import java.util.Map; /** * todo 1 ok/tb Eliminate database access in tests (as discussed on the phone) * This test depends on a special hsql-version that understands the datatype GEOMETRY * All tests have been deactivated... (olafk) * $Id: GeometryPersistenceTest.java,v 1.3 2007-11-20 16:20:50 tom Exp $ * Copyright by Brockmann Consult, 2004 */ public class GeometryPersistenceTest extends TestCase { private Connection connection; private GeometryParser wktParser; protected void setUp() throws Exception { wktParser = new GeometryParser(); // Class.forName("org.hsqldb.jdbcDriver"); // connection = DriverManager.getConnection("jdbc:hsqldb:.", "sa", ""); } protected void tearDown() throws Exception { // connection.close(); // connection = null; } public void testDummy() { } public final void dontTestThatGeometryIsInsertedCorrectly() throws SQLException, ParseException { final String tableName = "lwedkjfl"; PointGeometry p; UpdateTransaction ut; QueryForObjectTransaction qt; Map m = new HashMap(); ut = new UpdateTransaction("CREATE TABLE " + tableName + " (\n" + " Name VARCHAR,\n" + " ROI GEOMETRY\n" + ");"); ut.execute(connection); p = new PointGeometry(23, 54); m.put("name", "bimbo"); m.put("roi", p); ut = new UpdateTransaction("INSERT INTO " + tableName + " VALUES(" + " ${name}, " + " GeomFromText(${roi})" + ")", m); ut.execute(connection); qt = new QueryForObjectTransaction("SELECT " + "name as name, " + "roi as roi " + "FROM " + tableName + "", Map.class, null); qt.execute(connection); Map rm = (Map) qt.fetchResultObject(); assertEquals("bimbo", rm.get("name")); assertEquals("POINT(23 54)", rm.get("roi")); assertEquals(new PointGeometry(23, 54), wktParser.parseWKT((String) rm.get("roi"))); } public void dontTestContainsGeometry() throws SQLException, ParseException { final String tableName = "iuztiewrq"; UpdateTransaction ut; Map m = new HashMap(); ut = new UpdateTransaction("CREATE TABLE " + tableName + " (\n" + " Name VARCHAR,\n" + " ROI GEOMETRY\n" + ");"); ut.execute(connection); final String templateSql = "INSERT INTO " + tableName + " VALUES(" + " ${name}, " + " GeomFromText(${roi})" + ")"; m.put("name", "bimbo"); m.put("roi", new PointGeometry(3, 4)); ut = new UpdateTransaction(templateSql, m); ut.execute(connection); m.put("name", "bimbo2"); m.put("roi", wktParser.parseWKT("POLYGON((1 1,5 1,5 5,1 5,1 1))")); ut = new UpdateTransaction(templateSql, m); ut.execute(connection); final QueryForListTransaction ql = new QueryForListTransaction("SELECT " + "name as name, " + "ASTEXT(roi) as roi " + "FROM " + tableName + " " + "WHERE CONTAINS(roi, GeomFromText('POINT(2 4)')) = 1", Map.class, null); ql.execute(connection); final List list = ql.fetchResultList(); assertNotNull(list); assertEquals(1, list.size()); Map map = (Map) list.get(0); assertNotNull(map); assertEquals("bimbo2", map.get("name")); assertEquals("POLYGON((1 1,5 1,5 5,1 5,1 1))", map.get("roi")); } }