From 90e7660cac64a949ac7d4e71302ac3509e8ce5a5 Mon Sep 17 00:00:00 2001
From: Dennis Kao <ulysseskao@gmail.com>
Date: Tue, 08 Apr 2014 15:32:49 +0800
Subject: [PATCH] Merge branch 'origin/2.1.x'

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 52 insertions(+), 4 deletions(-)

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 9bbfe1c..93b1a89 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
@@ -317,6 +317,7 @@
                     }
                 }
 
+                clearExchangeData(jobContext);
                 jobContext.closeOracleConnection();
             }
 
@@ -386,6 +387,41 @@
     private void logTimeDiff(String message, long tBefore, long tCurrent) {
         logger.warn(message + ":use time = " + ((int) ((tCurrent - tBefore) / 60000.0)) + " min - " +
             (((int) ((tCurrent - tBefore) % 60000.0)) / 1000) + " sec");
+    }
+
+    private void clearExchangeData(OracleConvertPostGISJobContext jobContext) throws SQLException, IOException {
+        Connection connection = jobContext.getOracleConnection();
+
+        ResultSet rsMeta = connection.getMetaData().getTables(null, "CMMS_POSTDB", "GEO_EXCHANGE",
+            new String[]{"TABLE"});
+
+        boolean found = false;
+        try {
+            while (rsMeta.next()) {
+                found = true;
+                break;
+            }
+            // } catch (SQLException e)
+        } finally {
+            if (rsMeta != null) {
+                rsMeta.close();
+                rsMeta = null;
+            }
+        }
+
+        if (!found) {
+            logger.info("Cannot Found GEO_EXCHANGE in CMMS_POSTDB.");
+            return;
+        }
+
+        Statement stmt = null;
+        try {
+            stmt = connection.createStatement();
+            int count = stmt.executeUpdate("UPDATE \"CMMS_POSTDB\".\"GEO_EXCHANGE\" SET ISEXCHANGE=1 WHERE ISEXCHANGE=0");
+            logger.info("GEO_EXCHANGE UPDATE SIZE=" + count);
+        } finally {
+            JDBCUtils.close(stmt);
+        }
     }
 
     private void exetcuteConvert(OracleConvertPostGISJobContext jobContext,
@@ -1310,7 +1346,7 @@
                 values[0] = rs.getString("vptname");
                 values[1] = rs.getShort("vptstatus");
                 tmpTablenames.add(values);
-                if ((((Short) values[1]) & DataReposVersionManager.VSSTATUS_USING) != 0) {
+                if (((Short) values[1]) >= DataReposVersionManager.VSSTATUS_LINKVIEW) {
                     current = i;
                 }
                 i++;
@@ -1887,11 +1923,23 @@
         Statement stmt = connection.createStatement();
         ResultSet rs = null;
         try {
-            stmt.execute("CREATE TABLE " + tableName +" AS SELECT * FROM " + tempTable);
+            boolean found = false;
             rs = connection.getMetaData().getTables(null, _pgSchema, tableName, new String[]{"TABLE"});
             if (rs.next()) {
-                stmt.execute("ALTER TABLE " + encodeSchemaTableName(_pgSchema, tableName) +
-                    " ADD PRIMARY KEY (tid, oid)");
+                found = true;
+            }
+            JDBCUtils.close(rs);
+
+            if (!found) {
+                stmt.execute("CREATE TABLE " + tableName +" AS SELECT * FROM " + tempTable);
+                rs = connection.getMetaData().getTables(null, _pgSchema, tableName, new String[]{"TABLE"});
+                if (rs.next()) {
+                    stmt.execute("ALTER TABLE " + encodeSchemaTableName(_pgSchema, tableName) +
+                        " ADD PRIMARY KEY (tid, oid)");
+                }
+            } else {
+                stmt.execute("TRUNCATE "+ tableName + " CASCADE");
+                stmt.execute("SELECT * INTO " + tableName + " FROM " + tempTable);
             }
             stmt.execute("DROP TABLE " + tempTable);
         } finally {

--
Gitblit v0.0.0-SNAPSHOT