annotate artifacts/src/main/java/org/dive4elements/river/utils/ArtifactMapfileGenerator.java @ 6332:f5bb53106ae8

Remove createBarriersLayer and createBarriers The generated mapfiles did not work and were just confusing. This looks like historical cruft that was never deleted. The real barrier mapfiles are created in the Floodmap state
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 13 Jun 2013 17:24:56 +0200
parents af13ceeba52a
children 74a437805e2a
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5309
diff changeset
9 package org.dive4elements.river.utils;
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
10
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5309
diff changeset
11 import org.dive4elements.artifacts.CallContext;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
12 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5309
diff changeset
13 import org.dive4elements.river.artifacts.access.RiverAccess;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5309
diff changeset
14 import org.dive4elements.river.artifacts.model.LayerInfo;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5309
diff changeset
15 import org.dive4elements.river.artifacts.model.map.WMSDBLayerFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5309
diff changeset
16 import org.dive4elements.river.artifacts.model.map.WMSLayerFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5309
diff changeset
17 import org.dive4elements.river.artifacts.model.map.WSPLGENLayerFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5309
diff changeset
18 import org.dive4elements.river.artifacts.resources.Resources;
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
19
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
20 import java.io.File;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
21 import java.io.FileNotFoundException;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
22 import java.io.IOException;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
23 import java.util.List;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
24
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
25 import org.apache.log4j.Logger;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
26 import org.apache.velocity.Template;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
27 import org.geotools.data.shapefile.ShpFiles;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
28 import org.geotools.data.shapefile.shp.ShapefileHeader;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
29 import org.geotools.data.shapefile.shp.ShapefileReader;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
30
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
31 public class ArtifactMapfileGenerator extends MapfileGenerator {
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
32
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
33 private static Logger logger = Logger.getLogger(ArtifactMapfileGenerator.class);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
34
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
35 @Override
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
36 protected String getVelocityLogfile() {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
37 return RiverUtils.getXPathString(RiverUtils.XPATH_FLOODMAP_VELOCITY_LOGFILE);
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
38 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
39
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
40 @Override
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
41 protected String getMapserverTemplatePath() {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
42 return RiverUtils.getXPathString(RiverUtils.XPATH_FLOODMAP_MAPSERVER_TEMPLATE_PATH);
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
43 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
44
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
45 @Override
5309
b55975761708 Changed visiblitiy of some methods. TODO: A lot of refactoring.
Raimund Renkert <rrenkert@intevation.de>
parents: 4994
diff changeset
46 public String getMapserverUrl() {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
47 return RiverUtils.getXPathString(RiverUtils.XPATH_FLOODMAP_MAPSERVER_URL);
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
48 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
49
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
50 /**
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
51 * Method which starts searching for meta information file and mapfile
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
52 * generation.
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
53 */
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
54 @Override
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
55 public void generate() throws IOException
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
56 {
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
57 File[] userDirs = getUserDirs();
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
58 List<String> layers = parseLayers(userDirs);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
59 logger.info("Found " + layers.size() + " layers for user mapfile.");
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
60
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
61 writeMapfile(layers);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
62 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
63
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
64 /**
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
65 * Creates a layer file used for Mapserver's mapfile which represents the
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
66 * floodmap.
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
67 *
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
68 * @param flys The D4EArtifact that owns <i>wms</i>.
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
69 * @param wms The WMSLayerFacet that contains information for the layer.
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
70 */
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
71 public void createUeskLayer(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
72 D4EArtifact flys,
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
73 WSPLGENLayerFacet wms,
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
74 String style,
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
75 CallContext context
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
76 ) throws FileNotFoundException, IOException
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
77 {
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
78 logger.debug("createUeskLayer");
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
79
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
80 LayerInfo layerinfo = new LayerInfo();
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
81 layerinfo.setName(MS_WSPLGEN_PREFIX + flys.identifier());
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
82 layerinfo.setType("POLYGON");
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
83 layerinfo.setDirectory(flys.identifier());
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
84 layerinfo.setData(WSPLGEN_RESULT_SHAPE);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
85 layerinfo.setTitle(Resources.getMsg(Resources.getLocale(context.getMeta()),
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
86 "floodmap.uesk",
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
87 "Floodmap"));
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
88 layerinfo.setStyle(style);
4994
63617e142dfe Quick-fix for floodmaps. Use the correct projection for DGM.
Raimund Renkert <rrenkert@intevation.de>
parents: 4702
diff changeset
89 RiverAccess access = new RiverAccess(flys);
63617e142dfe Quick-fix for floodmaps. Use the correct projection for DGM.
Raimund Renkert <rrenkert@intevation.de>
parents: 4702
diff changeset
90 String river = access.getRiver();
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
91 layerinfo.setSrid(RiverUtils.getRiverDGMSrid(river));
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
92
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
93 String name = MS_LAYER_PREFIX + wms.getName();
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
94
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
95 Template template = getTemplateByName(WSPLGEN_LAYER_TEMPLATE);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
96 if (template == null) {
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
97 logger.warn("Template '" + WSPLGEN_LAYER_TEMPLATE + "' found.");
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
98 return;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
99 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
100
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
101 try {
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
102 File dir = new File(getShapefileBaseDir(), flys.identifier());
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
103 writeLayer(layerinfo, new File(dir, name), template);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
104 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
105 catch (FileNotFoundException fnfe) {
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
106 logger.error(fnfe, fnfe);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
107 logger.warn("Unable to write layer: " + name);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
108 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
109 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
110
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
111
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
112 /**
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
113 * Creates a layer file used for Mapserver's mapfile which represents the
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
114 * shape files uploaded by the user.
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
115 *
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
116 * @param flys The D4EArtifact that owns <i>wms</i>.
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
117 * @param wms The WMSLayerFacet that contains information for the layer.
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
118 */
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
119 public void createUserShapeLayer(D4EArtifact flys, WMSLayerFacet wms)
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
120 throws FileNotFoundException, IOException
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
121 {
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
122 logger.debug("createUserShapeLayer");
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
123
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
124 String uuid = flys.identifier();
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
125 File dir = new File(getShapefileBaseDir(), uuid);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
126 File test = new File(dir, WSPLGEN_USER_SHAPE);
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
127
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
128 if (!test.exists() || !test.canRead()) {
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
129 logger.debug("No user layer existing.");
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
130 return;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
131 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
132
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
133 File userShape = new File(dir, WSPLGEN_USER_SHAPE);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
134 ShpFiles sf = new ShpFiles(userShape);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
135 ShapefileReader sfr = new ShapefileReader(sf, true, false, null);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
136 ShapefileHeader sfh = sfr.getHeader();
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
137
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
138 String group = uuid + MS_USERSHAPE_PREFIX;
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
139 String groupTitle = "I18N_USER_SHAPE_TITLE";
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
140
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
141 LayerInfo info = new LayerInfo();
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
142 info.setName(MS_USERSHAPE_PREFIX + uuid);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
143 if (sfh.getShapeType().isLineType()) {
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
144 info.setType("LINE");
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
145 }
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
146 else if (sfh.getShapeType().isPolygonType()) {
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
147 info.setType("POLYGON");
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
148 }
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
149 else {
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
150 return;
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
151 }
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
152 info.setDirectory(uuid);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
153 info.setData(WSPLGEN_USER_SHAPE);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
154 info.setTitle("I18N_USER_SHAPE");
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
155 info.setGroup(group);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
156 info.setGroupTitle(groupTitle);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
157 info.setSrid(wms.getSrid());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
158
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
159 String nameUser = MS_LAYER_PREFIX + wms.getName();
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
160
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
161 Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE);
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
162 if (tpl == null) {
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
163 logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found.");
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
164 return;
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
165 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
166
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
167 try {
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
168 writeLayer(info, new File(dir, nameUser), tpl);
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
169 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
170 catch (FileNotFoundException fnfe) {
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
171 logger.error(fnfe, fnfe);
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
172 logger.warn("Unable to write layer: " + nameUser);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
173 }
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
174
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
175 }
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
176
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
177
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
178 /**
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
179 * Creates a layer file used for Mapserver's mapfile which represents
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
180 * geometries from database.
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
181 *
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
182 * @param flys The D4EArtifact that owns <i>wms</i>.
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
183 * @param wms The WMSLayerFacet that contains information for the layer.
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
184 */
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
185 public void createDatabaseLayer(
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
186 D4EArtifact flys,
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
187 WMSDBLayerFacet wms,
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
188 String style
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
189 )
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
190 throws FileNotFoundException, IOException
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
191 {
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
192 logger.debug("createDatabaseLayer");
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
193
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
194 LayerInfo layerinfo = new LayerInfo();
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
195 layerinfo.setName(wms.getName() + "-" + flys.identifier());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
196 layerinfo.setType(wms.getGeometryType());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
197 layerinfo.setFilter(wms.getFilter());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
198 layerinfo.setData(wms.getData());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
199 layerinfo.setTitle(wms.getDescription());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
200 layerinfo.setStyle(style);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
201 if(wms.getExtent() != null) {
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
202 layerinfo.setExtent(GeometryUtils.jtsBoundsToOLBounds(wms.getExtent()));
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
203 }
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
204 layerinfo.setConnection(wms.getConnection());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
205 layerinfo.setConnectionType(wms.getConnectionType());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
206 layerinfo.setLabelItem(wms.getLabelItem());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
207 layerinfo.setSrid(wms.getSrid());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
208
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
209 String name = MS_LAYER_PREFIX + wms.getName();
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
210
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
211 Template template = getTemplateByName(DB_LAYER_TEMPLATE);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
212 if (template == null) {
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
213 logger.warn("Template '" + DB_LAYER_TEMPLATE + "' found.");
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
214 return;
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
215 }
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
216
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
217 try {
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
218 File dir = new File(getShapefileBaseDir(), flys.identifier());
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
219 writeLayer(layerinfo, new File(dir, name), template);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
220 }
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
221 catch (FileNotFoundException fnfe) {
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
222 logger.error(fnfe, fnfe);
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
223 logger.warn("Unable to write layer: " + name);
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
224 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
225 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
226
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
227 @Override
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
228 protected String getMapfilePath() {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
229 return RiverUtils.getXPathString(RiverUtils.XPATH_FLOODMAP_MAPFILE_PATH);
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
230 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
231
6332
f5bb53106ae8 Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents: 5994
diff changeset
232 @Override
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
233 protected String getMapfileTemplate() {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
234 return RiverUtils.getXPathString(RiverUtils.XPATH_FLOODMAP_MAPFILE_TEMPLATE);
4702
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
235 }
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
236
13abfb1bcb75 Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff changeset
237 }

http://dive4elements.wald.intevation.org