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