Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/utils/MapfileGenerator.java @ 1781:ef2300b450bf
Modified the process to create mapfiles.
flys-artifacts/trunk@3103 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 28 Oct 2011 09:26:54 +0000 |
parents | 0156105222c9 |
children | 49ad801076e4 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/utils/MapfileGenerator.java Fri Oct 28 09:22:34 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/MapfileGenerator.java Fri Oct 28 09:26:54 2011 +0000 @@ -1,6 +1,7 @@ package de.intevation.flys.utils; import java.io.File; +import java.io.FilenameFilter; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; @@ -161,7 +162,8 @@ throws FileNotFoundException, IOException { File[] userDirs = getUserDirs(); - List<LayerInfo> layers = parseLayers(userDirs); + + List<String> layers = parseLayers(userDirs); logger.info("Found " + layers.size() + " layers for user mapfile."); @@ -307,22 +309,23 @@ - protected List<LayerInfo> parseLayers(File[] dirs) { - List<LayerInfo> layers = new ArrayList<LayerInfo>(); + protected List<String> parseLayers(File[] dirs) { + List<String> layers = new ArrayList<String>(); for (File dir: dirs) { - LayerInfo layer = parseUeskLayer(dir); - if (layer != null && layer.getData() != null) { - logger.debug(" Add WSPLGEN layer."); - layers.add(layer); - } + File[] layerFiles = dir.listFiles(new FilenameFilter() { + @Override + public boolean accept(File directory, String name) { + return name.startsWith(MS_LAYER_PREFIX); + } + }); - List<LayerInfo> barriers = parseBarriersLayers(dir); - int num = barriers != null ? barriers.size() : 0; - if (num > 0) { - if (barriers.get(0).getData() != null) { - logger.debug(" Add " + num + " BARRIERS layers."); - layers.addAll(barriers); + for (File layer: layerFiles) { + try { + layers.add(layer.getCanonicalPath()); + } + catch (IOException ioe) { + logger.warn(ioe, ioe); } } } @@ -331,22 +334,6 @@ } - protected LayerInfo parseUeskLayer(File dir) { - File uesk = new File(dir, WSPLGEN_RESULT_SHAPE); - - if (!uesk.exists() || !uesk.isFile()) { - return null; - } - - return new LayerInfo( - dir.getName() + MS_WSPLGEN_POSTFIX, - "POLYGON", - dir.getName(), - WSPLGEN_RESULT_SHAPE, - "I18N_WSPLGEN_RESULT"); - } - - /** * Creates a layer file used for Mapserver's mapfile which represents the * floodmap. @@ -448,47 +435,20 @@ } - protected List<LayerInfo> parseBarriersLayers(File dir) { - List<LayerInfo> barriers = new ArrayList<LayerInfo>(2); - - String group = dir.getName() + MS_BARRIERS_POSTFIX; - String groupTitle = "I18N_BARRIERS_TITLE"; - - File lines = new File(dir, WSPLGEN_LINES_SHAPE); - File polygons = new File(dir, WSPLGEN_POLYGONS_SHAPE); - - if (lines.exists() || lines.isFile()) { - barriers.add( - new LayerInfo( - dir.getName() + MS_LINE_POSTFIX, - "LINE", - dir.getName(), - WSPLGEN_LINES_SHAPE, - "I18N_LINE_SHAPE", - group, - groupTitle)); - } - - if (polygons.exists() || polygons.isFile()) { - barriers.add( - new LayerInfo( - dir.getName() + MS_POLYGONS_POSTFIX, - "POLYGON", - dir.getName(), - WSPLGEN_POLYGONS_SHAPE, - "I18N_POLYGON_SHAPE", - group, - groupTitle)); - } - - return barriers; - } - - + /** + * Creates a layer snippet which might be included in the mapfile. + * + * @param layerinfo A LayerInfo object that contains all necessary + * information to build a Mapserver LAYER section. + * @param dir The base dir for the LAYER snippet. + * @param filename The name of the file that is written. + * @param tpl The Velocity template which is used to create the LAYER + * section. + */ protected void writeLayer( LayerInfo layerinfo, File dir, - String name, + String filename, Template tpl ) throws FileNotFoundException @@ -496,10 +456,10 @@ if (logger.isDebugEnabled()) { logger.debug("Write layer for:"); logger.debug(" directory: " + dir.getName()); - logger.debug(" name: " + name); + logger.debug(" name: " + filename); } - File layer = new File(dir, name); + File layer = new File(dir, filename); Writer writer = null; try { @@ -537,7 +497,7 @@ * * @param layers Layer information. */ - protected void writeMapfile(List<LayerInfo> layers) { + protected void writeMapfile(List<String> layers) { String tmpMapName = "mapfile" + new Date().getTime(); File mapfile = new File( @@ -559,7 +519,7 @@ getShapefileBaseDir().getCanonicalPath()); context.put("CONFIGDIR", Config.getConfigDirectory().getCanonicalPath()); - context.put("LAYERS", fillLayerTemplates(layers)); + context.put("LAYERS", layers); Template mapTemplate = getMapfileTemplate(); if (mapTemplate == null) { @@ -598,29 +558,5 @@ } } } - - - protected List<String> fillLayerTemplates(List<LayerInfo> layers) { - List<String> evaluated = new ArrayList<String>(layers.size()); - - for (LayerInfo layer: layers) { - StringWriter writer = new StringWriter(); - - VelocityContext context = new VelocityContext(); - context.put("LAYER", layer); - - Template t = getTemplateByName("layer.vm"); - if (t == null) { - logger.warn("No 'layer.vm' template found."); - return evaluated; - } - - t.merge(context, writer); - - evaluated.add(writer.toString()); - } - - return evaluated; - } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :