Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/utils/MapfileGenerator.java @ 625:40ead2d2a08d
Restructured configuration, removed duplicated entry and store config information in MapfileGenerator to avoid reading config file every time while updating mapfile.
gnv-artifacts/trunk@697 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 22 Feb 2010 11:29:34 +0000 |
parents | 6a3a1da5e680 |
children | 9ba6bb85d6dd |
comparison
equal
deleted
inserted
replaced
624:6a3a1da5e680 | 625:40ead2d2a08d |
---|---|
1 package de.intevation.gnv.utils; | 1 package de.intevation.gnv.utils; |
2 | 2 |
3 import de.intevation.artifactdatabase.Config; | 3 import de.intevation.artifactdatabase.Config; |
4 import de.intevation.artifactdatabase.XMLUtils; | 4 import de.intevation.artifactdatabase.XMLUtils; |
5 | |
6 import de.intevation.artifacts.ArtifactNamespaceContext; | 5 import de.intevation.artifacts.ArtifactNamespaceContext; |
7 | |
8 import de.intevation.gnv.wms.LayerInfo; | 6 import de.intevation.gnv.wms.LayerInfo; |
9 | 7 |
10 import java.io.File; | 8 import java.io.File; |
11 import java.io.FileNotFoundException; | 9 import java.io.FileNotFoundException; |
12 import java.io.FileWriter; | 10 import java.io.FileWriter; |
13 import java.io.IOException; | 11 import java.io.IOException; |
14 import java.io.StringWriter; | 12 import java.io.StringWriter; |
15 import java.io.Writer; | 13 import java.io.Writer; |
16 | |
17 import java.util.ArrayList; | 14 import java.util.ArrayList; |
18 import java.util.Date; | 15 import java.util.Date; |
19 import java.util.List; | 16 import java.util.List; |
20 import java.util.Properties; | |
21 | 17 |
22 import javax.xml.xpath.XPathConstants; | 18 import javax.xml.xpath.XPathConstants; |
23 | 19 |
24 import org.apache.log4j.Logger; | 20 import org.apache.log4j.Logger; |
25 | 21 |
26 import org.apache.velocity.Template; | 22 import org.apache.velocity.Template; |
27 import org.apache.velocity.VelocityContext; | 23 import org.apache.velocity.VelocityContext; |
28 | |
29 import org.apache.velocity.app.VelocityEngine; | 24 import org.apache.velocity.app.VelocityEngine; |
30 | 25 |
31 import org.w3c.dom.Document; | 26 import org.w3c.dom.Document; |
32 import org.w3c.dom.Node; | 27 import org.w3c.dom.Node; |
33 import org.w3c.dom.NodeList; | 28 import org.w3c.dom.NodeList; |
29 | |
34 | 30 |
35 /** | 31 /** |
36 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) | 32 * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) |
37 */ | 33 */ |
38 public class MapfileGenerator | 34 public class MapfileGenerator |
39 extends Thread | 35 extends Thread |
40 { | 36 { |
41 public static final String TEMPLATE_PATH = | 37 public static final String TEMPLATE_PATH = |
42 "/artifact-database/map-generator/templates/path/text()"; | 38 "/artifact-database/gnv/map-generator/templates/path/text()"; |
43 | 39 |
44 public static final String TEMPLATE_MAPFILE = | 40 public static final String TEMPLATE_MAPFILE = |
45 "/artifact-database/map-generator/templates/maptemplate/text()"; | 41 "/artifact-database/gnv/map-generator/templates/maptemplate/text()"; |
46 | 42 |
47 public static final String MAPFILE_PATH = | 43 public static final String MAPFILE_PATH = |
48 "/artifact-database/map-generator/mapfile/path/text()"; | 44 "/artifact-database/gnv/map-generator/mapfile/@path"; |
49 | |
50 public static final String MAPFILE_NAME = | |
51 "/artifact-database/map-generator/mapfile/name/text()"; | |
52 | 45 |
53 public static final String SHAPEFILE_BASE_DIR = | 46 public static final String SHAPEFILE_BASE_DIR = |
54 "/artifact-database/map-generator/mapfile/shapefiles/text()"; | 47 "/artifact-database/gnv/shapefile-directory/@path"; |
55 | 48 |
56 public static final String VELOCITY_LOGFILE = | 49 public static final String VELOCITY_LOGFILE = |
57 "/artifact-database/velocity/logfile/@path"; | 50 "/artifact-database/velocity/logfile/@path"; |
58 | 51 |
59 public static final String META_FILE_NAME = "meta.xml"; | 52 public static final String META_FILE_NAME = "meta.xml"; |
68 protected static final long SLEEPTIME = 10 * 1000L; // 10 seconds | 61 protected static final long SLEEPTIME = 10 * 1000L; // 10 seconds |
69 | 62 |
70 private static Logger logger = Logger.getLogger(MapfileGenerator.class); | 63 private static Logger logger = Logger.getLogger(MapfileGenerator.class); |
71 | 64 |
72 private static MapfileGenerator instance; | 65 private static MapfileGenerator instance; |
66 | |
67 private File mapfile; | |
68 private String shapefileDirectory; | |
69 private String templatePath; | |
70 private String velocityLogfile; | |
73 | 71 |
74 private VelocityEngine velocityEngine; | 72 private VelocityEngine velocityEngine; |
75 private boolean lock[]; | 73 private boolean lock[]; |
76 | 74 |
77 | 75 |
183 return velocityLogfile; | 181 return velocityLogfile; |
184 } | 182 } |
185 | 183 |
186 | 184 |
187 protected String getTemplateBaseDir() { | 185 protected String getTemplateBaseDir() { |
188 if (templatePath == null) | 186 if (templatePath == null) { |
189 templatePath = Config.getStringXPath(TEMPLATE_PATH); | 187 templatePath = Config.getStringXPath(TEMPLATE_PATH); |
188 templatePath = Config.replaceConfigDir(templatePath); | |
189 } | |
190 | 190 |
191 return templatePath; | 191 return templatePath; |
192 } | 192 } |
193 | 193 |
194 | 194 |
195 protected Template getTemplateByName(String model) { | 195 protected Template getTemplateByName(String model) { |
196 String templatePath = getTemplateBaseDir(); | |
197 if (model.indexOf(".vm") < 0) { | 196 if (model.indexOf(".vm") < 0) { |
198 model = model.concat(".vm"); | 197 model = model.concat(".vm"); |
199 } | 198 } |
200 | 199 |
201 try { | 200 try { |
222 return getTemplateByName(mapfileName); | 221 return getTemplateByName(mapfileName); |
223 } | 222 } |
224 | 223 |
225 | 224 |
226 protected String getShapefileBaseDir() { | 225 protected String getShapefileBaseDir() { |
227 return Config.getStringXPath(SHAPEFILE_BASE_DIR); | 226 if (shapefileDirectory == null) { |
227 shapefileDirectory = Config.getStringXPath(SHAPEFILE_BASE_DIR); | |
228 shapefileDirectory = Config.replaceConfigDir(shapefileDirectory); | |
229 } | |
230 | |
231 return shapefileDirectory; | |
232 } | |
233 | |
234 | |
235 protected File getMapfile() { | |
236 if (mapfile == null) { | |
237 String tmp = Config.getStringXPath(MAPFILE_PATH); | |
238 tmp = Config.replaceConfigDir(tmp); | |
239 mapfile = new File(tmp); | |
240 } | |
241 | |
242 return mapfile; | |
228 } | 243 } |
229 | 244 |
230 | 245 |
231 protected void searchMetaInformation(File file, List store) { | 246 protected void searchMetaInformation(File file, List store) { |
232 if (file.isDirectory()) { | 247 if (file.isDirectory()) { |
318 ArtifactNamespaceContext.INSTANCE); | 333 ArtifactNamespaceContext.INSTANCE); |
319 } | 334 } |
320 | 335 |
321 | 336 |
322 protected void writeMapfile(List layers) { | 337 protected void writeMapfile(List layers) { |
323 String pathName = Config.getStringXPath(MAPFILE_PATH); | |
324 String mapName = Config.getStringXPath(MAPFILE_NAME); | |
325 String tmpMapName = "mapfile" + new Date().getTime(); | 338 String tmpMapName = "mapfile" + new Date().getTime(); |
326 | 339 |
327 int layersize = layers.size(); | 340 int layersize = layers.size(); |
328 StringBuilder sb = new StringBuilder(); | 341 StringBuilder sb = new StringBuilder(); |
329 StringWriter sw = null; | 342 StringWriter sw = null; |
345 logger.warn("Error while filling layer template."); | 358 logger.warn("Error while filling layer template."); |
346 logger.warn(ioe, ioe); | 359 logger.warn(ioe, ioe); |
347 } | 360 } |
348 } | 361 } |
349 | 362 |
363 File map = getMapfile(); | |
350 Writer writer = null; | 364 Writer writer = null; |
351 File tmp = null; | 365 File tmp = null; |
352 File map = null; | |
353 | 366 |
354 try { | 367 try { |
355 tmp = new File(pathName, tmpMapName); | 368 tmp = new File(map.getParent(), tmpMapName); |
356 map = new File(pathName, mapName); | |
357 | 369 |
358 tmp.createNewFile(); | 370 tmp.createNewFile(); |
359 writer = new FileWriter(tmp); | 371 writer = new FileWriter(tmp); |
360 | 372 |
361 VelocityContext context = new VelocityContext(); | 373 VelocityContext context = new VelocityContext(); |