annotate gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java @ 1034:50a5ce7a47b7

Implemented an odv exporter for product type 'Horizontales Schnittprofil' (issue260). gnv-artifacts/trunk@1082 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 10 May 2010 10:29:55 +0000
parents dfd02f8d3602
children 461d4489705c
rev   line source
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
1 package de.intevation.gnv.state.layer;
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
2
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
3 import java.io.File;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
4 import java.io.IOException;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
5 import java.io.OutputStream;
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
6 import java.util.ArrayList;
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
7 import java.util.Collection;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
8 import java.util.Iterator;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
9
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
10 import org.apache.log4j.Logger;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
11 import org.w3c.dom.Document;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
12 import org.w3c.dom.Node;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
13
779
b1f5f2a8840f Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 778
diff changeset
14 import com.vividsolutions.jts.geom.Geometry;
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
15 import com.vividsolutions.jts.io.ParseException;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
16 import com.vividsolutions.jts.io.WKTReader;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
17
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
18 import de.intevation.artifactdatabase.Config;
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
19 import de.intevation.artifactdatabase.XMLUtils;
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
20 import de.intevation.artifacts.ArtifactNamespaceContext;
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
21 import de.intevation.artifacts.CallContext;
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
22 import de.intevation.gnv.artifacts.context.GNVArtifactContext;
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
23 import de.intevation.gnv.geobackend.base.Result;
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
24 import de.intevation.gnv.geobackend.base.query.QueryExecutor;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
25 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
26 import de.intevation.gnv.geobackend.base.query.exception.QueryException;
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
27 import de.intevation.gnv.state.InputData;
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
28 import de.intevation.gnv.state.OutputStateBase;
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
29 import de.intevation.gnv.state.exception.StateException;
723
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
30 import de.intevation.gnv.utils.ArtifactXMLUtilities;
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
31 import de.intevation.gnv.utils.ExclusiveExec;
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
32 import de.intevation.gnv.utils.FileUtils;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
33 import de.intevation.gnv.utils.MapfileGenerator;
655
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
34 import de.intevation.gnv.utils.MetaWriter;
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
35 import de.intevation.gnv.utils.ShapeFileWriter;
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
36
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
37 /**
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
38 * This <code>OutputState</code> is used for Layer-Products.
780
c4156275c1e1 Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 779
diff changeset
39 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a>
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
40 *
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
41 */
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
42 public class LayerOutputState extends OutputStateBase {
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
43
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
44 /**
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
45 * the logger, used to log exceptions and additonaly information
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
46 */
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
47 private static Logger log = Logger.getLogger(LayerOutputState.class);
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
48
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
49 /**
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
50 * The UID of this Class.
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
51 */
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
52 private static final long serialVersionUID = 9180957321704424049L;
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
53
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
54 /**
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
55 * The Basename of the Templates for the WMS-Exports
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
56 */
655
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
57 public static final String LAYER_MODEL = "layer";
835
2423cefe7d39 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 828
diff changeset
58
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
59 /**
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
60 * The Name of the Shapefile which will be generated.
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
61 */
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
62 public static final String SHAPEFILE_NAME = "data";
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
63
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
64 /**
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
65 * The ID for the Query fetching the Layer from the DB
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
66 */
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
67 private String dataQueryID = null;
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
68
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
69 /**
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
70 * The ID for the Query fetching the Geometry from the DB
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
71 * which should be used to Clip the Layerdata
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
72 */
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
73 private String geometryQueryID = null;
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
74
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
75 /**
835
2423cefe7d39 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 828
diff changeset
76 * The ID of the Query for fetching the Columnnames of the Table which
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
77 * should put into the Shapefile.
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
78 */
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
79 private String columnQueryID = null;
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
80
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
81 /**
835
2423cefe7d39 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 828
diff changeset
82 * The ID of the Query for fetching the Information which kind of Geometry
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
83 * should be put into the Shapefile.
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
84 */
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
85 private String geometryTypeQueryID = null;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
86
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
87 /**
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
88 * The ID for the Value which will hold the Geometry-Value
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
89 */
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
90 private String geometryID = null;
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
91
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
92 /**
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
93 * Flag for synchronized Access of the Shapefile.
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
94 */
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
95 private Boolean shapeFileLock = new Boolean(true);
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
96
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
97 /**
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
98 * The Path where the Shapefile is stored.
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
99 */
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
100 private String shapeFilePath;
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
101
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
102 /**
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
103 * Constructor
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
104 */
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
105 public LayerOutputState() {
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
106 super();
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
107 }
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
108
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
109 public void out(Document format, Collection<InputData> inputData,
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
110 OutputStream outputStream, String uuid,
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
111 CallContext callContext) throws StateException {
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
112 log.debug("LayerOutputState.out");
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
113 String outputMode = XMLUtils.xpathString(
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
114 format, XPATH_OUTPUT_MODE, ArtifactNamespaceContext.INSTANCE);
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
115 if (outputMode.equalsIgnoreCase("wms")) {
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
116
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
117 Collection<LayerMetaData> layerMetaData =
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
118 this.getRequestedLayerMetadata();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
119 if (layerMetaData != null && !layerMetaData.isEmpty()){
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
120 XMLUtils.toStream(this.getWMS(uuid, callContext,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
121 layerMetaData,inputData),
723
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
122 outputStream);
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
123 }else{
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
124 this.writeExceptionReport2Stream(outputStream);
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
125 }
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
126 }else if (outputMode.equalsIgnoreCase("zip")){
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
127 Collection<LayerMetaData> layerMetaData =
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
128 this.getRequestedLayerMetadata();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
129
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
130 if (layerMetaData != null && !layerMetaData.isEmpty()){
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
131 this.writeZip(uuid, callContext,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
132 outputStream, layerMetaData);
723
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
133 }else{
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
134 this.writeExceptionReport2Stream(outputStream);
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
135 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
136
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
137 }
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
138 }
723
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
139
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
140 /**
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
141 * Writes an exception to an output stream.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
142 *
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
143 * @param outputStream The output stream used to write the exception to.
723
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
144 */
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
145 private void writeExceptionReport2Stream(OutputStream outputStream) {
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
146 Document document = XMLUtils.newDocument();
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
147 ArtifactXMLUtilities.
723
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
148 createExceptionReport("No Data to Export", document);
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
149 XMLUtils.toStream(document,outputStream);
199982e8866e Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents: 655
diff changeset
150 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
151
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
152 /**
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
153 * Returns the Metadata for the requested Layers for fetching the data
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
154 * of the Layer and generating the Layer and WMS.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
155 * @return the Metadata for the requested Layers
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
156 */
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
157 private Collection<LayerMetaData> getRequestedLayerMetadata(){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
158 log.debug("LayerOutputState.getRequestedLayerMetadata");
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
159 Collection<Result> result = this.getData(this.queryID);
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
160 Collection<LayerMetaData> returnValue = null;
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
161 if (result != null){
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
162 QueryExecutor queryExecutor = QueryExecutorFactory.getInstance()
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
163 .getQueryExecutor();
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
164 Iterator<Result> it = result.iterator();
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
165 returnValue = new ArrayList<LayerMetaData>(result.size());
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
166 while (it.hasNext()){
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
167 Result resultValue = it.next();
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
168 String table = resultValue.getString(0);
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
169 String geometryType = this.getGeometryType(table, queryExecutor);
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
170 String where = resultValue.getString(1);
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
171 String columns = this.fetchColumns(table);
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
172 String templateID = resultValue.getString(2);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
173 String[] queryValues = null;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
174 String geometryWKT = null;
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
175 if (this.geometryID != null){
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
176 InputData geometryInputData =
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
177 this.inputData.get(this.geometryID);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
178 if (geometryInputData != null){
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
179 try {
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
180
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
181 Collection<Result> geometryData = queryExecutor
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
182 .executeQuery(this.geometryQueryID,
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
183 new String[]{geometryInputData.getValue()});
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
184 Iterator<Result> git = geometryData.iterator();
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
185 if (git.hasNext()){
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
186 Result geometryValue = git.next();
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
187 geometryWKT = geometryValue.getString(0);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
188 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
189 } catch (QueryException e) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
190 log.error(e,e);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
191 }
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
192 queryValues = new String[]{columns,
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
193 table,
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
194 where,
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
195 geometryWKT};
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
196 }else{
729
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
197 //Look into the presetting for an WKT
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
198 InputData geometryWKTData = this.preSettings != null ?
742
cae93c709548 Fixed NPE using the Presettings-Object without given Presettings.
Tim Englich <tim.englich@intevation.de>
parents: 729
diff changeset
199 this.preSettings.get("geometry") :
cae93c709548 Fixed NPE using the Presettings-Object without given Presettings.
Tim Englich <tim.englich@intevation.de>
parents: 729
diff changeset
200 null ;
729
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
201 if (geometryWKTData != null){
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
202 queryValues = new String[]{columns,
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
203 table,
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
204 where,
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
205 geometryWKTData.getValue()};
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
206 }else{
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
207 queryValues = new String[]{columns,table,where};
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
208 }
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
209 }
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
210 }else{
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
211 //Look into the presetting for an WKT
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
212 InputData geometryWKTData = this.preSettings != null ?
742
cae93c709548 Fixed NPE using the Presettings-Object without given Presettings.
Tim Englich <tim.englich@intevation.de>
parents: 729
diff changeset
213 this.preSettings.get("geometry") :
cae93c709548 Fixed NPE using the Presettings-Object without given Presettings.
Tim Englich <tim.englich@intevation.de>
parents: 729
diff changeset
214 null ;
729
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
215 if (geometryWKTData != null){
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
216 queryValues = new String[]{columns,
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
217 table,
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
218 where,
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
219 geometryWKTData.getValue()};
d23ad22bcfe7 Integrated lookup of the Geometry which was put to the Artifact during the Instantiation
Tim Englich <tim.englich@intevation.de>
parents: 728
diff changeset
220 }else{
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
221 queryValues = new String[]{columns,table,where};
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
222 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
223 }
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
224 returnValue.add(new LayerMetaData(table, geometryType,
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
225 where, columns,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
226 templateID, queryValues,
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
227 geometryWKT));
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
228 }
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
229 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
230 return returnValue;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
231 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
232
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
233 /**
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
234 * Fetches the Data from the Databasebackend.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
235 *
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
236 * @return the resultdata.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
237 */
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
238 protected Collection<Result> fetchData(LayerMetaData layerMetaData){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
239 log.debug("LayerOutputState.fetchData");
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
240 Collection<Result> data = null;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
241 QueryExecutor queryExecutor = QueryExecutorFactory.getInstance()
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
242 .getQueryExecutor();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
243 try {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
244 data = queryExecutor.executeQuery(dataQueryID,
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
245 layerMetaData.getQueryValues());
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
246 if (data != null && layerMetaData.getGeometryWKT() != null){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
247 WKTReader wktReader = new WKTReader();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
248 Geometry border = wktReader.read(layerMetaData.getGeometryWKT());
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
249 Iterator<Result> dataIt = data.iterator();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
250 while (dataIt.hasNext()){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
251 // Trim the Geometries using the
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
252 // Geometry if one is available.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
253 Result current = dataIt.next();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
254 String currentWKT = current.getString(0);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
255 Geometry currentGeometry = null;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
256 try {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
257 currentGeometry = wktReader.read(currentWKT);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
258 } catch (Exception e) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
259 log.error("Error parsing Geometry "+ currentWKT);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
260 log.error(e,e);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
261 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
262 if (currentGeometry != null){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
263 Geometry newGeometry = currentGeometry.intersection(border);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
264 current.addColumnValue(0, newGeometry.toText());
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
265 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
266 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
267 }
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
268 } catch (QueryException e) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
269 log.error(e,e);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
270 } catch (ParseException e){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
271 log.error(e,e);
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
272 }
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
273 return data;
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
274 }
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
275
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
276
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
277 /**
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
278 * This method determines the geometry type on basis of a table name.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
279 *
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
280 * @param tableName Name of the table in the database.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
281 * @param queryExecutor The QueryExecutor.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
282 * @return the geometry type as string (e.g. MultiPolygon, Polygon, etc).
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
283 */
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
284 private String getGeometryType(String tableName,
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
285 QueryExecutor queryExecutor){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
286 String returnValue = null;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
287 String[] tables = tableName.toUpperCase().split(",");
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
288 String[] filter = tables[0].split("\\.");
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
289 try {
803
feae2f9d6c6f Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 799
diff changeset
290 Collection<Result> result =
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
291 queryExecutor.executeQuery(this.geometryTypeQueryID, filter);
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
292 if (result != null && !result.isEmpty())
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
293 {
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
294 int geometryCode = result.iterator().next().getInteger(0);
803
feae2f9d6c6f Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 799
diff changeset
295 if (geometryCode == 11 ||
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
296 geometryCode == 10){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
297 returnValue = "MultiPolygon";
803
feae2f9d6c6f Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 799
diff changeset
298 }else if (geometryCode == 9 ||
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
299 geometryCode == 8){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
300 returnValue = "MultiLineString";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
301 }else if (geometryCode == 7){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
302 returnValue = "MultiPoint";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
303 }else if (geometryCode == 6){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
304 returnValue = "GeometryCollection";
803
feae2f9d6c6f Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 799
diff changeset
305 }else if (geometryCode == 5 ||
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
306 geometryCode == 4){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
307 returnValue = "Polygon";
803
feae2f9d6c6f Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 799
diff changeset
308 }else if (geometryCode == 3 ||
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
309 geometryCode == 2){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
310 returnValue = "LineString";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
311 }else if (geometryCode == 1){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
312 returnValue = "Point";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
313 }else if (geometryCode == 0){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
314 returnValue = "Geometry";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
315 }
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
316 }
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
317 } catch (QueryException e) {
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
318 log.error(e,e);
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
319 }
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
320 return returnValue;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
321 }
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
322
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
323
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
324 /**
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
325 * Fetch the columns of a specific table.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
326 *
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
327 * @param tableName The name of the table.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
328 * @return the columns as string.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
329 */
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
330 private String fetchColumns(String tableName){
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
331 String returnValue = null;
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
332 try {
756
1614b27dcbfa Added Support of Layers which are Joined from two Tables.
Tim Englich <tim.englich@intevation.de>
parents: 742
diff changeset
333 String[] tables = tableName.toUpperCase().split(",");
1614b27dcbfa Added Support of Layers which are Joined from two Tables.
Tim Englich <tim.englich@intevation.de>
parents: 742
diff changeset
334 String[] filter = tables[0].split("\\.");
1614b27dcbfa Added Support of Layers which are Joined from two Tables.
Tim Englich <tim.englich@intevation.de>
parents: 742
diff changeset
335 // Only use the first Table the second one will be ignored.
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
336 QueryExecutor queryExecutor = QueryExecutorFactory.getInstance()
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
337 .getQueryExecutor();
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
338 Collection<Result> columnData = queryExecutor.
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
339 executeQuery(this.columnQueryID,
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
340 filter);
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
341 if (columnData != null && !columnData.isEmpty()){
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
342 StringBuffer sb = new StringBuffer();
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
343 synchronized (sb) {
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
344 Iterator<Result> it = columnData.iterator();
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
345 while(it.hasNext()){
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
346 Result current = it.next();
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
347 sb.append(current.getString(0));
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
348 if (it.hasNext()){
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
349 sb.append(" , ");
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
350 }
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
351 }
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
352 }
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
353 returnValue = sb.toString();
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
354 }
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
355 } catch (QueryException e) {
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
356 log.error(e,e);
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
357 }
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
358 return returnValue;
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
359 }
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
360
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
361
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
362 @Override
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
363 public void setup(Node configuration) {
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
364 log.debug("LayerOutputState.setup");
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
365 super.setup(configuration);
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
366 this.dataQueryID = Config.getStringXPath(configuration,
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
367 "queryID-layerdata");
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
368 this.geometryID = Config.getStringXPath(configuration,
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
369 "inputvalue-geometry");
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
370 this.geometryQueryID = Config.getStringXPath(configuration,
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
371 "queryID-geometry");
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
372
728
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
373 this.columnQueryID = "layer_colums"; //Config.getStringXPath(configuration,
f6630d0203da Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 724
diff changeset
374 // "queryID-columns");
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
375 this.geometryTypeQueryID = "geometry_type";
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
376 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
377
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
378
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
379 /**
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
380 * Write the resultdata to shapefiles.
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
381 *
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
382 * @param uuid The UUID of the current artifact.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
383 * @param data The finalized data used for shapefile creation.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
384 * @param callContext The CallContext object.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
385 * @param geometryType The geometry type.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
386 * @return the shapefile path.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
387 */
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
388 protected String writeToShapeFile(
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
389 String uuid,
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
390 Collection<Result> data,
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
391 CallContext callContext,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
392 String geometryType,
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
393 int layerNumber
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
394 ) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
395 boolean success = false;
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
396 if (data != null && !data.isEmpty()){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
397 File shapeDir = new File(shapeFilePath);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
398 try {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
399 File shapeFile = new File(shapeDir, createShapeFileName(layerNumber));
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
400 if (!ShapeFileWriter.writeDataToFile(shapeFile, "data", data,geometryType)){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
401 log.error("writing data into shapefile failed");
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
402 return null;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
403 }
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
404 success = true;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
405 callContext.afterCall(CallContext.STORE);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
406 return shapeFilePath;
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
407 }
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
408 finally {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
409 if (!success) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
410 FileUtils.deleteRecursive(shapeDir);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
411 }
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
412 }
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
413 }else{
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
414 return null;
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
415 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
416 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
417
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
418 /**
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
419 * Check if the ShapeDir exists and if it exists delete all Contents
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
420 * in it. If it not exists the Director will be created.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
421 * @param baseDir the BaseDirectory for all ShapeDirs
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
422 * @param uuid the UUID which is used to create the Directory
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
423 * @return true if the directory exists or could be created.
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
424 * false if the directory could not be created.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
425 */
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
426 private boolean createShapeDir(File baseDir, String uuid){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
427 File shapeDir = new File(baseDir, uuid);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
428 boolean createdDir = false;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
429 synchronized (shapeFileLock) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
430 if (shapeDir.exists()) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
431 FileUtils.deleteContent(shapeDir); // TODO Place on getZip and getWMS
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
432 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
433 else if (!shapeDir.mkdirs()) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
434 log.error("cannot create directory '"
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
435 + shapeDir.getAbsolutePath() + "'");
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
436 return false;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
437 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
438 createdDir = true;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
439 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
440 shapeFilePath = shapeDir.getAbsolutePath();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
441 return createdDir;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
442 }
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
443
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
444 /**
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
445 * Create a zip archive with the shapefiles of the given shapefiles path and
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
446 * write it to <code>output</code>.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
447 *
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
448 * @param uuid The UUID of the current artifact.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
449 * @param callContext The CallContext object.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
450 * @param output The output stream.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
451 * @param data The data to be written to shapefile.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
452 * @param geometryType The geometry type.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
453 * @throws StateException if an error occured while zipfile creation.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
454 */
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
455 protected void writeZip(
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
456 String uuid,
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
457 CallContext callContext,
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
458 OutputStream output,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
459 Collection<LayerMetaData> layerMetaData
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
460 )
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
461 throws StateException
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
462 {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
463 try {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
464 String p = getShapeFilePath();
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
465 if (p != null) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
466 File dir = new File(p);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
467 if (dir.isDirectory()) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
468 FileUtils.createZipArchive(dir, output);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
469 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
470 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
471 else {
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
472 File baseDir = shapefileDirectory(callContext);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
473 if (!this.createShapeDir(baseDir, uuid)){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
474 return;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
475 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
476 Iterator<LayerMetaData> it = layerMetaData.iterator();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
477 int i = 1;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
478 while(it.hasNext()){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
479 LayerMetaData lmd = it.next();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
480 Collection<Result> data = this.fetchData(lmd);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
481 p = writeToShapeFile(uuid, data, callContext,lmd.getGeometryType(),i++);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
482 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
483 if (p != null) {
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
484 FileUtils.createZipArchive(new File(p), output);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
485 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
486 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
487 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
488 catch (IOException ioe) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
489 log.error(ioe.getLocalizedMessage(), ioe);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
490 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
491 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
492
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
493 /**
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
494 * Returns the shapefile path.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
495 *
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
496 * @return the shapefile path.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
497 */
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
498 public String getShapeFilePath() {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
499 synchronized (shapeFileLock) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
500 return shapeFilePath;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
501 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
502 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
503
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
504 /**
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
505 * Returns the basic-directory where the Shapefiles should be placed in.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
506 * @param callContext the Context of this Call
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
507 * @return the Directory where the Shapefiles could be placed in.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
508 * (Please create an own directory in this dir and not put the
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
509 * Files directly in it)
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
510 */
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
511 private static File shapefileDirectory(CallContext callContext) {
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
512 // Code was taken from HorizontalCrossSectionMeshOutputState
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
513 GNVArtifactContext context =
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
514 (GNVArtifactContext)callContext.globalContext();
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
515 File dir = (File)context.get(
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
516 GNVArtifactContext.HORIZONTAL_CROSS_SECTION_RESULT_SHAPEFILE_PATH_KEY);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
517 return dir != null
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
518 ? dir
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
519 : GNVArtifactContext.DEFAULT_HORIZONTAL_CROSS_SECTION_PROFILE_SHAPEFILE_PATH;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
520 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
521
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
522
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
523 @Override
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
524 public void endOfLife(Object globalContext) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
525 super.endOfLife(globalContext);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
526 // do it in background
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
527 new Thread() {
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
528 @Override
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
529 public void run() {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
530 String path = resetShapeFilePath();
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
531 if (path == null) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
532 return;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
533 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
534 File dir = new File(path);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
535 for (int i = 0; i < 10; ++i) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
536 if (!dir.exists() || FileUtils.deleteRecursive(dir)) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
537 MapfileGenerator.getInstance().update();
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
538 return;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
539 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
540 try {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
541 Thread.sleep(10000L);
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
542 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
543 catch (InterruptedException ie) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
544 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
545 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
546
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
547 log.error("failed to remove directory '" + path + "'");
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
548 } // run
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
549 }.start();
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
550 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
551
822
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
552 /**
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
553 * Resets the Settings e.g shapeFilePath and templateID
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
554 * @return
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
555 */
ac1b9f00603f Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents: 813
diff changeset
556 private String resetShapeFilePath() {
649
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
557 synchronized (shapeFileLock) {
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
558 String path = shapeFilePath;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
559 shapeFilePath = null;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
560 return path;
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
561 }
4fc97074eb90 Added Support for writing Shapefiles and Export them as an Zipfile for the Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 616
diff changeset
562 }
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
563
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
564
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
565 /**
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
566 * Write data to shapefiles and feed a map service with information about
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
567 * these shapefiles. The map service can be queried for displaying
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
568 * corresponding layers as WMS.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
569 *
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
570 * @param uuid The UUID of the current artifact.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
571 * @param callContext The CallContext object.
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
572 * @param layerMetaData The Metadata which is required to create the
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
573 * different Layers.
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
574 * @param inputData the Parameters which are send by the out-Call.
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
575 * @return a document with some meta information (shapefile path, geometry
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
576 * type, time to live of the current artifact, etc).
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
577 * @throws StateException if an error occured while shapefile writing.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
578 */
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
579 protected Document getWMS(String uuid,
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
580 CallContext callContext,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
581 Collection<LayerMetaData> layerMetaData,
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
582 Collection<InputData> inputData)
655
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
583 throws StateException
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
584 {
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
585 String path = getShapeFilePath();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
586 if (path != null && new File(path).isDirectory()){
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
587 return this.refreshMetaFile(layerMetaData, inputData,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
588 uuid, callContext);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
589 }else{
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
590 Document document = XMLUtils.newDocument();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
591 if (this.shapeFilePath == null){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
592 File baseDir = shapefileDirectory(callContext);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
593 if (!this.createShapeDir(baseDir, uuid)){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
594 // TODO Insert Error Report
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
595 return document;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
596 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
597 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
598 path = getShapeFilePath();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
599 Iterator<LayerMetaData> it = layerMetaData.iterator();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
600 Node meta = null;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
601 int layerNumber = 0;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
602 while (it.hasNext()){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
603 LayerMetaData lmd = it.next();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
604 layerNumber ++;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
605 String geometryType = lmd.getGeometryType();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
606 String templateId = lmd.getTemplateID();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
607 ExclusiveExec.UniqueKey key = ExclusiveExec.INSTANCE.acquire(uuid);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
608 try{
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
609 Collection<Result> data = this.fetchData(lmd);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
610 if (data != null &&
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
611 (this.writeToShapeFile(uuid, data, callContext,
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
612 geometryType,layerNumber)) != null) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
613 String paramType = findParameterTitle(geometryType,templateId);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
614 String title = getLayerTitle(inputData);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
615 if (title == null) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
616 title = uuid+"_"+layerNumber;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
617 }else{
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
618 title = title+"_"+layerNumber;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
619 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
620 if (meta == null){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
621 meta = MetaWriter.writeLayerMeta(callContext,document);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
622 }
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
623 MetaWriter.writeLayerMeta(callContext, document,
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
624 meta, uuid, paramType,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
625 this.determineGeometryType(geometryType),
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
626 createShapeFileName(layerNumber),
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
627 title);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
628 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
629 if (meta != null && !it.hasNext()) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
630 MetaWriter.writeMetaFile(path,document);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
631 MapfileGenerator.getInstance().update();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
632 return document;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
633 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
634 }finally{
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
635 ExclusiveExec.INSTANCE.release(key);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
636 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
637 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
638 return document;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
639 }
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
640 }
655
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
641
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
642 /**
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
643 * Creates the name of the Shapefile
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
644 * @param layerNumber the Number of the Layer
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
645 * @return the create name of the Shapefile.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
646 */
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
647 private String createShapeFileName(int layerNumber) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
648 return SHAPEFILE_NAME+"_"+layerNumber+".shp";
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
649 }
655
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
650
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
651 /**
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
652 * Method that refreshes the Metadatafile for publishing the WMS
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
653 * Without generating the Data ones again.
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
654 * @param layerMetaData the Metadata which is required to create the Layers
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
655 * @param inputData the Inputdata which was sent by the Client
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
656 * @param uuid the uuid of the Artifact
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
657 * @param callContext the context of this Call
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
658 * @return a refreshed Metadata-Document
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
659 */
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
660 private Document refreshMetaFile(Collection<LayerMetaData> layerMetaData,
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
661 Collection<InputData> inputData,
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
662 String uuid,
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
663 CallContext callContext){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
664 Document document = XMLUtils.newDocument();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
665 Node meta = null;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
666 int layerNumber = 0;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
667 Iterator<LayerMetaData> it = layerMetaData.iterator();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
668 while (it.hasNext()){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
669 LayerMetaData lmd = it.next();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
670 layerNumber ++;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
671 String geometryType = lmd.getGeometryType();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
672 String templateId = lmd.getTemplateID();
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
673 String title = getLayerTitle(inputData);
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
674 if (title == null) {
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
675 title = uuid+"_"+layerNumber;
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
676 }else{
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
677 title = title+"_"+layerNumber;
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
678 }
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
679 callContext.putContextValue(
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
680 MetaWriter.CONTEXT_LAYER_TITLE, title);
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
681 String paramType = findParameterTitle(geometryType,templateId);
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
682 if (log.isDebugEnabled()) {
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
683 log.debug("Layer title: " + title);
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
684 log.debug("Layer type: " + paramType);
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
685 }
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
686 if (meta == null){
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
687 meta = MetaWriter.writeLayerMeta(callContext,document);
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
688 }
870
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
689 MetaWriter.writeLayerMeta(callContext, document,
dfd02f8d3602 Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 859
diff changeset
690 meta, uuid, paramType,
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
691 this.determineGeometryType(geometryType),
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
692 createShapeFileName(layerNumber),
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
693 title);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
694 if (meta != null && !it.hasNext()) {
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
695 MetaWriter.writeMetaFile(getShapeFilePath(),document);
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
696 MapfileGenerator.getInstance().update();
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
697 return document;
655
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
698 }
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
699 }
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
700 return document;
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
701 }
778
9a828e5a2390 Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 756
diff changeset
702
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
703 /**
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
704 * Returns the parameterType for the Layer.
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
705 * @param geometryType
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
706 * @return
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
707 */
859
3fbabd4803d7 ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents: 853
diff changeset
708 private String findParameterTitle(String geometryType, String templateID) {
828
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
709 String paramType = LAYER_MODEL+"_"+templateID;
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
710 if (!MapfileGenerator.getInstance().templateExists(paramType)){
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
711 // If the template doesn't exist the Defaulttemplates will be used.
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
712 paramType = LAYER_MODEL+"_"+
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
713 this.determineDefaultTemplateName(geometryType);
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
714 }
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
715 return paramType;
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
716 }
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
717
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
718 /**
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
719 * Find the title for a wms layer specified by the user.
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
720 *
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
721 * @param inputData A collection with InputData objects.
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
722 * @return the title.
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
723 */
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
724 protected String getLayerTitle(Collection<InputData> inputData) {
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
725 for (InputData data: inputData) {
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
726 String name = data.getName();
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
727 if (name != null && name.equals("title")) {
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
728 return (String) data.getValue();
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
729 }
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
730 }
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
731 return null;
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
732 }
28028979c813 Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents: 822
diff changeset
733
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
734
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
735 /**
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
736 * Turns the geometry type into a form used for the templating mechanism
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
737 * while mapfile generation.
835
2423cefe7d39 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 828
diff changeset
738 *
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
739 * @param geometryType The original geometry type.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
740 * @return a valid geometry type fpr the template mechanism.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
741 */
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
742 private String determineGeometryType(String geometryType){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
743 String returnValue = geometryType.toLowerCase();
655
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
744 if (returnValue.equalsIgnoreCase("linestring")){
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
745 returnValue = "Line";
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
746 }else if (returnValue.equalsIgnoreCase("multilinestring")){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
747 returnValue ="Line";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
748 }else if (returnValue.equalsIgnoreCase("multipolygon")){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
749 returnValue = "Polygon";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
750 }
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
751 return returnValue;
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
752 }
803
feae2f9d6c6f Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 799
diff changeset
753
813
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
754
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
755 /**
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
756 * Determine the default template name if no special template is existing
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
757 * for this layer.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
758 *
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
759 * @param geometryType The geometry type.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
760 * @return a default geometry fitting to the original geometry type.
79c1db3ca7cc Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
761 */
799
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
762 private String determineDefaultTemplateName(String geometryType){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
763 String returnValue = geometryType.toLowerCase();
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
764 if (returnValue.equalsIgnoreCase("multilinestring")){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
765 returnValue ="linestring";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
766 }else if (returnValue.equalsIgnoreCase("multipolygon")){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
767 returnValue = "polygon";
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
768 }else if (returnValue.equalsIgnoreCase("multipoint")){
feeaf5aec552 ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents: 780
diff changeset
769 returnValue = "point";
655
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
770 }
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
771 return returnValue;
6eccb68a8b99 Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents: 649
diff changeset
772 }
616
93978859fa9e Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff changeset
773 }
836
05bf8534a35a Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 835
diff changeset
774 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org