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();

http://dive4elements.wald.intevation.org