diff flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java @ 1792:49ad801076e4

Enabled the MapGenerator to create WMS layers with database datastore - riveraxis is the first layer that is no longer fetched from static WMS service but from user specific one. flys-artifacts/trunk@3115 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 28 Oct 2011 13:48:02 +0000
parents ef2300b450bf
children 1636686070f7
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java	Fri Oct 28 13:39:37 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java	Fri Oct 28 13:48:02 2011 +0000
@@ -1,5 +1,6 @@
 package de.intevation.flys.exports;
 
+import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -24,6 +25,7 @@
 
 import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.model.FacetTypes;
+import de.intevation.flys.artifacts.model.WMSDBLayerFacet;
 import de.intevation.flys.artifacts.model.WMSLayerFacet;
 import de.intevation.flys.utils.GeometryUtils;
 import de.intevation.flys.utils.MapfileGenerator;
@@ -106,6 +108,9 @@
             else if (FLOODMAP_BARRIERS.equals(name)) {
                 createBarriersLayer(flys, wms);
             }
+            else {
+                createDatabaseLayer(flys, wms);
+            }
         }
         else {
             logger.warn("Facet not supported: " + nativeFacet.getClass());
@@ -139,6 +144,36 @@
     }
 
 
+    protected void createDatabaseLayer(FLYSArtifact flys, WMSLayerFacet wms) {
+        logger.debug("createDatabaseLayer for facet: " + wms.getName());
+
+        MapfileGenerator mfg = MapfileGenerator.getInstance();
+
+        try {
+            File baseDir = mfg.getShapefileBaseDir();
+            File artDir  = new File(baseDir, flys.identifier());
+
+            if (artDir != null && !artDir.exists()) {
+                logger.debug("Create new directory: " + artDir.getPath());
+                artDir.mkdir();
+            }
+
+            if (wms instanceof WMSDBLayerFacet) {
+                mfg.createDatabaseLayer(flys, (WMSDBLayerFacet) wms);
+            }
+            else {
+                logger.warn("Cannot create DB layer from: " + wms.getClass());
+            }
+        }
+        catch (FileNotFoundException fnfe) {
+            logger.error(fnfe, fnfe);
+        }
+        catch (IOException ioe) {
+            logger.error(ioe, ioe);
+        }
+    }
+
+
     @Override
     public void generate()
     throws IOException

http://dive4elements.wald.intevation.org