annotate src/java/de/intevation/mxd/writer/MapScriptWriter.java @ 256:4dc2b9aa3c57

Added LGPL header.
author raimund renkert <raimund.renkert@intevation.de>
date Mon, 15 Aug 2011 15:03:44 +0200
parents cedb23deb057
children 1ac277053049
rev   line source
243
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
1 /*
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
2 * Copyright (c) 2011 by Intevation GmbH, Germany <info@intevation.de>
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
3 *
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
4 * This file is part of MXD2map.
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
5 *
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
6 * This program is free software under the LGPL (>=v2.1)
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
7 * Read the file LICENCE.txt coming with the software for details
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
8 * or visit http://www.gnu.org/licenses/ if it does not exist.
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
9 *
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
10 * MXD2map has been developed on behalf of the
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
11 * Bundesamt fuer Seeschifffahrt und Hydrographie (BSH) in Hamburg
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
12 * by Intevation GmbH.
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
13 *
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
14 * Authors:
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
15 * Raimund Renkert <raimund.renkert@intevation.de>
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
16 * Bjoern Schilberg <bjoern.schilberg@intevation.de>
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
17 * Stephan Holl <stephan.holl@intevation.de>
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
18 */
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
19
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 package de.intevation.mxd.writer;
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 import org.apache.log4j.Logger;
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
24 import java.awt.Color;
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
25
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 import org.w3c.dom.Document;
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 import org.w3c.dom.Element;
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 import org.w3c.dom.NodeList;
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
29
98
4696d0769f9c Write the absolute path to the data source of the layer.
Raimund Renkert <rrenkert@intevation.de>
parents: 97
diff changeset
30 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
31
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 import javax.xml.xpath.XPathConstants;
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 import edu.umn.gis.mapscript.mapObj;
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 import edu.umn.gis.mapscript.layerObj;
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
36 import edu.umn.gis.mapscript.classObj;
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
37 import edu.umn.gis.mapscript.labelObj;
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
38 import edu.umn.gis.mapscript.colorObj;
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
39 import edu.umn.gis.mapscript.fontSetObj;
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
40 import edu.umn.gis.mapscript.hashTableObj;
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
41
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 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
43 import edu.umn.gis.mapscript.MS_LAYER_TYPE;
130
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
44 import edu.umn.gis.mapscript.MS_CONNECTION_TYPE;
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
45 import edu.umn.gis.mapscript.MS_FONT_TYPE;
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
46 import edu.umn.gis.mapscript.MS_POSITIONS_ENUM;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 import de.intevation.mxd.utils.XMLUtils;
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 /**
43
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
51 * The Mapfile Writer.
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
52 * 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
53 *
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 */
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56 public class MapScriptWriter
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 implements IWriter
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 {
43
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
59 /**
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
60 * The Logger.
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
61 */
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
62 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
63
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
64 /**
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
65 * Private member.
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
66 */
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 private Document root;
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 private mapObj map;
55
f0c02ff120d6 Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents: 53
diff changeset
69 private String mapFilename;
130
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
70 private String MS_BINDIR = "c:/ms_6.1-dev/bin";
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
71 private String prefix = "";
170
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
72 private MS_UNITS units = MS_UNITS.MS_METERS;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
74 /**
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
75 * Default constructor.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
76 * Creates a mapscript writer object with an empty map.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
77 */
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78 public MapScriptWriter() {
55
f0c02ff120d6 Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents: 53
diff changeset
79 map = new mapObj("");
f0c02ff120d6 Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents: 53
diff changeset
80 mapFilename = "";
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 }
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
83 /**
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
84 * Contructor with template and output filename.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
85 * Creates a mapscript writer object with the given template that saves the
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
86 * map to the filename.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
87 *
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
88 * @param templ Mapfile template.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
89 * @param filename Output file name.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
90 */
55
f0c02ff120d6 Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents: 53
diff changeset
91 public MapScriptWriter(String templ, String filename) {
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
92 String path = System.getProperty("user.dir");
55
f0c02ff120d6 Read filenames from properties file or commandline arguments.
Raimund Renkert <rrenkert@intevation.de>
parents: 53
diff changeset
93 map = new mapObj(templ);
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
94 File f = new File(filename);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
95 mapFilename = filename;
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
96 if(f.isAbsolute()) {
174
707f13cfba74 Improved the commandline arguments and save the mapfile in the correct directory.
raimund.renkert@intevation.de
parents: 172
diff changeset
97 map.setMappath(mapFilename);
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
98 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
99 else {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
100 map.setMappath(
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
101 System.getProperty("user.dir") +
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
102 File.separator +
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
103 mapFilename);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
104 mapFilename = System.getProperty("user.dir") +
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
105 File.separator +
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
106 mapFilename;
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
107 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
108 String fontSetPath = map.getFontset().getFilename();
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
109 File fonts = new File(fontSetPath);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
110 String fontSet = fonts.getAbsolutePath();
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
111 fontSet = fontSet.replaceAll("\\\\", "/");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
112 map.setFontSet(fontSet);
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
113 }
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
114
43
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
115 /**
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
116 * Write the mapfile.
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
117 * @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
118 *
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
119 * @return Currently always true.
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
120 */
120
11d63bf00326 Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents: 102
diff changeset
121 public boolean write(Document doc) {
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
122 logger.debug("write()");
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
123 this.root = doc;
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
124
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
125 //Get the filename.
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
126 Element fileNode = (Element)XMLUtils.xpath(
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
127 root,
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
128 "/mxd/file",
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
129 XPathConstants.NODE);
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
130 //Write the map attributes.
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
131 writeMap();
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
132 //Write the layers.
196
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
133 boolean ret = writeLayer();
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
134 //Save the map.
196
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
135 if (ret) {
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
136 mapObj cloneMap = map.cloneMap();
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
137 cloneMap.save(mapFilename);
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
138 logger.info("Mapfile created: " + mapFilename);
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
139 return true;
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
140 }
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
141 return false;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
142 }
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
143
43
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
144 /**
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
145 * 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
146 */
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
147 private void writeMap() {
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
148 logger.debug("writeMap()");
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
149 //Get the map.
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
150 Element mapNode = (Element)XMLUtils.xpath(
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
151 root,
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
152 "/mxd/map",
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
153 XPathConstants.NODE);
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
154
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
155 //Set the name.
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
156 map.setName(mapNode.getAttribute("name"));
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
157 map.setMetaData("wms_title", mapNode.getAttribute("name"));
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
158 //Set the extent.
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
159 map.setExtent(
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
160 Double.parseDouble(mapNode.getAttribute("extent_min_x")),
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
161 Double.parseDouble(mapNode.getAttribute("extent_min_y")),
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
162 Double.parseDouble(mapNode.getAttribute("extent_max_x")),
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
163 Double.parseDouble(mapNode.getAttribute("extent_max_y")));
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
164
246
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
165 map.setMetaData(
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
166 "ows_extent",
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
167 mapNode.getAttribute("extent_min_x") + ", " +
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
168 mapNode.getAttribute("extent_min_y") + ", " +
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
169 mapNode.getAttribute("extent_max_x") + ", " +
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
170 mapNode.getAttribute("extent_max_y"));
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
171
172
929e09649b08 Handle unknown projections.
vc11884admin@VC11884.win.bsh.de
parents: 170
diff changeset
172 //Set the units and projection.
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
173 int proj = Integer.parseInt(mapNode.getAttribute("projection"));
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
174 if(proj != 0) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
175 map.setProjection("epsg:" + mapNode.getAttribute("projection"));
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
176 }
170
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
177 String u = mapNode.getAttribute("units");
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
178 if(u.equals("feet")) {
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
179 units = MS_UNITS.MS_FEET;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
180 }
170
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
181 else if(u.equals("inches")) {
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
182 units = MS_UNITS.MS_INCHES;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
183 }
170
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
184 else if(u.equals("kilometers")) {
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
185 units = MS_UNITS.MS_KILOMETERS;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
186 }
170
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
187 else if(u.equals("meters")) {
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
188 units = MS_UNITS.MS_METERS;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
189 }
170
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
190 else if(u.equals("miles")) {
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
191 units = MS_UNITS.MS_MILES;
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
192 }
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
193 else if(u.equals("nauticalmiles")) {
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
194 units = MS_UNITS.MS_NAUTICALMILES;
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
195 }
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
196 else if(u.equals("points")) {
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
197 units = MS_UNITS.MS_PIXELS;
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
198 }
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
199 else if(u.equals("degree")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
200 units = MS_UNITS.MS_DD;
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
201 }
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
202 else {
170
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
203 units = MS_UNITS.MS_METERS;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
204 }
170
b9ee44070056 Manage projections and units.
vc11884admin@VC11884.win.bsh.de
parents: 169
diff changeset
205 map.setUnits(units);
246
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
206
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
207 String srs = map.getMetaData("ows_srs");
248
191b7d18c79e Minor fixes for metadata information.
raimund renkert <raimund.renkert@intevation.de>
parents: 247
diff changeset
208 String mproj = mapNode.getAttribute("projection");
191b7d18c79e Minor fixes for metadata information.
raimund renkert <raimund.renkert@intevation.de>
parents: 247
diff changeset
209 if(srs.indexOf(mproj) < 0) {
191b7d18c79e Minor fixes for metadata information.
raimund renkert <raimund.renkert@intevation.de>
parents: 247
diff changeset
210 srs += " EPSG:" + mproj;
191b7d18c79e Minor fixes for metadata information.
raimund renkert <raimund.renkert@intevation.de>
parents: 247
diff changeset
211 map.setMetaData("ows_srs", srs);
191b7d18c79e Minor fixes for metadata information.
raimund renkert <raimund.renkert@intevation.de>
parents: 247
diff changeset
212 }
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
213 }
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
214
43
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
215 /**
ef7ca23c4233 Added comments, done some code styling and removed typos.
Raimund Renkert <rrenkert@intevation.de>
parents: 42
diff changeset
216 * 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
217 */
196
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
218 private boolean writeLayer() {
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
219 logger.debug("writeLayer()");
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
220 Element mapNode = (Element)XMLUtils.xpath(
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
221 root,
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
222 "/mxd/map",
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
223 XPathConstants.NODE);
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
224 NodeList list = mapNode.getElementsByTagName("layer");
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
225 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
226 Element layerElement = (Element)list.item(i);
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
227 layerObj layer = new layerObj(map);
190
c640fb351f66 Do not write layer with empty CLASS objects.
raimund renkert <raimund.renkert@intevation.de>
parents: 189
diff changeset
228 NodeList renderer = layerElement.getElementsByTagName("renderer");
c640fb351f66 Do not write layer with empty CLASS objects.
raimund renkert <raimund.renkert@intevation.de>
parents: 189
diff changeset
229 if (renderer.getLength() == 0) {
204
52b918f958d0 Remove incomplete layer from map.
raimund renkert <raimund.renkert@intevation.de>
parents: 203
diff changeset
230 map.removeLayer(layer.getIndex());
247
30e10eb9ac68 Print out a message if an empty layer is not written to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 246
diff changeset
231 logger.warn(
30e10eb9ac68 Print out a message if an empty layer is not written to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 246
diff changeset
232 "Skipping empty layer " +
30e10eb9ac68 Print out a message if an empty layer is not written to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 246
diff changeset
233 layerElement.getAttribute("name"));
190
c640fb351f66 Do not write layer with empty CLASS objects.
raimund renkert <raimund.renkert@intevation.de>
parents: 189
diff changeset
234 continue;
c640fb351f66 Do not write layer with empty CLASS objects.
raimund renkert <raimund.renkert@intevation.de>
parents: 189
diff changeset
235 }
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
236
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
237 //The layer name.
205
07b991b940ab Concatenate grouplayer name and layer name to have a unique identifier for each
raimund renkert <raimund.renkert@intevation.de>
parents: 204
diff changeset
238 String group = "";
148
2bf35f0babd0 Implemented new group layer functionality.
vc11884admin@VC11884.win.bsh.de
parents: 145
diff changeset
239 if(layerElement.hasAttribute("group")) {
205
07b991b940ab Concatenate grouplayer name and layer name to have a unique identifier for each
raimund renkert <raimund.renkert@intevation.de>
parents: 204
diff changeset
240 group = layerElement.getAttribute("group");
244
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
241 String[] splitted = group.split("/");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
242 String cleangroup = "";
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
243 for(int j = 0; j < splitted.length; j++) {
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
244 if(!splitted[j].equals("")) {
253
cedb23deb057 Replace all german umlauts in group names.
raimund renkert <raimund.renkert@intevation.de>
parents: 252
diff changeset
245 splitted[j] = validateString(splitted[j]);
244
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
246 cleangroup += "/" + validateLayerName(splitted[j]);
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
247 }
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
248 }
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
249 group = cleangroup;
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
250 }
205
07b991b940ab Concatenate grouplayer name and layer name to have a unique identifier for each
raimund renkert <raimund.renkert@intevation.de>
parents: 204
diff changeset
251 String lname = layerElement.getAttribute("name");
244
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
252 lname = validateLayerName(lname);
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
253 String ulname = group.replaceAll("/", ".") + "." + lname;
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
254 if(ulname.startsWith(".")) {
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
255 ulname = ulname.substring(1);
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
256 }
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
257 layer.setName(ulname);
205
07b991b940ab Concatenate grouplayer name and layer name to have a unique identifier for each
raimund renkert <raimund.renkert@intevation.de>
parents: 204
diff changeset
258 layer.setUnits(units.swigValue());
244
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
259 if(!group.equals("")) {
245
2eeeae07aaa2 Set the group attribute to the correct wms metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 244
diff changeset
260 layer.setMetaData("wms_layer_group", group);
244
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
261 }
245
2eeeae07aaa2 Set the group attribute to the correct wms metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 244
diff changeset
262 layer.setMetaData("wms_title", ulname);
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
263
246
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
264 if(layerElement.hasAttribute("extent_min_x") &&
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
265 layerElement.hasAttribute("extent_max_x") &&
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
266 layerElement.hasAttribute("extent_min_y") &&
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
267 layerElement.hasAttribute("extent_max_y")) {
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
268 layer.setMetaData(
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
269 "ows_extent",
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
270 layerElement.getAttribute("extent_min_x") + ", " +
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
271 layerElement.getAttribute("extent_min_y") + ", " +
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
272 layerElement.getAttribute("extent_max_x") + ", " +
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
273 layerElement.getAttribute("extent_max_y"));
87e92debc53f Added extent and projection as ows metadata to the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 245
diff changeset
274 }
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
275 //The layer status.
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
276 String stat = layerElement.getAttribute("status");
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
277 if (stat.equals("on")) {
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
278 layer.setStatus(1);
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
279 }
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
280 else {
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
281 layer.setStatus(0);
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
282 }
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
283
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
284 //The scale.
145
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
285 double maxScale = 0;
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
286 double minScale = 0;
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
287 try {
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
288 maxScale =
153
7ed49420ee5a Changed min scale and max scale in writer.
vc11884admin@VC11884.win.bsh.de
parents: 152
diff changeset
289 Double.parseDouble(layerElement.getAttribute("min_scale"));
7ed49420ee5a Changed min scale and max scale in writer.
vc11884admin@VC11884.win.bsh.de
parents: 152
diff changeset
290 minScale =
145
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
291 Double.parseDouble(layerElement.getAttribute("max_scale"));
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
292 }
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
293 catch(NumberFormatException nfe) {
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
294 logger.warn("Error setting scale.");
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
295 maxScale = 0;
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
296 minScale = 0;
b2c5a66022f1 Exception handling for number conversions in writer modules.
Raimund Renkert <rrenkert@intevation.de>
parents: 141
diff changeset
297 }
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
298 layer.setMaxscaledenom(maxScale);
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
299 layer.setMinscaledenom(minScale);
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
300
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
301 //The layer type.
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
302 String type = layerElement.getAttribute("type");
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
303 if(type.equals("point")) {
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
304 layer.setType(MS_LAYER_TYPE.MS_LAYER_POINT);
252
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
305 layer.setTileitem("");
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
306 }
62
e468cf8701ea Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents: 59
diff changeset
307 else if (type.equals("line")) {
e468cf8701ea Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents: 59
diff changeset
308 layer.setType(MS_LAYER_TYPE.MS_LAYER_LINE);
252
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
309 layer.setTileitem("");
62
e468cf8701ea Prepared the converter to handle and write line symbols.
Raimund Renkert <rrenkert@intevation.de>
parents: 59
diff changeset
310 }
97
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
311 else if (type.equals("polygon")) {
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
312 layer.setType(MS_LAYER_TYPE.MS_LAYER_POLYGON);
252
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
313 layer.setTileitem("");
97
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
314 }
252
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
315 else if(type.equals("raster")) {
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
316 layer.setType(MS_LAYER_TYPE.MS_LAYER_RASTER);
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
317 }
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
318
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
319 //The layer datasource.
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
320 String con_type = layerElement.getAttribute("connection_type");
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
321 if(con_type.equals("local")) {
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
322 // The data source is a local file. (.shp)
130
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
323 String datasource = "";
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
324 if(layerElement.hasAttribute("workspace")) {
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
325 datasource = layerElement.getAttribute("workspace");
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
326 datasource += File.separator;
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
327 }
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
328 datasource += layerElement.getAttribute("data_source");
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
329 datasource = datasource.replaceAll("\\\\", "/");
130
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
330 layer.setData(datasource);
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
331 }
252
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
332 else if(con_type.equals("SDE") && !type.equals("raster")) {
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
333 // The data source is a sde database.
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
334 logger.info(
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
335 "SDE datasource found." +
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
336 " Please edit password in mapfile.");
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
337 layer.setConnectionType(
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
338 MS_CONNECTION_TYPE.MS_PLUGIN.swigValue(),
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
339 MS_BINDIR + "/ms/plugins/msplugin_sde_93.dll");
197
cdbf2f2dca35 Check for database connectio user parameter for SDE connections.
raimund renkert <raimund.renkert@intevation.de>
parents: 196
diff changeset
340 String database_auth = layerElement.getAttribute("database");
cdbf2f2dca35 Check for database connectio user parameter for SDE connections.
raimund renkert <raimund.renkert@intevation.de>
parents: 196
diff changeset
341 if (database_auth.equals("") || database_auth == null) {
cdbf2f2dca35 Check for database connectio user parameter for SDE connections.
raimund renkert <raimund.renkert@intevation.de>
parents: 196
diff changeset
342 logger.warn("Could not set the database connection user." +
cdbf2f2dca35 Check for database connectio user parameter for SDE connections.
raimund renkert <raimund.renkert@intevation.de>
parents: 196
diff changeset
343 " Setting to \"sde\" as default.");
cdbf2f2dca35 Check for database connectio user parameter for SDE connections.
raimund renkert <raimund.renkert@intevation.de>
parents: 196
diff changeset
344 database_auth = "sde";
cdbf2f2dca35 Check for database connectio user parameter for SDE connections.
raimund renkert <raimund.renkert@intevation.de>
parents: 196
diff changeset
345 }
238
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
346
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
347 String port = layerElement.getAttribute("instance");
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
348 StringBuffer strBuff = new StringBuffer();
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
349 char c;
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
350
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
351 for (int j = 0; j < port.length() ; j++) {
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
352 c = port.charAt(j);
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
353
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
354 if(Character.isDigit(c)) {
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
355 strBuff.append(c);
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
356 }
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
357 }
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
358
130
5991c1f90f91 Added data source "SDE" to writer.
vc11884admin@VC11884.win.bsh.de
parents: 129
diff changeset
359 layer.setConnection(
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
360 layerElement.getAttribute("server") + "," +
238
e672f5134d6e Remove all non numeric chars from port string.
raimund renkert <raimund.renkert@intevation.de>
parents: 207
diff changeset
361 "port:" + strBuff.toString() + "," +
197
cdbf2f2dca35 Check for database connectio user parameter for SDE connections.
raimund renkert <raimund.renkert@intevation.de>
parents: 196
diff changeset
362 database_auth + "," +
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
363 layerElement.getAttribute("user") + ",<PASSWORD>");
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
364 layer.setData(
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
365 layerElement.getAttribute("data_source") +
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
366 ",SHAPE," +
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
367 layerElement.getAttribute("version"));
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
368 layer.setProcessing("CLOSE_CONNECTION=defer");
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
369 layer.setProcessing("ATTRIBUTE_QUALIFIED=TRUE");
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
370 if(layerElement.hasAttribute("join_table")) {
249
4c59d8c36418 Print out a message when a jointable attribute occurs in the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 248
diff changeset
371 logger.info(
4c59d8c36418 Print out a message when a jointable attribute occurs in the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 248
diff changeset
372 "The layer " +
4c59d8c36418 Print out a message when a jointable attribute occurs in the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 248
diff changeset
373 layer.getName() +
4c59d8c36418 Print out a message when a jointable attribute occurs in the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 248
diff changeset
374 " contains a jointable attribute." +
4c59d8c36418 Print out a message when a jointable attribute occurs in the mapfile.
raimund renkert <raimund.renkert@intevation.de>
parents: 248
diff changeset
375 " Please verify the attribute parameters.");
196
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
376 String join = layerElement.getAttribute("join_table");
203
123fd9887a4f Rollback the jointable checks.
raimund renkert <raimund.renkert@intevation.de>
parents: 200
diff changeset
377
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
378 layer.setProcessing(
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
379 "JOINTABLE=" +
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
380 layerElement.getAttribute("join_table"));
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
381 layer.setFilter(
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
382 "where " +
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
383 layerElement.getAttribute("definition_query") +
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
384 " AND " +
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
385 layerElement.getAttribute("join_table_target") + "." +
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
386 layerElement.getAttribute("join_field_target") + "=" +
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
387 layerElement.getAttribute("join_table") + "." +
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
388 layerElement.getAttribute("join_field"));
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
389 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
390 else {
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
391 prefix = layerElement.getAttribute("data_source");
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
392 if(layerElement.hasAttribute("definition_query") &&
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
393 !layerElement.getAttribute("definition_query")
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
394 .equals("")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
395 layer.setFilter("where " +
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
396 layerElement.getAttribute("definition_query"));
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
397 }
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
398 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
399 }
252
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
400 else if(con_type.equals("SDE") && type.equals("raster")) {
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
401 // The data source is a sde database.
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
402 logger.info(
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
403 "SDE datasource found." +
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
404 " Please edit password in mapfile.");
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
405 String database_auth = layerElement.getAttribute("database");
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
406 if (database_auth.equals("") || database_auth == null) {
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
407 logger.warn("Could not set the database connection user." +
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
408 " Setting to \"sde\" as default.");
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
409 database_auth = "sde";
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
410 }
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
411
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
412 String port = layerElement.getAttribute("instance");
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
413 StringBuffer strBuff = new StringBuffer();
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
414 char c;
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
415
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
416 for (int j = 0; j < port.length() ; j++) {
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
417 c = port.charAt(j);
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
418 if(Character.isDigit(c)) {
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
419 strBuff.append(c);
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
420 }
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
421 }
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
422
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
423 layer.setData(
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
424 "SDE:" + layerElement.getAttribute("server") +
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
425 "," + strBuff +
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
426 "," + layerElement.getAttribute("database") +
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
427 "," + layerElement.getAttribute("user") +
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
428 ",<PASSWORD>," + layerElement.getAttribute("dataset"));
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
429 layer.setType(MS_LAYER_TYPE.MS_LAYER_RASTER);
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
430 if(layerElement.hasAttribute("definition_query") &&
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
431 !layerElement.getAttribute("definition_query").equals("")) {
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
432 layer.setFilter("where " +
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
433 layerElement.getAttribute("definition_query"));
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
434 }
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
435 }
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
436 if(!type.equals("raster")) {
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
437 layer.setTemplate("PleaseInsertAValidTemplateForGFI");
eae3fe89e669 Added raster layer support.
raimund renkert <raimund.renkert@intevation.de>
parents: 249
diff changeset
438 }
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
439
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
440 // Create labelitem
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
441 NodeList labels = layerElement.getElementsByTagName("label");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
442 if(labels.getLength() > 0) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
443 Element label = (Element)labels.item(0);
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
444 String expr = label.getAttribute("expression");
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
445 expr = expr.replaceAll("\\[", "");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
446 expr = expr.replaceAll("\\]", "");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
447 if(!prefix.equals("")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
448 expr = prefix + "." + expr;
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
449 }
199
c56547b228f9 Remove leading and trailing whitespaces from labelitem.
raimund renkert <raimund.renkert@intevation.de>
parents: 197
diff changeset
450 layer.setLabelitem(expr.trim());
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
451 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
452
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
453 //Write classes.
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
454 writeClass(layer, layerElement);
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
455 }
196
5350621a0294 Verify the SDE databse jointable attribute.
raimund renkert <raimund.renkert@intevation.de>
parents: 190
diff changeset
456 return true;
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
457 }
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
458
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
459 /**
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
460 * Adds the classes to the layer.
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
461 * @param layer Mapscript layer object.
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
462 * @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
463 */
120
11d63bf00326 Changed exception handling and logging in writer classes.
Raimund Renkert <rrenkert@intevation.de>
parents: 102
diff changeset
464 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
465 logger.debug("writeClass(layerObj, Element)");
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
466 //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
467 //mapfile.)
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
468 NodeList list = layerElement.getElementsByTagName("renderer");
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
469
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
470 //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
471 //each class.
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
472 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
473 Element classElement = (Element)list.item(i);
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
474 classObj co = new classObj(layer);
124
0f5819732288 Set label text as class name in mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents: 120
diff changeset
475 String name = classElement.getAttribute("label");
189
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
476 name = validateString(name);
99
d6d2a4058ebf Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents: 98
diff changeset
477 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
478 name = layerElement.getAttribute("name");
189
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
479 name = validateString(name);
99
d6d2a4058ebf Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents: 98
diff changeset
480 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
481 name += "-" + i;
d6d2a4058ebf Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents: 98
diff changeset
482 }
d6d2a4058ebf Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents: 98
diff changeset
483 }
d6d2a4058ebf Set the class name to the layer name if it is empty.
Raimund Renkert <rrenkert@intevation.de>
parents: 98
diff changeset
484 co.setName (name);
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
485
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
486 //Create label object.
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
487 NodeList labels = layerElement.getElementsByTagName("label");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
488 if(labels.getLength() > 0) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
489 Element labelElement = (Element)labels.item(0);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
490 String layerType = layerElement.getAttribute("type");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
491 writeLabel(co, labelElement, layerType);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
492 }
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
493
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
494 //Create definition expression.
44
9b5fb5e5914d Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents: 43
diff changeset
495 if(classElement.hasAttribute("field_count")) {
152
8a87c796bf47 Fixed expression for the first min value.
vc11884admin@VC11884.win.bsh.de
parents: 148
diff changeset
496 co.setExpression(createExpression(classElement, i));
44
9b5fb5e5914d Added expressions for mapserver classes.
Raimund Renkert <rrenkert@intevation.de>
parents: 43
diff changeset
497 }
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
498
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
499 //Write symbols and styles.
97
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
500 NodeList l = classElement.getChildNodes();
141
8f30f7e802d6 Manage symbol names and symbol comparison.
vc11884admin@VC11884.win.bsh.de
parents: 137
diff changeset
501 for (int j = l.getLength() - 1; j >= 0; j--) {
97
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
502 Element elem = (Element)l.item(j);
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
503
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
504 String type = layerElement.getAttribute("type");
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
505 if(type.equals("point") &&
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
506 elem.getTagName().equals("symbol")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
507 MarkerStyleWriter swriter =
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
508 new MarkerStyleWriter (this.map, co);
97
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
509 swriter.write (elem);
87
7d4cf2db43f1 Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 62
diff changeset
510 }
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
511 else if(type.equals("line") &&
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
512 elem.getTagName().equals("symbol")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
513 LineStyleWriter swriter =
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
514 new LineStyleWriter (this.map, co);
97
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
515 swriter.write (elem);
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
516 }
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
517 else if(type.equals("polygon") &&
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
518 elem.getTagName().equals("symbol")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
519 FillStyleWriter swriter =
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
520 new FillStyleWriter (this.map, co);
97
18e4f143896b Added polygon writer.
Raimund Renkert <rrenkert@intevation.de>
parents: 96
diff changeset
521 swriter.write (elem);
87
7d4cf2db43f1 Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 62
diff changeset
522 }
7d4cf2db43f1 Added new writer classes to be flexible in creating mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 62
diff changeset
523 }
42
395307e8b7ee First MapScript Writer that generates valid mapfiles.
Raimund Renkert <rrenkert@intevation.de>
parents: 41
diff changeset
524 }
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
525 }
126
ff0354265a7d Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents: 124
diff changeset
526
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
527 /**
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
528 * Create a label object in a class object.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
529 *
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
530 * @param co Class object.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
531 * @param labelElement DOM element containing label attributes.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
532 * @param layertype The layer type. Used to define the label position.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
533 */
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
534 private void writeLabel(
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
535 classObj co,
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
536 Element labelElement,
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
537 String layerType) {
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
538
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
539 //Get the label object. Each class has a predefined labelobject.
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
540 labelObj label = co.getLabel();
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
541
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
542 //Get the label text symbol attributes from DOM.
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
543 Element symbol = (Element)labelElement.getFirstChild();
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
544 if(symbol != null && symbol.getTagName().equals("symbol")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
545 String type = symbol.getAttribute("type");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
546 if(type.equals("text")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
547 label.setType(MS_FONT_TYPE.MS_TRUETYPE);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
548 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
549 label.setSize(Double.parseDouble(symbol.getAttribute("size")));
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
550
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
551 if(symbol.hasAttribute("color")) {
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
552 String c = symbol.getAttribute("color");
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
553 Color col = Color.decode(c);
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
554 colorObj color = new colorObj(
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
555 col.getRed(),
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
556 col.getGreen(),
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
557 col.getBlue(),
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
558 -4);
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
559 label.setColor(color);
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
560 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
561 if(symbol.hasAttribute("font")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
562 String font = symbol.getAttribute("font");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
563 fontSetObj fso = this.map.getFontset();
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
564 hashTableObj fonts = fso.getFonts();
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
565 String mapFont = fonts.get(font,"");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
566 if(mapFont != null && !mapFont.equals("")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
567 label.setFont(font);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
568 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
569 else {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
570 logger.info(
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
571 "Could not find font " + font + " in font set. " +
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
572 "Using FreeSans for labels.");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
573 label.setFont("FreeSans");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
574 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
575 }
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
576
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
577 if(labelElement.hasAttribute("max_scale")) {
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
578 double min =
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
579 Double.parseDouble(labelElement.getAttribute("max_scale"));
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
580 if(min > 0) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
581 label.setMinscaledenom(min);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
582 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
583 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
584 if(labelElement.hasAttribute("min_scale")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
585 double max =
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
586 Double.parseDouble(labelElement.getAttribute("min_scale"));
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
587 if(max > 0) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
588 label.setMaxscaledenom(max);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
589 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
590 }
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
591
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
592 //Set the label position.
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
593 if(layerType.equals("point")) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
594 label.setPosition(MS_POSITIONS_ENUM.MS_UC.swigValue());
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
595 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
596 }
179
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
597 }
f3a91cd7440b Added a first version of feature labeling.
raimund renkert <raimund.renkert@intevation.de>
parents: 175
diff changeset
598
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
599 /**
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
600 * Create definition expression.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
601 *
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
602 * @param ce DOM elementcontaining the class expression information.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
603 * @param index Index to determine the correct expression operator.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
604 */
152
8a87c796bf47 Fixed expression for the first min value.
vc11884admin@VC11884.win.bsh.de
parents: 148
diff changeset
605 private String createExpression(Element ce, int index) {
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
606 String expression = "(";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
607 int count = 0;
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
608 try {
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
609 count = Integer.parseInt(ce.getAttribute("field_count"));
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
610 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
611 catch(NumberFormatException nfe) {
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
612 return "";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
613 }
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
614
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
615 if(count == 1) {
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
616 //Create single field expression.
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
617 try {
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
618 //If no exception is thrown, the expression value is a number.
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
619 Double.parseDouble(ce.getAttribute("value"));
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
620 String exp = ce.getAttribute("expression_field_0");
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
621 String pre = "";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
622 if (!prefix.equals("") && !exp.startsWith(prefix)) {
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
623 pre = prefix + ".";
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
624 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
625 expression += "[" + pre;
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
626 expression += ce.getAttribute("expression_field_0") + "]";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
627 if(ce.hasAttribute("min_value")) {
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
628 if(index == 0) {
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
629 expression += " >= " + ce.getAttribute("min_value");
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
630 }
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
631 else {
152
8a87c796bf47 Fixed expression for the first min value.
vc11884admin@VC11884.win.bsh.de
parents: 148
diff changeset
632 expression += " > " + ce.getAttribute("min_value");
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
633 }
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
634 expression += " AND [" + pre;
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
635 expression += ce.getAttribute("expression_field_0");
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
636 expression += "]";
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
637 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
638 expression += " " + ce.getAttribute("expression_operator");
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
639 expression += " " + ce.getAttribute("value") + ")";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
640 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
641 catch(NumberFormatException nfe) {
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
642 //The expression value is a strings.
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
643 String exp = ce.getAttribute("expression_field_0");
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
644 String pre = "";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
645 if (!prefix.equals("") && !exp.startsWith(prefix)) {
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
646 pre = prefix + ".";
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
647 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
648 expression += "\"[" + pre;
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
649 expression += ce.getAttribute("expression_field_0") + "]\"";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
650 expression += " " + ce.getAttribute("expression_operator");
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
651 expression += " \"" + ce.getAttribute("value") + "\")";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
652 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
653 catch(Exception e) {
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
654 e.printStackTrace();
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
655 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
656 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
657 else {
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
658 //Create a multi field expression.
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
659 for (int i = 0; i < count; i++) {
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
660 try {
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
661 //If no exception is thrown, the expression values are
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
662 //numbers.
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
663 Double.parseDouble(ce.getAttribute("value_" + i));
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
664 String exp = ce.getAttribute("expression_field_" + i);
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
665 String pre = "";
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
666 if (!prefix.equals("") && !exp.startsWith(prefix)) {
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
667 pre = prefix + ".";
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
668 }
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
669 expression += "[" + pre;
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
670 expression += ce.getAttribute("expression_field_" + i);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
671 expression += "]";
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
672 expression += " " + ce.getAttribute("expression_operator");
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
673 expression += " " + ce.getAttribute("value_" + i);
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
674 if (i < count - 1) {
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
675 expression += " AND ";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
676 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
677 else {
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
678 expression += ")";
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
679 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
680 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
681 catch (NumberFormatException nfe) {
181
0bde090506f9 Added comments.
Raimund Renkert <rrenkert@intevation.de>
parents: 180
diff changeset
682 //The expression values are strings.
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
683 String exp = ce.getAttribute("expression_field_" + i);
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
684 String pre = "";
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
685 if (!prefix.equals("") && !exp.startsWith(prefix)) {
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
686 pre = prefix + ".";
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
687 }
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
688 expression += "\"[" + pre;
180
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
689 expression += ce.getAttribute("expression_field_" + i);
f4eb506499f5 Done some code styling and removed TODOs.
Raimund Renkert <rrenkert@intevation.de>
parents: 179
diff changeset
690 expression += "]\"";
134
acc9e5430177 Handle SDE connection attributes and expressions.
vc11884admin@VC11884.win.bsh.de
parents: 132
diff changeset
691 expression += " " + ce.getAttribute("expression_operator");
186
1391f911ee39 Add quotes to an expression if the value is a string.
raimund renkert <raimund.renkert@intevation.de>
parents: 181
diff changeset
692 expression += " \"" + ce.getAttribute("value_" + i);
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
693 if (i < count - 1) {
186
1391f911ee39 Add quotes to an expression if the value is a string.
raimund renkert <raimund.renkert@intevation.de>
parents: 181
diff changeset
694 expression += "\" AND ";
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
695 }
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
696 else {
186
1391f911ee39 Add quotes to an expression if the value is a string.
raimund renkert <raimund.renkert@intevation.de>
parents: 181
diff changeset
697 expression += "\")";
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
698 }
126
ff0354265a7d Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents: 124
diff changeset
699 }
ff0354265a7d Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents: 124
diff changeset
700 }
ff0354265a7d Write the correct expression for double values.
Raimund Renkert <rrenkert@intevation.de>
parents: 124
diff changeset
701 }
137
cd55975ba0c4 Done some minor reformatings.
Raimund Renkert <rrenkert@intevation.de>
parents: 134
diff changeset
702 return expression;
127
5ba8bf865dc7 Write expressions for string values to the mapfile.
Raimund Renkert <rrenkert@intevation.de>
parents: 126
diff changeset
703 }
189
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
704
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
705 /**
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
706 * Replaces german umlauts and removes leading and trailing whitespaces.
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
707 *
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
708 * @param s String
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
709 */
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
710 private String validateString (String s) {
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
711 if (s.equals("")) {
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
712 return "";
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
713 }
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
714 String tmp = s.trim();
243
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
715 tmp = tmp.replace ("ö", "oe");
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
716 tmp = tmp.replace ("ä", "ae");
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
717 tmp = tmp.replace ("ü", "ue");
df4e0946ef02 Added LGPL header.
Raimund Renkert <rrenkert@intevation.de>
parents: 239
diff changeset
718 tmp = tmp.replace ("ß", "ss");
239
8aefef8a1626 Remove special characters from layername and classname.
raimund renkert <raimund.renkert@intevation.de>
parents: 238
diff changeset
719 if(!s.equals(tmp)) {
8aefef8a1626 Remove special characters from layername and classname.
raimund renkert <raimund.renkert@intevation.de>
parents: 238
diff changeset
720 logger.info("Renamed \"" + s + "\" to \"" + tmp + "\".");
8aefef8a1626 Remove special characters from layername and classname.
raimund renkert <raimund.renkert@intevation.de>
parents: 238
diff changeset
721 }
189
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
722 return tmp;
0965f8af70fa Replace german umlauts and trim strings.
raimund renkert <raimund.renkert@intevation.de>
parents: 186
diff changeset
723 }
244
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
724
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
725
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
726 /**
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
727 * Replaces special characters and removes leading and trailing whitespaces.
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
728 *
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
729 * @param s String
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
730 *
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
731 * @return the input string without special chars.
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
732 */
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
733 private String validateLayerName (String s) {
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
734 if(s.equals("")) {
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
735 return "";
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
736 }
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
737
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
738 String tmp = s.trim();
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
739 tmp = tmp.replace(" ", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
740 tmp = tmp.replace("/", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
741 tmp = tmp.replace(",", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
742 tmp = tmp.replace("#", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
743 tmp = tmp.replace("+", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
744 tmp = tmp.replace("~", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
745 tmp = tmp.replace("(", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
746 tmp = tmp.replace(")", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
747 tmp = tmp.replace("{", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
748 tmp = tmp.replace("}", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
749 tmp = tmp.replace("[", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
750 tmp = tmp.replace("]", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
751 tmp = tmp.replace("<", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
752 tmp = tmp.replace(">", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
753 tmp = tmp.replace("*", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
754 tmp = tmp.replace("\\\\", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
755 tmp = tmp.replace("^", "");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
756 if(!s.equals(tmp)) {
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
757 logger.info("Renamed \"" + s +"\" to \"" + tmp +"\".");
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
758 }
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
759 return tmp;
276f63c86f1c Refactored group layer handling and "wms_title" metadata.
raimund renkert <raimund.renkert@intevation.de>
parents: 243
diff changeset
760 }
41
60ed2164035a Introduced MapScript writer.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
761 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)