From 336ad059eeb373446f994dbb89d2fda0e07825fb Mon Sep 17 00:00:00 2001
From: Dennis Kao <ulysseskao@gmail.com>
Date: Mon, 10 Feb 2014 01:14:56 +0800
Subject: [PATCH] update for flow (fsc-106)

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 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 3a7b3d8..a0b117a 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
@@ -245,6 +245,9 @@
                 String viewName = sbView.toString();
                 if (allViewNames.contains(viewName)) {
                     resetThemesPostgisDataView(connection, ownerName, null, viewName);
+                    if (tid == 106) {
+                        resetFlowThemesPostgisDataView(connection, ownerName, null, viewName);
+                    }
                 }
             }
 
@@ -454,6 +457,45 @@
         }
     }
 
+    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);

--
Gitblit v0.0.0-SNAPSHOT