Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/utils/ArtifactMapfileGenerator.java @ 6833:20f98087664d
(issue657) Prevent errornous recreation of usershape mapfile fragment.
This is a hotfix for now to get at least barriers.zip working again.
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Thu, 15 Aug 2013 13:35:18 +0200 |
parents | 8c7433b8656d |
children | d4b9fe13c9b8 |
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; |
6831
8c7433b8656d
Backed out changeset 74a437805e2a
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6826
diff
changeset
|
19 |
8c7433b8656d
Backed out changeset 74a437805e2a
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6826
diff
changeset
|
20 import java.io.File; |
8c7433b8656d
Backed out changeset 74a437805e2a
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6826
diff
changeset
|
21 import java.io.FileNotFoundException; |
8c7433b8656d
Backed out changeset 74a437805e2a
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6826
diff
changeset
|
22 import java.io.IOException; |
8c7433b8656d
Backed out changeset 74a437805e2a
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6826
diff
changeset
|
23 import java.util.List; |
8c7433b8656d
Backed out changeset 74a437805e2a
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6826
diff
changeset
|
24 |
8c7433b8656d
Backed out changeset 74a437805e2a
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6826
diff
changeset
|
25 import org.apache.log4j.Logger; |
8c7433b8656d
Backed out changeset 74a437805e2a
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6826
diff
changeset
|
26 import org.apache.velocity.Template; |
4702
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 |
6833
20f98087664d
(issue657) Prevent errornous recreation of usershape mapfile fragment.
Christian Lins <christian.lins@intevation.de>
parents:
6831
diff
changeset
|
138 String group = MS_USERSHAPE_PREFIX + uuid; |
6332
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(); |
6833
20f98087664d
(issue657) Prevent errornous recreation of usershape mapfile fragment.
Christian Lins <christian.lins@intevation.de>
parents:
6831
diff
changeset
|
142 info.setName(MS_LAYER_PREFIX + FloodMapState.WSPLGEN_USER_RGD + uuid); |
6332
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 |
6833
20f98087664d
(issue657) Prevent errornous recreation of usershape mapfile fragment.
Christian Lins <christian.lins@intevation.de>
parents:
6831
diff
changeset
|
159 //String nameUser = MS_LAYER_PREFIX + wms.getName(); |
20f98087664d
(issue657) Prevent errornous recreation of usershape mapfile fragment.
Christian Lins <christian.lins@intevation.de>
parents:
6831
diff
changeset
|
160 // TODO: This rewrites the user-rgd mapfile fragment generated by |
20f98087664d
(issue657) Prevent errornous recreation of usershape mapfile fragment.
Christian Lins <christian.lins@intevation.de>
parents:
6831
diff
changeset
|
161 // HWSBarrierState. Otherwise we would have to fragments with same |
20f98087664d
(issue657) Prevent errornous recreation of usershape mapfile fragment.
Christian Lins <christian.lins@intevation.de>
parents:
6831
diff
changeset
|
162 // layer name. Should be refactored... |
20f98087664d
(issue657) Prevent errornous recreation of usershape mapfile fragment.
Christian Lins <christian.lins@intevation.de>
parents:
6831
diff
changeset
|
163 String nameUser = MS_LAYER_PREFIX + "user-rgd"; |
4702
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
164 |
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
165 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
|
166 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
|
167 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
|
168 return; |
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 |
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
171 try { |
6332
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
172 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
|
173 } |
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
174 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
|
175 logger.error(fnfe, fnfe); |
6332
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
176 logger.warn("Unable to write layer: " + nameUser); |
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 } |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
180 |
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 /** |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
183 * 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
|
184 * geometries from database. |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
185 * |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
186 * @param flys The D4EArtifact that owns <i>wms</i>. |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
187 * @param wms The WMSLayerFacet that contains information for the layer. |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
188 */ |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
189 public void createDatabaseLayer( |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
190 D4EArtifact flys, |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
191 WMSDBLayerFacet wms, |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
192 String style |
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 throws FileNotFoundException, IOException |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
195 { |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
196 logger.debug("createDatabaseLayer"); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
197 |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
198 LayerInfo layerinfo = new LayerInfo(); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
199 layerinfo.setName(wms.getName() + "-" + flys.identifier()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
200 layerinfo.setType(wms.getGeometryType()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
201 layerinfo.setFilter(wms.getFilter()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
202 layerinfo.setData(wms.getData()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
203 layerinfo.setTitle(wms.getDescription()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
204 layerinfo.setStyle(style); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
205 if(wms.getExtent() != null) { |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
206 layerinfo.setExtent(GeometryUtils.jtsBoundsToOLBounds(wms.getExtent())); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
207 } |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
208 layerinfo.setConnection(wms.getConnection()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
209 layerinfo.setConnectionType(wms.getConnectionType()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
210 layerinfo.setLabelItem(wms.getLabelItem()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
211 layerinfo.setSrid(wms.getSrid()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
212 |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
213 String name = MS_LAYER_PREFIX + wms.getName(); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
214 |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
215 Template template = getTemplateByName(DB_LAYER_TEMPLATE); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
216 if (template == null) { |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
217 logger.warn("Template '" + DB_LAYER_TEMPLATE + "' found."); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
218 return; |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
219 } |
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 try { |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
222 File dir = new File(getShapefileBaseDir(), flys.identifier()); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
223 writeLayer(layerinfo, new File(dir, name), template); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
224 } |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
225 catch (FileNotFoundException fnfe) { |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
226 logger.error(fnfe, fnfe); |
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
227 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
|
228 } |
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
229 } |
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
230 |
6332
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
231 @Override |
4702
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
232 protected String getMapfilePath() { |
5865
73da40528cf2
River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
233 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
|
234 } |
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
235 |
6332
f5bb53106ae8
Remove createBarriersLayer and createBarriers
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
236 @Override |
4702
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
237 protected String getMapfileTemplate() { |
5865
73da40528cf2
River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
238 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
|
239 } |
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
240 |
13abfb1bcb75
Fix typo in class names and correct file path in floodmap.xml.
Christian Lins <christian.lins@intevation.de>
parents:
diff
changeset
|
241 } |