Mercurial > mxd2map
annotate src/java/de/intevation/mxd/writer/MapScriptWriter.java @ 129:0b119169618f
Insert TEMPLATE entry for GFI request.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Mon, 20 Jun 2011 12:20:48 +0200 |
parents | 1616622a8c8d |
children | 5991c1f90f91 |
rev | line source |
---|---|
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.mxd.writer; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import org.apache.log4j.Logger; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 import org.w3c.dom.Document; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import org.w3c.dom.Element; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import org.w3c.dom.NodeList; |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
8 |
98
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
9 import java.io.File; |
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
10 |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import javax.xml.xpath.XPathConstants; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import edu.umn.gis.mapscript.mapObj; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 import edu.umn.gis.mapscript.layerObj; |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
15 import edu.umn.gis.mapscript.classObj; |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
16 |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 import edu.umn.gis.mapscript.MS_UNITS; |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
18 import edu.umn.gis.mapscript.MS_LAYER_TYPE; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 import de.intevation.mxd.utils.XMLUtils; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 /** |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
23 * The Mapfile Writer. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
24 * This Writer uses the MapScript Java API to create Mapfiles from a DOM. |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 * |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 */ |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 public class MapScriptWriter |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 implements IWriter |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 { |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
31 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
32 * The Logger. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
33 */ |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
34 private static final Logger logger = Logger.getLogger(MapScriptWriter.class); |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
35 |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
36 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
37 * Private member. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
38 */ |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 private Document root; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 private mapObj map; |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
41 private String mapFilename; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 public MapScriptWriter() { |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
44 map = new mapObj(""); |
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
45 mapFilename = ""; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
48 public MapScriptWriter(String templ, String filename) { |
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
49 map = new mapObj(templ); |
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
50 mapFilename = filename; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
53 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
54 * Write the mapfile. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
55 * @param doc The root document containin the map attributes. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
56 * |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
57 * @return Currently always true. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
58 */ |
120
11d63bf00326
Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
102
diff
changeset
|
59 public boolean write(Document doc) { |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 logger.debug("write()"); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 this.root = doc; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 //Get the filename. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 Element fileNode = (Element)XMLUtils.xpath( |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 root, |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 "/mxd/file", |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 XPathConstants.NODE); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 //Write the map attributes. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 writeMap(); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
70 //Write the layers. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
71 writeLayer(); |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 //Save the map. |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
73 mapObj cloneMap = map.cloneMap(); |
55
f0c02ff120d6
Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents:
53
diff
changeset
|
74 cloneMap.save(mapFilename); |
120
11d63bf00326
Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
102
diff
changeset
|
75 logger.info("Mapfile successfully created."); |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 return true; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
79 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
80 * Create the map object and set the attributes. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
81 */ |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 private void writeMap() { |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 logger.debug("writeMap()"); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 //Get the map. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 Element mapNode = (Element)XMLUtils.xpath( |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 root, |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 "/mxd/map", |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 XPathConstants.NODE); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 //Set the name. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
91 map.setName(mapNode.getAttribute("name")); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
92 map.setMetaData("wms_title", mapNode.getAttribute("name")); |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 //Set the extent. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 map.setExtent( |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
95 Double.parseDouble(mapNode.getAttribute("extent_min_x")), |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
96 Double.parseDouble(mapNode.getAttribute("extent_min_y")), |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
97 Double.parseDouble(mapNode.getAttribute("extent_max_x")), |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
98 Double.parseDouble(mapNode.getAttribute("extent_max_y"))); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
99 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
100 //Set the units. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
101 String units = mapNode.getAttribute("units"); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
102 MS_UNITS msu; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
103 if(units.equals("feet")) { |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
104 msu = MS_UNITS.MS_FEET; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
105 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
106 else if(units.equals("inches")) { |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
107 msu = MS_UNITS.MS_INCHES; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
108 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
109 else if(units.equals("kilometers")) { |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
110 msu = MS_UNITS.MS_KILOMETERS; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
111 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
112 else if(units.equals("meters")) { |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
113 msu = MS_UNITS.MS_METERS; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
114 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
115 else if(units.equals("miles")) { |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
116 msu = MS_UNITS.MS_MILES; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
117 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
118 else if(units.equals("nauticalmiles")) { |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
119 msu = MS_UNITS.MS_NAUTICALMILES; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
120 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
121 else if(units.equals("points")) { |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
122 msu = MS_UNITS.MS_PIXELS; |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
123 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
124 else { |
57
8da6555f1c12
Set the projection "EPSG:31467" and units "METERS" as default values.
Raimund Renkert <rrenkert@intevation.de>
parents:
55
diff
changeset
|
125 msu = MS_UNITS.MS_METERS; |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
126 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
127 map.setUnits(msu); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
128 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
129 //TODO: Find out whats the correct scale value. |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
130 //map.setScaledenom(Double.parseDouble(mapNode.getAttribute("scale"))); |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
131 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
132 |
43
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
133 /** |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
134 * Create layer objects and set the attributes. |
ef7ca23c4233
Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents:
42
diff
changeset
|
135 */ |
120
11d63bf00326
Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
102
diff
changeset
|
136 private void writeLayer() { |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
137 logger.debug("writeLayer()"); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
138 Element mapNode = (Element)XMLUtils.xpath( |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
139 root, |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
140 "/mxd/map", |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
141 XPathConstants.NODE); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
142 NodeList list = mapNode.getElementsByTagName("layer"); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
143 for(int i = 0; i < list.getLength(); i++) { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
144 Element layerElement = (Element)list.item(i); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
145 layerObj layer = new layerObj(map); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
146 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
147 //The layer name. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
148 layer.setName(layerElement.getAttribute("name")); |
128
1616622a8c8d
Insert metadata for layer title for getCapabilities request.
Raimund Renkert <rrenkert@intevation.de>
parents:
127
diff
changeset
|
149 layer.setMetaData("wms_title", layerElement.getAttribute("name")); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
150 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
151 //The layer status. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
152 String stat = layerElement.getAttribute("status"); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
153 if (stat.equals("on")) { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
154 layer.setStatus(1); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
155 } |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
156 else { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
157 layer.setStatus(0); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
158 } |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
159 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
160 //The scale. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
161 double maxScale = |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
162 Double.parseDouble(layerElement.getAttribute("max_scale")); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
163 double minScale = |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
164 Double.parseDouble(layerElement.getAttribute("min_scale")); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
165 layer.setMaxscaledenom(maxScale); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
166 layer.setMinscaledenom(minScale); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
167 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
168 //The layer type. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
169 String type = layerElement.getAttribute("type"); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
170 if(type.equals("point")) { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
171 layer.setType(MS_LAYER_TYPE.MS_LAYER_POINT); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
172 } |
62
e468cf8701ea
Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
59
diff
changeset
|
173 else if (type.equals("line")) { |
e468cf8701ea
Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
59
diff
changeset
|
174 layer.setType(MS_LAYER_TYPE.MS_LAYER_LINE); |
e468cf8701ea
Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents:
59
diff
changeset
|
175 } |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
176 else if (type.equals("polygon")) { |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
177 layer.setType(MS_LAYER_TYPE.MS_LAYER_POLYGON); |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
178 } |
102
3ca2ec55fb3b
Set TILEITEM to an empty string.
Raimund Renkert <rrenkert@intevation.de>
parents:
99
diff
changeset
|
179 layer.setTileitem(""); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
180 |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
181 //The layer datasource. |
98
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
182 String datasource = ""; |
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
183 if(layerElement.hasAttribute("workspace")) { |
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
184 datasource = layerElement.getAttribute("workspace"); |
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
185 datasource += File.separator; |
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
186 } |
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
187 datasource += layerElement.getAttribute("data_source"); |
4696d0769f9c
Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents:
97
diff
changeset
|
188 layer.setData(datasource); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
189 |
129
0b119169618f
Insert TEMPLATE entry for GFI request.
Raimund Renkert <rrenkert@intevation.de>
parents:
128
diff
changeset
|
190 layer.setTemplate("PleaseInsertAValidTemplateForGFI"); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
191 //Write classes. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
192 writeClass(layer, layerElement); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
193 } |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
194 |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
195 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
196 |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
197 /** |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
198 * Adds the classes to the layer. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
199 * @param layer Mapscript layer object. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
200 * @param layerElement Dom element containing the class attributes. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
201 */ |
120
11d63bf00326
Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
102
diff
changeset
|
202 private void writeClass(layerObj layer, Element layerElement) { |
87
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
203 logger.debug("writeClass(layerObj, Element)"); |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
204 //Get all renderer elements (renderer in arcgis equals class in the |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
205 //mapfile.) |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
206 NodeList list = layerElement.getElementsByTagName("renderer"); |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
207 |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
208 //Create all found class objects and write the symbols and styles for |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
209 //each class. |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
210 for(int i = 0; i < list.getLength(); i++) { |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
211 Element classElement = (Element)list.item(i); |
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
212 classObj co = new classObj(layer); |
124
0f5819732288
Set label text as class name in mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
120
diff
changeset
|
213 String name = classElement.getAttribute("label"); |
99
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
214 if (name.equals("")) { |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
215 name = layerElement.getAttribute("name"); |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
216 if (list.getLength() > 1) { |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
217 name += "-" + i; |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
218 } |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
219 } |
d6d2a4058ebf
Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents:
98
diff
changeset
|
220 co.setName (name); |
44
9b5fb5e5914d
Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
43
diff
changeset
|
221 if(classElement.hasAttribute("field_count")) { |
9b5fb5e5914d
Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
43
diff
changeset
|
222 int count = |
9b5fb5e5914d
Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
43
diff
changeset
|
223 Integer.parseInt(classElement.getAttribute("field_count")); |
126
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
224 int type = 0; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
225 try { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
226 Double.parseDouble(classElement.getAttribute("value")); |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
227 type = 1; |
44
9b5fb5e5914d
Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
43
diff
changeset
|
228 } |
126
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
229 catch(Exception e) { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
230 type = 2; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
231 } |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
232 if (type == 1) { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
233 co.setExpression(createDoubleExpression(classElement, count)); |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
234 } |
127
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
235 else if (type == 2) { |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
236 co.setExpression(createStringExpression(classElement, count)); |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
237 } |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
238 |
44
9b5fb5e5914d
Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents:
43
diff
changeset
|
239 } |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
240 //Write symbols and styles. |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
241 NodeList l = classElement.getChildNodes(); |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
242 for (int j = 0; j < l.getLength(); j++) { |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
243 Element elem = (Element)l.item(j); |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
244 |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
245 String type = layerElement.getAttribute("type"); |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
246 if(type.equals("point") && elem.getTagName().equals("symbol")) { |
87
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
247 MarkerStyleWriter swriter = new MarkerStyleWriter (this.map, co); |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
248 swriter.write (elem); |
87
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
249 } |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
250 else if(type.equals("line") && elem.getTagName().equals("symbol")) { |
95
1ae8e05b863f
Use the line style writer to write simple lines and marker lines.
Raimund Renkert <rrenkert@intevation.de>
parents:
91
diff
changeset
|
251 LineStyleWriter swriter = new LineStyleWriter (this.map, co); |
97
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
252 swriter.write (elem); |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
253 } |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
254 else if(type.equals("polygon") && elem.getTagName().equals("symbol")) { |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
255 FillStyleWriter swriter = new FillStyleWriter (this.map, co); |
18e4f143896b
Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
96
diff
changeset
|
256 swriter.write (elem); |
87
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
257 } |
7d4cf2db43f1
Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
258 } |
42
395307e8b7ee
First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents:
41
diff
changeset
|
259 } |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
260 } |
126
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
261 |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
262 private String createDoubleExpression (Element classElement, int count) { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
263 String exp = ""; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
264 String op = classElement.getAttribute("expression_operator"); |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
265 String op1 = ""; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
266 String op2 = ""; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
267 if (op.equals("<=")) { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
268 op1 = ">="; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
269 op2 = op; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
270 for(int j = 0; j < count; j++) { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
271 if (classElement.getAttribute("min_value").equals( |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
272 classElement.getAttribute("value"))) { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
273 exp = "([" + |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
274 classElement.getAttribute( |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
275 "expression_field_" + j) + |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
276 "] == " + |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
277 classElement.getAttribute("value") + |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
278 ")"; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
279 } |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
280 else { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
281 exp = "(["; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
282 exp += classElement.getAttribute( |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
283 "expression_field_" + j); |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
284 exp += "] " + op1; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
285 exp += " " + classElement.getAttribute("min_value"); |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
286 exp += " AND [" + classElement.getAttribute( |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
287 "expression_field_" + j); |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
288 exp += "] " + op2 + " "; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
289 exp += classElement.getAttribute("value"); |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
290 exp += ")"; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
291 } |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
292 } |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
293 } |
127
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
294 else if (op.equals("=")) { |
126
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
295 op1 = op; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
296 for(int j = 0; j < count; j++) { |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
297 exp = "([" + |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
298 classElement.getAttribute("expression_field_" + j) + |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
299 "] == " + |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
300 classElement.getAttribute("value") + ")"; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
301 } |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
302 } |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
303 return exp; |
ff0354265a7d
Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents:
124
diff
changeset
|
304 } |
127
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
305 |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
306 private String createStringExpression (Element classElement, int count) { |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
307 String exp = ""; |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
308 String op = classElement.getAttribute("expression_operator"); |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
309 if (op.equals("=")) { |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
310 for(int j = 0; j < count; j++) { |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
311 exp = "(\"["; |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
312 exp += classElement.getAttribute( |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
313 "expression_field_" + j); |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
314 exp += "]\" " + op; |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
315 exp += " \"" + classElement.getAttribute("value"); |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
316 exp += "\")"; |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
317 } |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
318 } |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
319 return exp; |
5ba8bf865dc7
Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents:
126
diff
changeset
|
320 } |
41
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
321 } |
60ed2164035a
Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
322 |