From bbaf4ed875548c854622b55a177c8d35ab9238dc Mon Sep 17 00:00:00 2001
From: Dennis Kao <ulysseskao@ximple.com.tw>
Date: Thu, 08 Aug 2013 18:00:49 +0800
Subject: [PATCH] geoserver layer setting

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/jobs/GeoserverIntegrateConfigJob.java |   57 ++++++++++++++++++++++++++-------------------------------
 1 files changed, 26 insertions(+), 31 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 2246470..27143a7 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
@@ -13,6 +13,7 @@
 import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
 import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder;
 import it.geosolutions.geoserver.rest.encoder.GSLayerGroupEncoder;
+import it.geosolutions.geoserver.rest.encoder.GSLayerGroupEncoder23;
 import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder;
 import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder;
 import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
@@ -24,6 +25,7 @@
 import org.geotools.data.Transaction;
 import org.geotools.data.jdbc.JDBCUtils;
 import org.geotools.geometry.GeneralEnvelope;
+import org.jdom.Element;
 import org.opengis.feature.type.FeatureType;
 import org.opengis.feature.type.GeometryDescriptor;
 import org.quartz.JobDataMap;
@@ -528,21 +530,19 @@
             }
             XGeosDataConfig xgeosConfig = (XGeosDataConfig) value;
 
-            StringBuilder sbFullName = new StringBuilder(namespace);
-            sbFullName.append(':');
-
             StringBuilder sbLayerName = new StringBuilder(namespace);
+            sbLayerName.append(':');
             sbLayerName.append("fsc-");
             sbLayerName.append(xgeosConfig.getFSC()).append("-c");
             sbLayerName.append(xgeosConfig.getCOMP()).append("-l");
             sbLayerName.append(xgeosConfig.getLEV()).append("-w");
             sbLayerName.append(xgeosConfig.getWEIGHT());
+
             String layerName = sbLayerName.toString();
+            sbLayers.append(layerName);
             if (lgEncoder != null) {
                 lgEncoder.addLayer(layerName);
             }
-            sbFullName.append(layerName);
-            sbLayers.append(sbFullName.toString());
         }
 
         return sbLayers.toString();
@@ -585,16 +585,8 @@
                 return;
             }
 
-            Set<String> styles = new TreeSet<String>();
-            RESTStyleList styleList = reader.getStyles();
-            for (NameLinkElem style : styleList) {
-                styles.add(style.getName());
-            }
-            RESTLayerList layers = reader.getLayers();
-            for (NameLinkElem layer : layers) {
-                layer.getName();
-            }
-            // Map styles = dataConfig.getStyles();
+            List<String> styleList = reader.getStyles().getNames();
+            Set<String> styles = new TreeSet<String>(styleList);
 
             XGeosDataConfigMapping mapping = getConfigMapping();
             HashMap<String, String> defaultStyles = buildDefaultStylesMapping(mapping);
@@ -817,13 +809,7 @@
         GeoServerRESTReader reader = manager.getReader();
         GeoServerRESTPublisher publisher = manager.getPublisher();
 
-        RESTLayerList layers = reader.getLayers();
-
-        ArrayList<String> baseMapNames = new ArrayList<String>();
-        for (NameLinkElem elm : layers) {
-            baseMapNames.add(elm.getName());
-        }
-
+        List<String> baseMapNames = reader.getLayers().getNames();
         XGeosDataConfigMapping configMapping = getConfigMapping();
         if (configMapping.getMapping().isEmpty()) {
             logger.warn("XGeosDataConfigMapping is empty! Pleace check XGeosDataConfig file.");
@@ -853,14 +839,27 @@
 
         for (Object key : defaultMapNames) {
             List configs = (List) configMapping.getMapping().get(key);
-            GSLayerGroupEncoder lge = new GSLayerGroupEncoder();
+            GSLayerGroupEncoder lge = new GSLayerGroupEncoder23() {
+                @Override
+                protected void addToRoot(Element... elements) {
+                    for (Element e : elements) {
+                        if (e != null) {
+                            getRoot().addContent(e.cloneContent());
+                        }
+                    }
+                }
+            };
+            lge.setBounds("EPSG:3826",293838.061931726,2758423.49415501,311845.457747425,2768966.72993585);
             String defaultLayerNames = buildDefaultWMSLayerNames(DEFAULT_NAMESPACE, configs, lge);
             logger.info(key + ":" + defaultLayerNames);
+            logger.info(lge.toString());
             // wmsConfig.getBaseMapLayers().put(key, defaultLayerNames);
             String layerGroupName = key.toString();
             RESTLayerGroup layerGroup = reader.getLayerGroup(DEFAULT_NAMESPACE, layerGroupName);
             if (layerGroup == null) {
-                publisher.createLayerGroup(DEFAULT_NAMESPACE, layerGroupName, lge);
+                if (!publisher.createLayerGroup(DEFAULT_NAMESPACE, layerGroupName, lge)) {
+                    logger.warn("Cannot create layergroups:" + layerGroupName + "-" + lge.toString());
+                }
             } else {
                 publisher.configureLayerGroup(DEFAULT_NAMESPACE, layerGroupName, lge);
 
@@ -876,14 +875,10 @@
         }
 
         GeoServerRESTReader reader = manager.getReader();
-        RESTLayerList layers = reader.getLayers();
-
+        List<String> layernames = reader.getLayers().getNames();
+        ArrayList<String> baseMapNames = new ArrayList<String>(layernames);
         // Map baseMapLayers = wmsConfig.getBaseMapLayers();
         // Map baseMapEnvelopes = wmsConfig.getBaseMapEnvelopes();
-        ArrayList<String> baseMapNames = new ArrayList<String>();
-        for (NameLinkElem elm : layers) {
-            baseMapNames.add(elm.getName());
-        }
 
         for (Object key : baseMapNames) {
             String baseMapTitle = (String) key;
@@ -894,7 +889,7 @@
                 // String baseLayersValue = (String) wmsConfig.getBaseMapLayers().get(baseMapTitle);
                 RESTLayerGroup layerGroup = reader.getLayerGroup(DEFAULT_NAMESPACE, baseMapTitle);
                 String baseLayersValue = layerGroup.getName();
-                        String[] layerNames = null;
+                String[] layerNames = null;
                 if (baseLayersValue != null) {
                     layerNames = baseLayersValue.split(",");
                 } else {

--
Gitblit v0.0.0-SNAPSHOT