From 3052e5d870a90ee5f3ea3d3dff887436d8ccdfea Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Fri, 23 Nov 2012 12:18:08 +0800 Subject: [PATCH] EOFM-207 and update geotools to 8.3.x --- xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml | 4 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java | 33 ++++++-- xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java | 1 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java | 20 +++- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java | 7 - xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java | 69 ++++++++++++----- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java | 75 ++++++++++++------ 7 files changed, 140 insertions(+), 69 deletions(-) diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java index 5a42da0..08afe39 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java @@ -129,6 +129,7 @@ } public boolean isChinese() { + if (raw.length < 31) return false; int isChinese = raw[30] & 0x0000ffff; return (isChinese == 0xfdff); diff --git a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml index 5fe5b95..d2a8428 100644 --- a/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml +++ b/xdgnjobs/ximple-jobcarrier/src/main/resources/quartz_jobs.xml @@ -78,8 +78,8 @@ </entry> <entry> <key>ORGSCHEMA</key> - <value>SPATIALDB</value> - <!--value>SPATIALDB, CMMS_SPATIALDB</value--> + <!--value>SPATIALDB</value--> + <value>SPATIALDB, CMMS_SPATIALDB</value> </entry> <entry> <key>CONVERTDB</key> diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java index 9bbc42a..65d59d8 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractDgnToPostGISJobContext.java @@ -8,16 +8,29 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryCollection; +import com.vividsolutions.jts.geom.LineString; import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.MultiPolygon; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; +import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; import com.ximple.eofms.util.FeatureTypeBuilderUtil; +import com.ximple.eofms.util.postjts.JtsBinaryWriter; import org.geotools.data.DataSourceException; import org.geotools.data.DataStore; import org.geotools.data.SchemaNotFoundException; import org.geotools.data.Transaction; import org.geotools.data.jdbc.JDBCUtils; -import org.geotools.data.postgis.PostGISDialect; import org.geotools.filter.LengthFunction; import org.geotools.jdbc.JDBCDataStore; import org.geotools.referencing.NamedIdentifier; @@ -35,21 +48,8 @@ import org.opengis.filter.expression.Literal; import org.opengis.referencing.crs.CoordinateReferenceSystem; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.GeometryCollection; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiLineString; -import com.vividsolutions.jts.geom.MultiPoint; -import com.vividsolutions.jts.geom.MultiPolygon; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; -import com.vividsolutions.jts.io.WKBWriter; -import com.vividsolutions.jts.io.WKTWriter; - -import com.ximple.eofms.jobs.context.AbstractDgnFileJobContext; -import com.ximple.eofms.util.postjts.JtsBinaryWriter; - public abstract class AbstractDgnToPostGISJobContext extends AbstractDgnFileJobContext { + private static Map<String, Class> GEOM_TYPE_MAP = new HashMap<String, Class>(); private static Map<String, Class> GEOM3D_TYPE_MAP = new HashMap<String, Class>(); @@ -194,7 +194,7 @@ JDBCUtils.close(stmt); } - protected void dropTable(Connection conn, String tableName) throws SQLException { + protected boolean dropTable(Connection conn, String tableName) throws SQLException { Statement stmt = conn.createStatement(); StringBuilder sb = new StringBuilder(); sb.append("DROP TABLE \""); @@ -203,24 +203,45 @@ sb.append(tableName); sb.append("\""); // sb.append(" CASCADE"); - stmt.execute(sb.toString()); - if (!conn.getAutoCommit()) - conn.commit(); - JDBCUtils.close(stmt); + + try { + stmt.execute(sb.toString()); + } catch (SQLException e) { + getLogger().warn("Execute-" + sb.toString()); + getLogger().warn(e.getMessage(), e); + return false; + } finally { + if (!conn.getAutoCommit()) + conn.commit(); + JDBCUtils.close(stmt); + } + + return true; } - protected void dropGeometryColumn(Connection conn, String tableName, String geomField) throws SQLException { + protected boolean dropGeometryColumn(Connection conn, String dbSchema, String tableName, String geomField) throws SQLException { Statement stmt = conn.createStatement(); StringBuilder sb = new StringBuilder(); - sb.append("SELECT \"public\".DropGeometryColumn('','"); + sb.append("SELECT \"public\".DropGeometryColumn('"); + sb.append(dbSchema); + sb.append("','"); sb.append(tableName); sb.append("','"); sb.append(geomField); sb.append("')"); - stmt.execute(sb.toString()); - if (!conn.getAutoCommit()) - conn.commit(); - JDBCUtils.close(stmt); + try { + stmt.execute(sb.toString()); + } catch (SQLException e) { + getLogger().warn("Execute-" + sb.toString()); + getLogger().warn(e.getMessage(), e); + return false; + } finally { + if (!conn.getAutoCommit()) + conn.commit(); + JDBCUtils.close(stmt); + } + + return true; } protected String dropGeometryColumn(String dbSchema, String tableName, String geomField) { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java index 9f78c89..fec33b4 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java @@ -190,7 +190,7 @@ conn.commit(); } - protected void dropTable(Connection conn, String schemaName, String tableName) throws SQLException { + protected boolean dropTable(Connection conn, String schemaName, String tableName) throws SQLException { Statement stmt = conn.createStatement(); StringBuilder sb = new StringBuilder(); sb.append("DROP TABLE \""); @@ -199,12 +199,20 @@ sb.append(tableName); sb.append("\""); // sb.append(" CASCADE"); - stmt.execute(sb.toString()); - stmt.close(); - conn.commit(); + try { + stmt.execute(sb.toString()); + } catch (SQLException e) { + getLogger().warn("Execute-" + sb.toString()); + getLogger().warn(e.getMessage(), e); + return false; + } finally { + stmt.close(); + conn.commit(); + } + return true; } - protected void dropGeometryColumn(Connection conn, String dbSchema, String tableName, String geomField) throws SQLException { + protected boolean dropGeometryColumn(Connection conn, String dbSchema, String tableName, String geomField) throws SQLException { Statement stmt = conn.createStatement(); StringBuilder sb = new StringBuilder(); sb.append("SELECT \"public\".DropGeometryColumn('"); @@ -214,9 +222,18 @@ sb.append("','"); sb.append(geomField); sb.append("')"); - stmt.execute(sb.toString()); - stmt.close(); - conn.commit(); + + try { + stmt.execute(sb.toString()); + } catch (SQLException e) { + getLogger().warn("Execute-" + sb.toString()); + getLogger().warn(e.getMessage(), e); + return false; + } finally { + stmt.close(); + conn.commit(); + } + return true; } protected String dropGeometryColumn(String dbSchema, String tableName, String geomField) { diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java index 9c2d2ef..d1ab3cc 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/GeneralDgnConvertPostGISJobContext.java @@ -533,31 +533,35 @@ SimpleFeatureType featureType = featureTypes.get(featureTypeName); String featureName = featureType.getName().getLocalPart(); + String currentSQL = null; if (isExistFeature(featureType)) { try { conn = getConnection(); if (dropTableMode) { - dropGeometryColumn(conn, featureName, + dropGeometryColumn(conn, featureName, getTargetSchema(), (featureType).getGeometryDescriptor().getLocalName()); dropTable(conn, featureName); ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } } else { deleteTable(conn, featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); if (isProfileMode()) accumulateUpdateTime(); } } else { @@ -569,14 +573,16 @@ stmt.execute(stmtText); JDBCUtils.close(stmt); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); if (isProfileMode()) accumulateUpdateTime(); } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java index 605bfea..484ee30 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/IndexDgnConvertPostGISJobContext.java @@ -311,13 +311,14 @@ Connection conn = null; SimpleFeatureTypeBuilder typeBuilder1 = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); featureType1 = typeBuilder1.buildFeatureType(); + String currentSQL = null; if (isExistFeature(featureType1)) { try { conn = getConnection(); if (dropTableMode) { try { - dropGeometryColumn(conn, featureName, + dropGeometryColumn(conn, getTargetSchema(), featureName, (featureType1).getGeometryDescriptor().getLocalName()); } catch (PSQLException e) { logger.debug(e.getMessage(), e); @@ -330,19 +331,23 @@ ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType1); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } } else { deleteTable(conn, featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } else { try { @@ -351,15 +356,19 @@ for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); stmt.execute(stmtText); + currentSQL = stmtText; JDBCUtils.close(stmt); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } } @@ -370,30 +379,35 @@ Connection conn = null; SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexTextFeatureTypeBuilder(featureName); featureType2 = typeBuilder.buildFeatureType(); + String currentSQL = null; if (isExistFeature(featureType2)) { try { conn = getConnection(); if (dropTableMode) { - dropGeometryColumn(conn, featureName, + dropGeometryColumn(conn, getTargetSchema(), featureName, (featureType2).getGeometryDescriptor().getLocalName()); dropTable(conn, featureName); ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } } else { deleteTable(conn, featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } else { try { @@ -401,16 +415,20 @@ ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType2); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } } @@ -421,12 +439,13 @@ Connection conn = null; SimpleFeatureTypeBuilder typeBuilder = FeatureTypeBuilderUtil.createNormalIndexFeatureTypeBuilder(featureName); featureType3 = typeBuilder.buildFeatureType(); + String currentSQL = null; if (isExistFeature(featureType3)) { try { conn = getConnection(); if (dropTableMode) { try { - dropGeometryColumn(conn, featureName, + dropGeometryColumn(conn, getTargetSchema(), featureName, (featureType3).getGeometryDescriptor().getLocalName()); } catch (PSQLException e) { logger.debug(e.getMessage(), e); @@ -439,19 +458,23 @@ ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } } else { deleteTable(conn, featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } else { try { @@ -459,16 +482,20 @@ ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType3); for (String stmtText : schemaTexts) { Statement stmt = conn.createStatement(); + currentSQL = stmtText; stmt.execute(stmtText); JDBCUtils.close(stmt); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); + if (currentSQL != null) + logger.warn("executeSQL:" + currentSQL); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java index 8fdced2..2a9eb93 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java @@ -332,7 +332,7 @@ conn = getConnection(); if (dropTableMode) { dropGeometryColumn(conn, getTargetSchema(), featureName, - ((FeatureTypeImpl)featureType).getGeometryDescriptor().getName().getLocalPart()); + (featureType).getGeometryDescriptor().getName().getLocalPart()); dropTable(conn, getTargetSchema(), featureName); ArrayList<String> schemaTexts = createNewSchemaTexts(conn, featureType); @@ -344,13 +344,12 @@ } else { deleteTable(conn, getTargetSchema(), featureName); } - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } catch (IOException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); logger.warn(e.getMessage(), e); } catch (SQLException e) { - JDBCUtils.close(conn, Transaction.AUTO_COMMIT, e); logger.warn(e.getMessage(), e); + } finally { + JDBCUtils.close(conn, Transaction.AUTO_COMMIT, null); } } else { String tempStmt = null; -- Gitblit v0.0.0-SNAPSHOT