| | |
| | | { |
| | | final static Log logger = LogFactory.getLog(OracleConvertDgn2PostGISJob.class); |
| | | |
| | | private static final String XGVERSION_NAME = "xgversion"; |
| | | private static final String XGVERSION_NAME = "xgeos_vsversion"; |
| | | private static final String PGHOST = "PGHOST"; |
| | | private static final String PGDDATBASE = "PGDDATBASE"; |
| | | private static final String PGPORT = "PGPORT"; |
| | |
| | | rs = null; |
| | | |
| | | StringBuilder sbSQL = new StringBuilder("SELECT "); |
| | | sbSQL.append("'vsschema', 'vsstatus' FROM "); |
| | | 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; |
| | | int current = -1; |
| | | while (rs.next()) |
| | | { |
| | | Object[] values = new Object[2]; |
| | | values[0] = rs.getObject(1); |
| | | values[1] = rs.getObject(2); |
| | | values[0] = rs.getString("vsschema"); |
| | | values[1] = rs.getShort("vsstatus"); |
| | | tmpSchemas.add(values); |
| | | if ((((Short)values[1]) & DataRepositoryStatus.VSSTATUS_USING) != 0) |
| | | { |
| | |
| | | i++; |
| | | } |
| | | |
| | | if (current < (tmpSchemas.size() - 1)) |
| | | if (current == -1) |
| | | { |
| | | Object[] values = tmpSchemas.get(0); |
| | | targetSchema = (String) values[0]; |
| | | } else if (current < (tmpSchemas.size() - 1)) |
| | | { |
| | | Object[] values = tmpSchemas.get(current + 1); |
| | | targetSchema = (String) values[0]; |
| | |
| | | |
| | | sbSQL = new StringBuilder("UPDATE "); |
| | | sbSQL.append(encodeSchemaTableName(_pgSchema, XGVERSION_NAME)).append(' '); |
| | | sbSQL.append(" SET 'vsstatus' = "); |
| | | sbSQL.append(" SET vsstatus = "); |
| | | sbSQL.append(DataRepositoryStatus.VSSTATUS_COVERT); |
| | | sbSQL.append(" WHERE 'vsschema' = "); |
| | | sbSQL.append(targetSchema); |
| | | sbSQL.append(" WHERE vsschema = '"); |
| | | sbSQL.append(targetSchema).append("'"); |
| | | int count = stmt.executeUpdate(sbSQL.toString()); |
| | | if (count != 1) |
| | | { |
| | |
| | | |
| | | sql = new StringBuilder("INSERT INTO "); |
| | | sql.append(encodeSchemaTableName(pgSchema, XGVERSION_NAME)); |
| | | sql.append(" ('vsschema', 'vsstatus' ) VALUES ("); |
| | | sql.append(" (vsschema, vsstatus) VALUES ("); |
| | | 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(" (vsschema, vsstatus) VALUES ("); |
| | | sql.append("'gisrepo2', "); |
| | | sql.append(DataRepositoryStatus.VSSTATUS_UNKNOWN).append(" )"); |
| | | stmt.executeUpdate(sql.toString()); |
| | | |
| | | createIfNotExistNewSchema(connection, "gisrepo1"); |
| | | createIfNotExistNewSchema(connection, "gisrepo2"); |
| | | |
| | | } finally { |
| | | if (stmt != null) stmt.close(); |
| | | } |
| | |
| | | { |
| | | StringBuilder sbSQL = new StringBuilder("UPDATE "); |
| | | sbSQL.append(encodeSchemaTableName(_pgSchema, XGVERSION_NAME)).append(' '); |
| | | sbSQL.append(" SET 'vsstatus' = "); |
| | | sbSQL.append(" SET vsstatus = "); |
| | | sbSQL.append(DataRepositoryStatus.VSSTATUS_READY); |
| | | sbSQL.append(" WHERE 'vsschema' = "); |
| | | sbSQL.append(" WHERE vsschema = "); |
| | | sbSQL.append(targetSchema); |
| | | |
| | | connection = targetDataStore.getConnection(Transaction.AUTO_COMMIT); |
| | |
| | | if (connection != null) try { connection.close(); } catch (SQLException e) {}; |
| | | } |
| | | } |
| | | |
| | | private void createIfNotExistNewSchema(Connection connection, String s) throws SQLException |
| | | { |
| | | Statement stmt = null; |
| | | ResultSet rs = null; |
| | | try |
| | | { |
| | | /* |
| | | rs = connection.getMetaData().getSchemas(null, s); |
| | | if (rs.next()) return; |
| | | rs.close(); |
| | | rs = null; |
| | | */ |
| | | |
| | | StringBuilder sbSQL = new StringBuilder("CREATE SCHEMA "); |
| | | sbSQL.append(s).append(' '); |
| | | sbSQL.append("AUTHORIZATION spatialdb"); |
| | | stmt = connection.createStatement(); |
| | | stmt.executeUpdate(sbSQL.toString()); |
| | | |
| | | sbSQL = new StringBuilder("GRANT ALL ON SCHEMA "); |
| | | sbSQL.append(s).append(' '); |
| | | sbSQL.append("TO public"); |
| | | stmt.executeUpdate(sbSQL.toString()); |
| | | } catch (SQLException e) |
| | | { |
| | | logger.info("create schema:" + s + " has exception."); |
| | | logger.info(e.getMessage(), e); |
| | | } finally { |
| | | if (rs != null) rs.close(); |
| | | if (stmt != null) stmt.close(); |
| | | } |
| | | } |
| | | } |