| | |
| | | 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; |
| | |
| | | logger.warn(ex.getMessage(), ex); |
| | | throw new JobExecutionException("IO error. " + ex.getMessage(), ex); |
| | | } |
| | | updateRepoStatusToReady(targetSchemaName); |
| | | logger.info(jobName + " end at " + new Date()); |
| | | } |
| | | |
| | |
| | | { |
| | | if (targetDataStore == null) return null; |
| | | Connection connection = null; |
| | | Statement stmt = null; |
| | | ResultSet rs = null; |
| | | String targetSchema = null; |
| | | boolean needCreate = false; |
| | |
| | | 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; |
| | | } |
| | |
| | | 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) {}; |
| | | } |
| | | } |
| | | } |