From aa92e40672e9ea2a6b55f528d5b986314d652a40 Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Mon, 16 Jun 2008 09:55:37 +0800 Subject: [PATCH] update for EOFM-122 --- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/AbstractOracleToPostGISJobContext.java | 2 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java | 23 ++++ xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java | 14 +- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java | 11 +- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java | 40 ++++--- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java | 12 + xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/postgis/OracleConvertPostGISJobContext.java | 36 +++--- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java | 13 +- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java | 109 ++++++++++----------- 9 files changed, 139 insertions(+), 121 deletions(-) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java index 4835023..439d264 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2MySQLJob.java @@ -72,7 +72,6 @@ private static final String USEWKB = "USEWKB"; private static final int FETCHSIZE = 30; - private static final int BATCHSIZE = 25; private static final int COMMITSIZE = 20; class Pair @@ -362,10 +361,9 @@ try { rs = stmt.executeQuery(fetchStmt); - + int size = rs.getMetaData().getColumnCount(); while (rs.next()) { - int size = rs.getMetaData().getColumnCount(); Object[] values = new Object[size]; for (int i = 0; i < size; i++) @@ -409,10 +407,9 @@ stmt.setFetchSize(FETCHSIZE); ResultSet rs = stmt.executeQuery(fetchStmt); - + int size = rs.getMetaData().getColumnCount(); while (rs.next()) { - int size = rs.getMetaData().getColumnCount(); Object[] values = new Object[size]; for (int i = 0; i < size; i++) @@ -448,12 +445,12 @@ stmtSrc.setFetchSize(FETCHSIZE); ResultSet rsSrc = stmtSrc.executeQuery(fetchSrcStmt); - + int igdsMetaType = rsSrc.getMetaData().getColumnType(1); while (rsSrc.next()) { - byte[] raw = null; + byte[] raw; - if (rsSrc.getMetaData().getColumnType(1) == Types.BLOB) + if (igdsMetaType == Types.BLOB) { BLOB blob = (BLOB) rsSrc.getBlob(1); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java index 8b1e3bf..3de3389 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2OraSDOJob.java @@ -72,7 +72,6 @@ private static final String USEWKB = "USEWKB"; private static final int FETCHSIZE = 30; - private static final int BATCHSIZE = 25; private static final int COMMITSIZE = 20; class Pair @@ -362,10 +361,9 @@ try { rs = stmt.executeQuery(fetchStmt); - + int size = rs.getMetaData().getColumnCount(); while (rs.next()) { - int size = rs.getMetaData().getColumnCount(); Object[] values = new Object[size]; for (int i = 0; i < size; i++) @@ -409,10 +407,9 @@ stmt.setFetchSize(FETCHSIZE); ResultSet rs = stmt.executeQuery(fetchStmt); - + int size = rs.getMetaData().getColumnCount(); while (rs.next()) { - int size = rs.getMetaData().getColumnCount(); Object[] values = new Object[size]; for (int i = 0; i < size; i++) @@ -448,12 +445,11 @@ stmtSrc.setFetchSize(FETCHSIZE); ResultSet rsSrc = stmtSrc.executeQuery(fetchSrcStmt); - + int igdsMetaType = rsSrc.getMetaData().getColumnType(1); while (rsSrc.next()) { - byte[] raw = null; - - if (rsSrc.getMetaData().getColumnType(1) == Types.BLOB) + byte[] raw; + if (igdsMetaType == Types.BLOB) { BLOB blob = (BLOB) rsSrc.getBlob(1); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java index 0128a4a..d776562 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java @@ -9,12 +9,11 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.channels.FileChannel; +import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; -import java.sql.Connection; -import java.util.Calendar; import java.util.Date; import java.util.Map; import java.util.TreeMap; @@ -262,7 +261,7 @@ // public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; // SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); logger.warn("use time = " + ((int) ((t2 - t1) / 60000.0)) + " min - " + - (((int) ((t2 - t1) % 60000.0)) / 1000) + " sec"); + (((int) ((t2 - t1) % 60000.0)) / 1000) + " sec"); } catch (SQLException e) { logger.warn(e.getMessage(), e); @@ -295,7 +294,7 @@ { int order = 0; OrderedMap map = getBlobStorageList(jobContext.getOracleConnection(), - querySchema, "SD$SPACENODES" , null); + querySchema, "SD$SPACENODES", null); logger.info("begin convert job:[" + map.size() + "]:testmode=" + _testMode); @@ -363,14 +362,13 @@ ResultSet rs = null; stmt.setFetchSize(FETCHSIZE); - + int size = rs.getMetaData().getColumnCount(); try { rs = stmt.executeQuery(fetchStmt); while (rs.next()) { - int size = rs.getMetaData().getColumnCount(); Object[] values = new Object[size]; for (int i = 0; i < size; i++) @@ -415,29 +413,29 @@ ResultSet rs = stmt.executeQuery(fetchStmt); try { - while (rs.next()) - { int size = rs.getMetaData().getColumnCount(); - Object[] values = new Object[size]; - - for (int i = 0; i < size; i++) + while (rs.next()) { - values[i] = rs.getObject(i + 1); + Object[] values = new Object[size]; + + for (int i = 0; i < size; i++) + { + values[i] = rs.getObject(i + 1); + } + + Integer key = ((BigDecimal) values[0]).intValue(); + String name = (String) values[1]; + + Pair pair = (Pair) orderedMap.get(key); + if (pair == null) + orderedMap.put(key, new Pair(null, name)); + else + pair.second = name; } - - Integer key = ((BigDecimal) values[0]).intValue(); - String name = (String) values[1]; - - Pair pair = (Pair) orderedMap.get(key); - if (pair == null) - orderedMap.put(key, new Pair(null, name)); - else - pair.second = name; - } } finally { - rs.close(); - stmt.close(); + rs.close(); + stmt.close(); } return orderedMap; } @@ -453,12 +451,11 @@ stmtSrc.setFetchSize(FETCHSIZE); ResultSet rsSrc = stmtSrc.executeQuery(fetchSrcStmt); - + int igdsMetaType = rsSrc.getMetaData().getColumnType(1); while (rsSrc.next()) { - byte[] raw = null; - - if (rsSrc.getMetaData().getColumnType(1) == Types.BLOB) + byte[] raw; + if (igdsMetaType == Types.BLOB) { BLOB blob = (BLOB) rsSrc.getBlob(1); @@ -497,39 +494,39 @@ try { - while (rsDest.next()) - { - ARRAY rawsValue = ((OracleResultSet) rsDest).getARRAY(1); - long[] rawData = rawsValue.getLongArray(); - byte[] comparessedValue; - - /* - if (dataMode == TransferTask.DataMode.Normal) + while (rsDest.next()) { + ARRAY rawsValue = ((OracleResultSet) rsDest).getARRAY(1); + long[] rawData = rawsValue.getLongArray(); + byte[] comparessedValue; + + /* + if (dataMode == TransferTask.DataMode.Normal) + { + comparessedValue = BinConverter.unmarshalByteArray(rawData, true); + } else + { + comparessedValue = BinConverter.unmarshalCompactByteArray(rawData); + } + */ comparessedValue = BinConverter.unmarshalByteArray(rawData, true); - } else - { - comparessedValue = BinConverter.unmarshalCompactByteArray(rawData); + + byte[] rawDest = ByteArrayCompressor.decompressByteArray(comparessedValue); + + + try + { + Element element = fetchBinaryElement(rawDest); + jobContext.putFeatureCollection(element); + } catch (Dgn7fileException e) + { + logger.warn("Dgn7Exception:" + e.getMessage(), e); + } } - */ - comparessedValue = BinConverter.unmarshalByteArray(rawData, true); - - byte[] rawDest = ByteArrayCompressor.decompressByteArray(comparessedValue); - - - try - { - Element element = fetchBinaryElement(rawDest); - jobContext.putFeatureCollection(element); - } catch (Dgn7fileException e) - { - logger.warn("Dgn7Exception:" + e.getMessage(), e); - } - } } finally { - rsDest.close(); - stmtDest.close(); + rsDest.close(); + stmtDest.close(); } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java index 35a4de6..6e62e7a 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2ShpJob.java @@ -264,10 +264,10 @@ try { rs = stmt.executeQuery(fetchStmt); + int size = rs.getMetaData().getColumnCount(); while (rs.next()) { - int size = rs.getMetaData().getColumnCount(); Object[] values = new Object[size]; for (int i = 0; i < size; i++) @@ -309,12 +309,11 @@ Statement stmt = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(FETCHSIZE); - ResultSet rs = stmt.executeQuery(fetchStmt); + int size = rs.getMetaData().getColumnCount(); while (rs.next()) { - int size = rs.getMetaData().getColumnCount(); Object[] values = new Object[size]; for (int i = 0; i < size; i++) @@ -350,12 +349,12 @@ stmtSrc.setFetchSize(FETCHSIZE); ResultSet rsSrc = stmtSrc.executeQuery(fetchSrcStmt); - + int igdsMetaType = rsSrc.getMetaData().getColumnType(1); while (rsSrc.next()) { - byte[] raw = null; + byte[] raw; - if (rsSrc.getMetaData().getColumnType(1) == Types.BLOB) + if (igdsMetaType == Types.BLOB) { BLOB blob = (BLOB) rsSrc.getBlob(1); diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java index 328ef87..0a43c1f 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleElementLogger.java @@ -11,6 +11,7 @@ import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; +import java.util.ArrayList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -45,6 +46,7 @@ private FileOutputStream fos = null; private FileChannel fch = null; private int logCount = 0; + private ArrayList<byte[]> dgnFileHeader = null; public OracleElementLogger(Connection connection) { @@ -226,6 +228,17 @@ logger.warn("connection is null"); return; } + + if (dgnFileHeader != null) + { + for (byte[] raw : dgnFileHeader) + { + putElementIntoStream(raw); + } + return; + } + + dgnFileHeader = new ArrayList<byte[]>(); String fetchSrcStmtFmt = "SELECT IGDSELM FROM \"%s\".\"%s\" ORDER BY ROWID"; PrintfFormat spf = new PrintfFormat(fetchSrcStmtFmt); String fetchSrcStmt = spf.sprintf(new Object[]{currentSchema, TAB_IGDSSEED}); @@ -249,9 +262,12 @@ if (raw != null) { + dgnFileHeader.add(raw); putElementIntoStream(raw); } } + rsSrc.close(); + stmtSrc.close(); } private void putElementIntoStream(byte[] raw) throws IOException @@ -268,7 +284,7 @@ byte[] chunk = new byte[optimalSize]; InputStream is = blob.getBinaryStream(0); ByteBuffer buffer = null; // ByteBuffer.allocate(optimalSize); - int len = 0; + int len; try { @@ -312,4 +328,9 @@ fch = null; } } + + public boolean isSchemaChanged() + { + return schemaChanged; + } } diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java index d0eb000..890fced 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/mysql/OracleConvertMySQLJobContext.java @@ -1,43 +1,42 @@ package com.ximple.eofms.jobs.context.mysql; +import java.io.File; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; import java.sql.DriverManager; import java.sql.SQLException; -import java.util.HashMap; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; -import java.net.URL; -import java.net.MalformedURLException; -import java.io.File; -import java.io.UnsupportedEncodingException; -import java.io.IOException; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.commons.transaction.util.LoggerFacade; -import org.apache.commons.transaction.util.CommonsLoggingLogger; -import org.apache.commons.transaction.memory.PessimisticMapWrapper; import org.apache.commons.digester.Digester; import org.apache.commons.digester.xmlrules.DigesterLoader; -import org.geotools.data.FeatureWriter; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.commons.transaction.memory.PessimisticMapWrapper; +import org.apache.commons.transaction.util.CommonsLoggingLogger; +import org.apache.commons.transaction.util.LoggerFacade; import org.geotools.data.DataStore; +import org.geotools.data.FeatureWriter; import org.geotools.data.Transaction; -import org.geotools.data.SchemaNotFoundException; import org.geotools.data.mysql.MySQLDataStoreFactory; import org.geotools.feature.Feature; import org.geotools.feature.FeatureType; -import org.geotools.feature.SimpleFeature; import org.geotools.feature.IllegalAttributeException; +import org.geotools.feature.SimpleFeature; import org.quartz.JobExecutionContext; import org.xml.sax.SAXException; import com.vividsolutions.jts.util.Assert; -import com.ximple.eofms.jobs.OracleElementLogger; -import com.ximple.eofms.filter.ElementDispatcher; import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; +import com.ximple.eofms.filter.ElementDispatcher; +import com.ximple.eofms.jobs.OracleElementLogger; +import com.ximple.io.dgn7.ComplexElement; import com.ximple.io.dgn7.Element; import com.ximple.io.dgn7.FrammeAttributeData; -import com.ximple.io.dgn7.ComplexElement; public class OracleConvertMySQLJobContext extends AbstractOracleToMySQLJobContext { @@ -70,7 +69,7 @@ private JobExecutionContext executionContext; private String currentSchema = null; - private String pgCurrentSchema = null; + private String mysqlCurrentSchema = null; private boolean schemaChanged = false; // private String _convertElementIn = null; @@ -289,6 +288,11 @@ return elmLogger; } + public boolean isSchemaChanged() + { + return schemaChanged; + } + public String getCurrentSchema() { return currentSchema; diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java index fa2a07e..f51ec60 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/context/orasdo/OracleConvertOraSDOJobContext.java @@ -69,7 +69,7 @@ private JobExecutionContext executionContext; private String currentSchema = null; - private String pgCurrentSchema = null; + private String oraCurrentSchema = null; private boolean schemaChanged = false; // private String _convertElementIn = null; @@ -229,10 +229,9 @@ } ArrayList features = (ArrayList) featuresContext.get(featureType); - Iterator itFeature = features.iterator(); - while (itFeature.hasNext()) + for (Object feature1 : features) { - Feature feature = (Feature) itFeature.next(); + Feature feature = (Feature) feature1; ((SimpleFeature) writer.next()).setAttributes(feature.getAttributes(null)); } //writer.close(); @@ -288,6 +287,11 @@ return elmLogger; } + public boolean isSchemaChanged() + { + return schemaChanged; + } + public String getCurrentSchema() { return currentSchema; 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 4cddb96..b4adcab 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 @@ -116,7 +116,7 @@ */ private static final int MAX_ALLOWED_VALUE = 10485760; - protected static final int BATCHSIZE = 256; + protected static final int BATCHSIZE = 512; /** * Well Known Text writer (from JTS). 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 a56d065..348d2b3 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 @@ -5,11 +5,11 @@ import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; -import java.sql.DriverManager; -import java.sql.SQLException; import java.sql.Connection; -import java.sql.Statement; +import java.sql.DriverManager; import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -18,28 +18,23 @@ import org.apache.commons.digester.xmlrules.DigesterLoader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.commons.transaction.memory.PessimisticMapWrapper; import org.apache.commons.transaction.util.CommonsLoggingLogger; import org.apache.commons.transaction.util.LoggerFacade; import org.geotools.data.DataStore; -import org.geotools.data.FeatureWriter; import org.geotools.data.Transaction; import org.geotools.data.postgis.PostgisDataStoreFactory; import org.geotools.feature.Feature; import org.geotools.feature.FeatureType; -import org.geotools.feature.IllegalAttributeException; -import org.geotools.feature.SimpleFeature; -import org.geotools.feature.FeatureTypeBuilder; import org.geotools.feature.SchemaException; +import org.postgresql.util.PSQLException; import org.quartz.JobExecutionContext; import org.xml.sax.SAXException; -import org.postgresql.util.PSQLException; import com.vividsolutions.jts.util.Assert; import com.ximple.eofms.filter.AbstractFLinkageDispatchableFilter; -import com.ximple.eofms.filter.ElementDispatcher; import com.ximple.eofms.filter.CreateFeatureTypeEventListener; +import com.ximple.eofms.filter.ElementDispatcher; import com.ximple.eofms.filter.FeatureTypeEvent; import com.ximple.eofms.jobs.OracleElementLogger; import com.ximple.io.dgn7.ComplexElement; @@ -47,7 +42,7 @@ import com.ximple.io.dgn7.FrammeAttributeData; public class OracleConvertPostGISJobContext extends AbstractOracleToPostGISJobContext - implements CreateFeatureTypeEventListener + implements CreateFeatureTypeEventListener { static Log logger = LogFactory.getLog(OracleConvertPostGISJobContext.class); static final LoggerFacade sLogger = new CommonsLoggingLogger(logger); @@ -210,9 +205,11 @@ private void updateDataStore() { Iterator<FeatureType> it = txFeaturesContext.keySet().iterator(); - String currentStmt = null; try { + Connection conn = getConnection(); + boolean autoCommit = conn.getAutoCommit(); + conn.setAutoCommit(true); while (it.hasNext()) { FeatureType featureType = it.next(); @@ -220,9 +217,6 @@ String bindingStmt = makePrepareInsertSql(featureType); ArrayList<Feature> features = txFeaturesContext.get(featureType); - Connection conn = getConnection(); - boolean autoCommit = conn.getAutoCommit(); - conn.setAutoCommit(true); PreparedStatement pstmt = conn.prepareStatement(bindingStmt); for (Feature feature : features) @@ -249,7 +243,7 @@ for (int i = 0; i < feature.getNumberOfAttributes(); i++) { logger.info("attr[" + i + "]-" + ((feature.getAttribute(i) == null) ? " NULL" : - feature.getAttribute(i).toString())); + feature.getAttribute(i).toString())); } logger.error(e.getMessage(), e); } @@ -257,9 +251,9 @@ pstmt.close(); features.clear(); - conn.setAutoCommit(autoCommit); logger.debug("End Save into PostGIS:" + featureType.getTypeName()); } + conn.setAutoCommit(autoCommit); accumulate = 0; } catch (SQLException e) { @@ -354,7 +348,8 @@ stmt.execute(stmtText); stmt.close(); } - } else { + } else + { deleteTable(conn, featureName); } conn.close(); @@ -387,4 +382,9 @@ } } } + + public boolean isSchemaChanged() + { + return schemaChanged; + } } -- Gitblit v0.0.0-SNAPSHOT