| | |
| | | |
| | | private String retrieveCurrentSchemaName(Connection connection, short status) throws SQLException { |
| | | StringBuilder sbSQL = new StringBuilder("SELECT vsschema, vstimestamp, vsstatus FROM "); |
| | | sbSQL.append(DataReposVersionManager.XGVERSIONTABLE_NAME); |
| | | sbSQL.append(encodeSchemaTableName(_pgSchema, DataReposVersionManager.XGVERSIONTABLE_NAME)); |
| | | sbSQL.append(" WHERE vsstatus = "); |
| | | sbSQL.append(status); |
| | | sbSQL.append(" ORDER BY vsid"); |
| | |
| | | } |
| | | } |
| | | |
| | | private void updateCurrentThemeStatus(Connection connection, String schemaName, short newStatus) |
| | | private void updateCurrentThemeStatus(Connection connection, String themeTableName, short newStatus) |
| | | throws SQLException { |
| | | StringBuilder sbSQL = new StringBuilder("UPDATE "); |
| | | sbSQL.append(DataReposVersionManager.XPTVERSIONTABLE_NAME).append(' '); |
| | | sbSQL.append(" SET vptstatus = "); |
| | | sbSQL.append(newStatus); |
| | | sbSQL.append(", vpttimestamp = CURRENT_TIMESTAMP WHERE vptname = '"); |
| | | sbSQL.append(schemaName).append("'"); |
| | | sbSQL.append(themeTableName).append("'"); |
| | | |
| | | Statement stmt = null; |
| | | try { |
| | |
| | | |
| | | private String retrieveCurrentThemeName(Connection connection, short status) throws SQLException { |
| | | StringBuilder sbSQL = new StringBuilder("SELECT "); |
| | | sbSQL.append("vptname, vptstatus, vpttimestamp FROM "); |
| | | sbSQL.append(encodeSchemaTableName(_pgSchema, DataReposVersionManager.XPTVERSIONTABLE_NAME)).append(' '); |
| | | sbSQL.append("vptname, vpttimestamp, vptstatus FROM "); |
| | | sbSQL.append(encodeSchemaTableName(_pgSchema, DataReposVersionManager.XPTVERSIONTABLE_NAME)); |
| | | sbSQL.append(" WHERE vptstatus = "); |
| | | sbSQL.append(status); |
| | | sbSQL.append("ORDER BY vptid"); |
| | | |
| | | String result = null; |
| | |
| | | } catch (SQLException e) { |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException("Update " + DataReposVersionManager.XGVERSIONTABLE_NAME + |
| | | " has error-", e); |
| | | } |
| | | } |
| | | |
| | | protected void transferThemesVersionStatus(Connection connection, |
| | | short vsstatusBefore, short vsstatusAfter, boolean exclusive) throws JobExecutionException { |
| | | |
| | | try { |
| | | String currentTargetTheme = retrieveCurrentThemeName(connection, vsstatusBefore); |
| | | if (currentTargetTheme == null) { |
| | | logger.info("Cannot found target schema in dataStore. status=" + vsstatusBefore); |
| | | return; |
| | | } |
| | | String existTargetSchema = null; |
| | | if (exclusive) |
| | | existTargetSchema = retrieveCurrentThemeName(connection, vsstatusAfter); |
| | | |
| | | |
| | | updateCurrentThemeStatus(connection, currentTargetTheme, vsstatusAfter); |
| | | if ((exclusive) && (existTargetSchema != null)) { |
| | | updateCurrentThemeStatus(connection, existTargetSchema, |
| | | DataReposVersionManager.VSSTATUS_AVAILABLE); |
| | | } |
| | | } catch (SQLException e) { |
| | | logger.warn(e.getMessage(), e); |
| | | throw new JobExecutionException("Update " + DataReposVersionManager.XPTVERSIONTABLE_NAME + |
| | | " has error-", e); |
| | | } |
| | | } |
| | |
| | | connection = targetDataStore.getConnection(Transaction.AUTO_COMMIT); |
| | | transferXGeosVersionStatus(connection, DataReposVersionManager.VSSTATUS_LINKVIEW, |
| | | DataReposVersionManager.VSSTATUS_CONFIG, false); |
| | | transferThemesVersionStatus(connection, DataReposVersionManager.VSSTATUS_LINKVIEW, |
| | | DataReposVersionManager.VSSTATUS_CONFIG, false); |
| | | |
| | | URL geoServerURL = new URL(_geoServerURL); |
| | | GeoServerRESTManager manager = new GeoServerRESTManager(geoServerURL, _geoServerUser, _geoServerPass); |
| | | GeoServerRESTReader reader = manager.getReader(); |
| | |
| | | resetWMSVirtualLayerMapping(jobExecutionContext, connection, manager, true); |
| | | |
| | | transferXGeosVersionStatus(connection, DataReposVersionManager.VSSTATUS_CONFIG, |
| | | DataReposVersionManager.VSSTATUS_USING, true); |
| | | DataReposVersionManager.VSSTATUS_USING, true); |
| | | transferThemesVersionStatus(connection, DataReposVersionManager.VSSTATUS_CONFIG, |
| | | DataReposVersionManager.VSSTATUS_USING, true); |
| | | Date lastUpdate = Calendar.getInstance().getTime(); |
| | | } catch (IOException e) { |
| | | logger.warn(e.getMessage(), e); |