From 94e0f911454190575358dca175fb9c3dd878fa49 Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Mon, 25 Aug 2008 01:26:16 +0800 Subject: [PATCH] update for EOFM-152 --- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/OracleConvertDgn2PostGISJob.java | 95 +++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 91 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 003668e..3aa6279 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 @@ -17,6 +17,7 @@ import java.util.Date; import java.util.Map; import java.util.TreeMap; +import java.util.ArrayList; import org.apache.commons.collections.OrderedMap; import org.apache.commons.collections.OrderedMapIterator; @@ -270,6 +271,7 @@ logger.warn(ex.getMessage(), ex); throw new JobExecutionException("IO error. " + ex.getMessage(), ex); } + updateRepoStatusToReady(targetSchemaName); logger.info(jobName + " end at " + new Date()); } @@ -1158,6 +1160,7 @@ { if (targetDataStore == null) return null; Connection connection = null; + Statement stmt = null; ResultSet rs = null; String targetSchema = null; boolean needCreate = false; @@ -1168,12 +1171,58 @@ if (!rs.next()) needCreate = true; if (needCreate) createXGeosVersionTable(connection, _pgSchema); + rs.close(); + rs = null; - StringBuilder sbSQL = new StringBuilder(); + StringBuilder sbSQL = new StringBuilder("SELECT "); + sbSQL.append("'vsschema', 'vsstatus' FROM "); + sbSQL.append(encodeSchemaTableName(_pgSchema, XGVERSION_NAME)).append(' '); + sbSQL.append("ORDER BY vsid"); + stmt = connection.createStatement(); + rs = stmt.executeQuery(sbSQL.toString()); + ArrayList<Object[]> tmpSchemas = new ArrayList<Object[]>(); + int i = 0; + int current = 0; + while (rs.next()) + { + Object[] values = new Object[2]; + values[0] = rs.getObject(1); + values[1] = rs.getObject(2); + tmpSchemas.add(values); + if ((((Short)values[1]) & DataRepositoryStatus.VSSTATUS_USING) != 0) + { + current = i; + } + i++; + } + + if (current < (tmpSchemas.size() - 1)) + { + Object[] values = tmpSchemas.get(current + 1); + targetSchema = (String) values[0]; + } else { + Object[] values = tmpSchemas.get(0); + targetSchema = (String) values[0]; + } + + sbSQL = new StringBuilder("UPDATE "); + sbSQL.append(encodeSchemaTableName(_pgSchema, XGVERSION_NAME)).append(' '); + sbSQL.append(" SET 'vsstatus' = "); + sbSQL.append(DataRepositoryStatus.VSSTATUS_COVERT); + sbSQL.append(" WHERE 'vsschema' = "); + sbSQL.append(targetSchema); + int count = stmt.executeUpdate(sbSQL.toString()); + if (count != 1) + { + logger.info("update status for " + targetSchema + " update result count=" + + count); + } } catch (SQLException e) { logger.warn(e.getMessage(), e); } finally { - if (connection != null) try { connection.close(); } catch (SQLException e) {}; + if (rs != null) try { rs.close(); } catch (SQLException e) {}; + if (stmt != null) try { stmt.close(); } catch (SQLException e) {}; + if (connection != null) try { connection.close(); } catch (SQLException e) {}; } return targetSchema; } @@ -1210,16 +1259,54 @@ sql = new StringBuilder("INSERT INTO "); sql.append(encodeSchemaTableName(pgSchema, XGVERSION_NAME)); sql.append(" ('vsschema', 'vsstatus' ) VALUES ("); - sql.append("'gisrepo1', 0 "); + sql.append("'gisrepo1', "); + sql.append(DataRepositoryStatus.VSSTATUS_UNKNOWN).append(" )"); stmt.executeUpdate(sql.toString()); sql = new StringBuilder("INSERT INTO "); sql.append(encodeSchemaTableName(pgSchema, XGVERSION_NAME)); sql.append(" ('vsschema', 'vsstatus' ) VALUES ("); - sql.append("'gisrepo2', 0 "); + sql.append("'gisrepo2', "); + sql.append(DataRepositoryStatus.VSSTATUS_UNKNOWN).append(" )"); stmt.executeUpdate(sql.toString()); } finally { if (stmt != null) stmt.close(); } } + + private void updateRepoStatusToReady(String targetSchema) + { + if (targetDataStore == null) return; + Connection connection = null; + Statement stmt = null; + ResultSet rs = null; + boolean needCreate = false; + try + { + StringBuilder sbSQL = new StringBuilder("UPDATE "); + sbSQL.append(encodeSchemaTableName(_pgSchema, XGVERSION_NAME)).append(' '); + sbSQL.append(" SET 'vsstatus' = "); + sbSQL.append(DataRepositoryStatus.VSSTATUS_READY); + sbSQL.append(" WHERE 'vsschema' = "); + sbSQL.append(targetSchema); + + connection = targetDataStore.getConnection(Transaction.AUTO_COMMIT); + stmt = connection.createStatement(); + int count = stmt.executeUpdate(sbSQL.toString()); + if (count != 1) + { + logger.info("update status for " + targetSchema + " update result count=" + + count); + } + } catch (SQLException e) { + logger.warn(e.getMessage(), e); + } catch (IOException e) + { + logger.warn(e.getMessage(), e); + } finally { + if (rs != null) try { rs.close(); } catch (SQLException e) {}; + if (stmt != null) try { stmt.close(); } catch (SQLException e) {}; + if (connection != null) try { connection.close(); } catch (SQLException e) {}; + } + } } -- Gitblit v0.0.0-SNAPSHOT