From bc926822dddd05d55678696999e3b8b0fd415570 Mon Sep 17 00:00:00 2001 From: Dennis Kao <ulysseskao@gmail.com> Date: Mon, 10 Mar 2014 12:28:24 +0800 Subject: [PATCH] update for increment and theme jobs --- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java | 45 +++++++++++++++++++++++++++++++++++++++------ 1 files changed, 39 insertions(+), 6 deletions(-) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java index a0b117a..cc2a050 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java @@ -605,7 +605,7 @@ 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"); @@ -628,14 +628,14 @@ } } - 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 { @@ -659,8 +659,10 @@ 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; @@ -703,6 +705,32 @@ } 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); } } @@ -869,6 +897,9 @@ 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(); @@ -906,7 +937,9 @@ 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); -- Gitblit v0.0.0-SNAPSHOT