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