annotate flys-artifacts/src/main/java/de/intevation/flys/mapserver/ArtifactMapfileGenerator.java @ 5022:a9243df307b1 mapgenfix

Move all classes of mapfile generation to de.intevation.flys.mapserver package.
author Christian Lins <christian.lins@intevation.de>
date Tue, 19 Feb 2013 13:41:20 +0100
parents
children 1da61095040c
rev   line source
5022
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.mapserver;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
2
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
3 import de.intevation.artifacts.CallContext;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
4 import de.intevation.flys.artifacts.FLYSArtifact;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
5 import de.intevation.flys.artifacts.access.RiverAccess;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
6 import de.intevation.flys.artifacts.model.LayerInfo;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
7 import de.intevation.flys.artifacts.model.map.WMSDBLayerFacet;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
8 import de.intevation.flys.artifacts.model.map.WMSLayerFacet;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
9 import de.intevation.flys.artifacts.model.map.WSPLGENLayerFacet;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
10 import de.intevation.flys.artifacts.resources.Resources;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
11 import de.intevation.flys.utils.FLYSUtils;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
12 import de.intevation.flys.utils.GeometryUtils;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
13
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
14 import java.io.File;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
15 import java.io.FileNotFoundException;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
16 import java.io.IOException;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
17 import java.util.List;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
18
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
19 import org.apache.log4j.Logger;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
20 import org.apache.velocity.Template;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
21 import org.geotools.data.shapefile.ShpFiles;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
22 import org.geotools.data.shapefile.shp.ShapefileHeader;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
23 import org.geotools.data.shapefile.shp.ShapefileReader;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
24
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
25 public class ArtifactMapfileGenerator extends MapfileGenerator {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
26
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
27 private static Logger logger = Logger.getLogger(ArtifactMapfileGenerator.class);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
28
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
29 @Override
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
30 protected String getVelocityLogfile() {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
31 return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_VELOCITY_LOGFILE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
32 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
33
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
34 @Override
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
35 protected String getMapserverTemplatePath() {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
36 return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPSERVER_TEMPLATE_PATH);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
37 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
38
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
39 @Override
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
40 protected String getMapserverUrl() {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
41 return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPSERVER_URL);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
42 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
43
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
44 /**
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
45 * Method which starts searching for meta information file and mapfile
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
46 * generation.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
47 */
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
48 @Override
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
49 public void generate() throws IOException
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
50 {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
51 File[] userDirs = getUserDirs();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
52 List<String> layers = parseLayers(userDirs);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
53 logger.info("Found " + layers.size() + " layers for user mapfile.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
54
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
55 writeMapfile(layers);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
56 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
57
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
58 /**
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
59 * Creates a layer file used for Mapserver's mapfile which represents the
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
60 * floodmap.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
61 *
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
62 * @param flys The FLYSArtifact that owns <i>wms</i>.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
63 * @param wms The WMSLayerFacet that contains information for the layer.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
64 */
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
65 public void createUeskLayer(
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
66 FLYSArtifact flys,
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
67 WSPLGENLayerFacet wms,
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
68 String style,
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
69 CallContext context
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
70 ) throws FileNotFoundException, IOException
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
71 {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
72 logger.debug("createUeskLayer");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
73
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
74 LayerInfo layerinfo = new LayerInfo();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
75 layerinfo.setName(MS_WSPLGEN_PREFIX + flys.identifier());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
76 layerinfo.setType("POLYGON");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
77 layerinfo.setDirectory(flys.identifier());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
78 layerinfo.setData(WSPLGEN_RESULT_SHAPE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
79 layerinfo.setTitle(Resources.getMsg(Resources.getLocale(context.getMeta()),
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
80 "floodmap.uesk",
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
81 "Floodmap"));
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
82 layerinfo.setStyle(style);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
83 RiverAccess access = new RiverAccess(flys);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
84 String river = access.getRiver();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
85 layerinfo.setSrid(FLYSUtils.getRiverDGMSrid(river));
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
86
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
87 String name = MS_LAYER_PREFIX + wms.getName();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
88
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
89 Template template = getTemplateByName(WSPLGEN_LAYER_TEMPLATE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
90 if (template == null) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
91 logger.warn("Template '" + WSPLGEN_LAYER_TEMPLATE + "' found.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
92 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
93 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
94
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
95 try {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
96 File dir = new File(getShapefileBaseDir(), flys.identifier());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
97 writeLayer(layerinfo, new File(dir, name), template);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
98 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
99 catch (FileNotFoundException fnfe) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
100 logger.error(fnfe, fnfe);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
101 logger.warn("Unable to write layer: " + name);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
102 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
103 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
104
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
105
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
106 /**
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
107 * Creates a layer file used for Mapserver's mapfile which represents the
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
108 * user defined barriers.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
109 *
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
110 * @param flys The FLYSArtifact that owns <i>wms</i>.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
111 * @param wms The WMSLayerFacet that contains information for the layer.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
112 */
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
113 public void createBarriersLayer(FLYSArtifact flys, WMSLayerFacet wms)
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
114 throws FileNotFoundException, IOException
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
115 {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
116 logger.debug("createBarriersLayer");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
117
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
118 //String uuid = flys.identifier();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
119 //File dir = new File(getShapefileBaseDir(), uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
120
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
121 createBarriersLineLayer(flys, wms);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
122 createBarriersPolygonLayer(flys, wms);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
123 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
124
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
125
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
126 protected void createBarriersLineLayer(
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
127 FLYSArtifact flys,
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
128 WMSLayerFacet wms
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
129 )
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
130 throws FileNotFoundException, IOException
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
131 {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
132 String uuid = flys.identifier();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
133 String group = MS_BARRIERS_PREFIX + uuid;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
134 String groupTitle = "I18N_BARRIERS_TITLE";
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
135
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
136 File dir = new File(getShapefileBaseDir(), uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
137 File test = new File(dir, WSPLGEN_LINES_SHAPE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
138
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
139 if (!test.exists() || !test.canRead()) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
140 logger.debug("No barrier line layer existing.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
141 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
142 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
143
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
144 LayerInfo lineInfo = new LayerInfo();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
145 lineInfo.setName(MS_LINE_PREFIX + uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
146 lineInfo.setType("LINE");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
147 lineInfo.setDirectory(uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
148 lineInfo.setData(WSPLGEN_LINES_SHAPE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
149 lineInfo.setTitle("I18N_LINE_SHAPE");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
150 lineInfo.setGroup(group);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
151 lineInfo.setGroupTitle(groupTitle);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
152 lineInfo.setSrid(wms.getSrid());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
153
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
154 String nameLines = MS_LAYER_PREFIX + wms.getName() + "-lines";
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
155
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
156 Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
157 if (tpl == null) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
158 logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
159 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
160 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
161
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
162 try {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
163 writeLayer(lineInfo, new File(dir, nameLines), tpl);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
164 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
165 catch (FileNotFoundException fnfe) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
166 logger.error(fnfe, fnfe);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
167 logger.warn("Unable to write layer: " + nameLines);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
168 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
169 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
170
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
171 protected void createBarriersPolygonLayer(
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
172 FLYSArtifact flys,
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
173 WMSLayerFacet wms
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
174 )
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
175 throws FileNotFoundException, IOException
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
176 {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
177 String uuid = flys.identifier();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
178 String group = uuid + MS_BARRIERS_PREFIX;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
179 String groupTitle = "I18N_BARRIERS_TITLE";
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
180
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
181 File dir = new File(getShapefileBaseDir(), uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
182 File test = new File(dir, WSPLGEN_POLYGONS_SHAPE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
183
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
184 if (!test.exists() || !test.canRead()) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
185 logger.debug("No barrier line layer existing.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
186 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
187 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
188
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
189 LayerInfo polygonInfo = new LayerInfo();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
190 polygonInfo.setName(MS_POLYGONS_PREFIX + uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
191 polygonInfo.setType("POLYGON");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
192 polygonInfo.setDirectory(uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
193 polygonInfo.setData(WSPLGEN_POLYGONS_SHAPE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
194 polygonInfo.setTitle("I18N_POLYGON_SHAPE");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
195 polygonInfo.setGroup(group);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
196 polygonInfo.setGroupTitle(groupTitle);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
197 polygonInfo.setSrid(wms.getSrid());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
198
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
199 String namePolygons = MS_LAYER_PREFIX + wms.getName() + "-polygons";
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
200
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
201 Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
202 if (tpl == null) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
203 logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
204 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
205 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
206
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
207 try {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
208 writeLayer(polygonInfo, new File(dir, namePolygons), tpl);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
209 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
210 catch (FileNotFoundException fnfe) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
211 logger.error(fnfe, fnfe);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
212 logger.warn("Unable to write layer: " + namePolygons);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
213 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
214 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
215
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
216
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
217 /**
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
218 * Creates a layer file used for Mapserver's mapfile which represents the
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
219 * shape files uploaded by the user.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
220 *
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
221 * @param flys The FLYSArtifact that owns <i>wms</i>.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
222 * @param wms The WMSLayerFacet that contains information for the layer.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
223 */
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
224 public void createUserShapeLayer(FLYSArtifact flys, WMSLayerFacet wms)
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
225 throws FileNotFoundException, IOException
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
226 {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
227 logger.debug("createUserShapeLayer");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
228
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
229 String uuid = flys.identifier();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
230 File dir = new File(getShapefileBaseDir(), uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
231 File test = new File(dir, WSPLGEN_USER_SHAPE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
232
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
233 if (!test.exists() || !test.canRead()) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
234 logger.debug("No user layer existing.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
235 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
236 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
237
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
238 File userShape = new File(dir, WSPLGEN_USER_SHAPE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
239 ShpFiles sf = new ShpFiles(userShape);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
240 ShapefileReader sfr = new ShapefileReader(sf, true, false, null);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
241 ShapefileHeader sfh = sfr.getHeader();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
242
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
243 String group = uuid + MS_USERSHAPE_PREFIX;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
244 String groupTitle = "I18N_USER_SHAPE_TITLE";
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
245
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
246 LayerInfo info = new LayerInfo();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
247 info.setName(MS_USERSHAPE_PREFIX + uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
248 if (sfh.getShapeType().isLineType()) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
249 info.setType("LINE");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
250 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
251 else if (sfh.getShapeType().isPolygonType()) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
252 info.setType("POLYGON");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
253 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
254 else {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
255 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
256 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
257 info.setDirectory(uuid);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
258 info.setData(WSPLGEN_USER_SHAPE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
259 info.setTitle("I18N_USER_SHAPE");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
260 info.setGroup(group);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
261 info.setGroupTitle(groupTitle);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
262 info.setSrid(wms.getSrid());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
263
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
264 String nameUser = MS_LAYER_PREFIX + wms.getName();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
265
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
266 Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
267 if (tpl == null) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
268 logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
269 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
270 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
271
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
272 try {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
273 writeLayer(info, new File(dir, nameUser), tpl);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
274 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
275 catch (FileNotFoundException fnfe) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
276 logger.error(fnfe, fnfe);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
277 logger.warn("Unable to write layer: " + nameUser);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
278 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
279
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
280 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
281
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
282
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
283 /**
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
284 * Creates a layer file used for Mapserver's mapfile which represents
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
285 * geometries from database.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
286 *
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
287 * @param flys The FLYSArtifact that owns <i>wms</i>.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
288 * @param wms The WMSLayerFacet that contains information for the layer.
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
289 */
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
290 public void createDatabaseLayer(
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
291 FLYSArtifact flys,
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
292 WMSDBLayerFacet wms,
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
293 String style
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
294 )
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
295 throws FileNotFoundException, IOException
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
296 {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
297 logger.debug("createDatabaseLayer");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
298
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
299 LayerInfo layerinfo = new LayerInfo();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
300 layerinfo.setName(wms.getName() + "-" + flys.identifier());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
301 layerinfo.setType(wms.getGeometryType());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
302 layerinfo.setFilter(wms.getFilter());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
303 layerinfo.setData(wms.getData());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
304 layerinfo.setTitle(wms.getDescription());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
305 layerinfo.setStyle(style);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
306 if(wms.getExtent() != null) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
307 layerinfo.setExtent(GeometryUtils.jtsBoundsToOLBounds(wms.getExtent()));
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
308 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
309 layerinfo.setConnection(wms.getConnection());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
310 layerinfo.setConnectionType(wms.getConnectionType());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
311 layerinfo.setLabelItem(wms.getLabelItem());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
312 layerinfo.setSrid(wms.getSrid());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
313
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
314 String name = MS_LAYER_PREFIX + wms.getName();
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
315
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
316 Template template = getTemplateByName(DB_LAYER_TEMPLATE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
317 if (template == null) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
318 logger.warn("Template '" + DB_LAYER_TEMPLATE + "' found.");
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
319 return;
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
320 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
321
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
322 try {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
323 File dir = new File(getShapefileBaseDir(), flys.identifier());
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
324 writeLayer(layerinfo, new File(dir, name), template);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
325 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
326 catch (FileNotFoundException fnfe) {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
327 logger.error(fnfe, fnfe);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
328 logger.warn("Unable to write layer: " + name);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
329 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
330 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
331
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
332 @Override
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
333 protected String getMapfilePath() {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
334 return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPFILE_PATH);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
335 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
336
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
337 @Override
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
338 protected String getMapfileTemplate() {
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
339 return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPFILE_TEMPLATE);
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
340 }
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
341
a9243df307b1 Move all classes of mapfile generation to de.intevation.flys.mapserver package.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
342 }

http://dive4elements.wald.intevation.org