| | |
| | | String viewName = sbView.toString(); |
| | | if (allViewNames.contains(viewName)) { |
| | | resetThemesPostgisDataView(connection, ownerName, null, viewName); |
| | | if (tid == 106) { |
| | | resetFlowThemesPostgisDataView(connection, ownerName, null, viewName); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private void resetFlowThemesPostgisDataView(Connection connection, String ownerName, |
| | | String currentSchema, String viewName) throws SQLException { |
| | | String themeViewName = viewName + "-flow-oms"; |
| | | ResultSet rs = null; |
| | | Statement stmt = connection.createStatement(); |
| | | |
| | | try { |
| | | StringBuilder sbSQL = new StringBuilder("CREATE OR REPLACE VIEW \""); |
| | | sbSQL.append(themeViewName).append("\" AS SELECT "); |
| | | |
| | | rs = connection.getMetaData().getColumns(null, currentSchema, viewName, "%"); |
| | | while (rs.next()) { |
| | | String fieldName = rs.getString("COLUMN_NAME"); |
| | | sbSQL.append("t." + fieldName).append(", "); |
| | | } |
| | | sbSQL.append("fc.dyncolor, fo.fowner, fo.flow FROM "); |
| | | if (currentSchema != null) |
| | | sbSQL.append("\"").append(currentSchema).append("\".\"").append(viewName).append("\" AS t,"); |
| | | else |
| | | sbSQL.append("\"").append(viewName).append("\" AS t,"); |
| | | sbSQL.append("xpwtheme").append(FDYNCOLOR_SUFFIX).append(" AS fc,"); |
| | | sbSQL.append("xpwtheme").append(FOWNER_SUFFIX).append(" AS fo WHERE "); |
| | | sbSQL.append("t.tid = fc.tid AND t.oid = fc.oid AND "); |
| | | sbSQL.append("t.tid = fo.tid AND t.oid = fo.oid"); |
| | | |
| | | // sbSQL.delete(sbSQL.length() - 2, sbSQL.length()); |
| | | String sql = sbSQL.toString(); |
| | | stmt.execute(sql); |
| | | sbSQL.delete(0, sbSQL.length()); |
| | | |
| | | PrintfFormat pf = new PrintfFormat(ALTER_VIEWSQL + ownerName); |
| | | sql = pf.sprintf(themeViewName); |
| | | stmt.execute(sql); |
| | | } finally { |
| | | JDBCUtils.close(rs); |
| | | JDBCUtils.close(stmt); |
| | | } |
| | | } |
| | | |
| | | private HashMap<String, String> retrieveViewDef(Connection connection, String schemaName, String tablePattern) throws SQLException { |
| | | PreparedStatement stmt = connection.prepareStatement(QUERY_VIEWDEFSQL + "'" + tablePattern + "'"); |
| | | stmt.setString(1, schemaName); |
| | |
| | | |
| | | 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); |