comparison artifacts/src/main/java/org/dive4elements/river/utils/RiverMapfileGenerator.java @ 9751:308a0d822d18 3.2.x

Keep configuration and data in distinct directories This allows having distinct volumes for configuration and data (artifact database, generated mapfiles and shapefiles, etc.). While at it, cleanup MapServer configuration a little bit.
author Tom Gottfried <tom@intevation.de>
date Tue, 11 Oct 2022 11:42:09 +0200
parents afad1fac70fb
children
comparison
equal deleted inserted replaced
9750:432934cda171 9751:308a0d822d18
9 package org.dive4elements.river.utils; 9 package org.dive4elements.river.utils;
10 10
11 import com.vividsolutions.jts.geom.Envelope; 11 import com.vividsolutions.jts.geom.Envelope;
12 import com.vividsolutions.jts.geom.MultiLineString; 12 import com.vividsolutions.jts.geom.MultiLineString;
13 13
14 import org.dive4elements.artifacts.common.utils.Config;
15
16 import org.dive4elements.river.artifacts.model.LayerInfo; 14 import org.dive4elements.river.artifacts.model.LayerInfo;
17 import org.dive4elements.river.artifacts.model.RiverFactory; 15 import org.dive4elements.river.artifacts.model.RiverFactory;
18 16
19 import org.dive4elements.river.model.River; 17 import org.dive4elements.river.model.River;
20 import org.dive4elements.river.model.RiverAxis; 18 import org.dive4elements.river.model.RiverAxis;
21 19
22 import java.io.File; 20 import java.io.File;
23 import java.io.FileNotFoundException; 21 import java.io.IOException;
24 22
25 import java.util.ArrayList; 23 import java.util.ArrayList;
26 import java.util.List; 24 import java.util.List;
27 25
28 import java.util.regex.Pattern; 26 import java.util.regex.Pattern;
33 import org.apache.velocity.Template; 31 import org.apache.velocity.Template;
34 import org.hibernate.HibernateException; 32 import org.hibernate.HibernateException;
35 33
36 public class RiverMapfileGenerator extends MapfileGenerator { 34 public class RiverMapfileGenerator extends MapfileGenerator {
37 35
38 public static final String XPATH_RIVERMAP_SHAPEFILE_DIR = 36 private static final String XPATH_RIVERMAP_VELOCITY_LOGFILE =
39 "/artifact-database/rivermap/shapefile-path/@value"; 37 "/artifact-database/rivermap/velocity/logfile/@path";
40 38
41 public static final String XPATH_RIVERMAP_VELOCITY_LOGFILE = 39 private static final String XPATH_RIVERMAP_MAPFILE_PATH =
42 "/artifact-database/rivermap/velocity/logfile/@path"; 40 "/artifact-database/rivermap/mapfile/@path";
43 41
44 public static final String XPATH_RIVERMAP_MAPFILE_PATH = 42 private static final String XPATH_RIVERMAP_MAPFILE_TEMPLATE =
45 "/artifact-database/rivermap/mapserver/mapfile/@path"; 43 "/artifact-database/rivermap/map-template/@path";
46
47 public static final String XPATH_RIVERMAP_MAPFILE_TEMPLATE =
48 "/artifact-database/rivermap/mapserver/map-template/@path";
49
50 public static final String XPATH_RIVERMAP_MAPSERVER_TEMPLATE_PATH =
51 "/artifact-database/rivermap/mapserver/templates/@path";
52 44
53 public static final Pattern DB_URL_PATTERN = 45 public static final Pattern DB_URL_PATTERN =
54 Pattern.compile("(.*)\\/\\/(.*):([0-9]+)\\/([a-zA-Z]+)"); 46 Pattern.compile("(.*)\\/\\/(.*):([0-9]+)\\/([a-zA-Z]+)");
55 47
56 public static final Pattern DB_PSQL_URL_PATTERN = 48 public static final Pattern DB_PSQL_URL_PATTERN =
124 layerInfo.setData("geom FROM river_axes"); 116 layerInfo.setData("geom FROM river_axes");
125 } 117 }
126 layerInfo.setFilter("river_id = " + riverID + " and kind_id = 1"); 118 layerInfo.setFilter("river_id = " + riverID + " and kind_id = 1");
127 layerInfo.setTitle(riverName + " RiverAxis"); 119 layerInfo.setTitle(riverName + " RiverAxis");
128 120
129 File layerFile = new File(
130 Config.getConfigDirectory().getParentFile(),
131 "river-" + riverName + ".map");
132 Template template = getTemplateByName("riveraxis-layer.vm"); 121 Template template = getTemplateByName("riveraxis-layer.vm");
133 if (template == null) { 122 if (template == null) {
134 log.warn("Template riveraxis-layer.vm not found."); 123 log.warn("Template riveraxis-layer.vm not found.");
135 return; 124 return;
136 } 125 }
137 126
138 try { 127 try {
128 File layerFile = new File(
129 getShapefileBaseDir(),
130 "river-" + riverName + ".map");
139 writeLayer(layerInfo, layerFile, template); 131 writeLayer(layerInfo, layerFile, template);
140 } 132 }
141 catch (FileNotFoundException e) { 133 catch (IOException e) {
142 log.warn(e.getLocalizedMessage(), e); 134 log.warn(e.getLocalizedMessage(), e);
143 } 135 }
144 } 136 }
145 137
146 @Override 138 @Override
147 protected String getVelocityLogfile() { 139 protected String getVelocityLogfile() {
148 return RiverUtils.getXPathString(XPATH_RIVERMAP_VELOCITY_LOGFILE); 140 return RiverUtils.getXPathString(XPATH_RIVERMAP_VELOCITY_LOGFILE);
149 } 141 }
150 142
151 @Override 143 @Override
152 protected String getMapserverTemplatePath() {
153 return RiverUtils.getXPathString(
154 XPATH_RIVERMAP_MAPSERVER_TEMPLATE_PATH);
155 }
156
157 @Override
158 protected String getMapfilePath() { 144 protected String getMapfilePath() {
159 return RiverUtils.getXPathString(XPATH_RIVERMAP_MAPFILE_PATH); 145 return RiverUtils.getXPathString(RiverUtils.XPATH_MAPFILES_PATH)
146 + "/" + RiverUtils.getXPathString(XPATH_RIVERMAP_MAPFILE_PATH);
160 } 147 }
161 148
162 @Override 149 @Override
163 protected String getMapfileTemplate() { 150 protected String getMapfileTemplate() {
164 return RiverUtils.getXPathString(XPATH_RIVERMAP_MAPFILE_TEMPLATE); 151 return RiverUtils.getXPathString(XPATH_RIVERMAP_MAPFILE_TEMPLATE);

http://dive4elements.wald.intevation.org