Mercurial > dive4elements > gnv-client
annotate gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java @ 1106:8ce8979f51df
Added the transition chain for the external mapviewer call (issue318).
gnv-artifacts/trunk@1237 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 29 Jun 2010 07:09:13 +0000 |
parents | faae3fc7b792 |
children | 19182eaccc8d |
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 |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
14 import com.vividsolutions.jts.geom.Envelope; |
779
b1f5f2a8840f
Ordered imports. Removed needless imports. Removed empty headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
778
diff
changeset
|
15 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
|
16 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
|
17 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
|
18 |
616
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.Config; |
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.artifactdatabase.XMLUtils; |
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.ArtifactNamespaceContext; |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
22 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
|
23 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
|
24 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
|
25 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
|
26 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
|
27 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
|
28 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
|
29 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
|
30 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
|
31 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
|
32 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
|
33 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
|
34 import de.intevation.gnv.utils.MapfileGenerator; |
655
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
35 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
|
36 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
|
37 |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
38 /** |
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
|
39 * 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
|
40 * @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
|
41 * |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
42 */ |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
43 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
|
44 |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
45 /** |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
46 * 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
|
47 */ |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
48 private static Logger log = Logger.getLogger(LayerOutputState.class); |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
49 |
616
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
50 /** |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
51 * 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
|
52 */ |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
53 private static final long serialVersionUID = 9180957321704424049L; |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
54 |
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
|
55 /** |
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 * 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
|
57 */ |
655
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
58 public static final String LAYER_MODEL = "layer"; |
835
2423cefe7d39
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
828
diff
changeset
|
59 |
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
|
60 /** |
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 * 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
|
62 */ |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
63 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
|
64 |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
65 /** |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
66 * 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
|
67 */ |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
68 private String dataQueryID = null; |
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
69 |
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
|
70 /** |
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 * 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
|
72 * 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
|
73 */ |
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
|
74 private String geometryQueryID = null; |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
75 |
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
|
76 /** |
835
2423cefe7d39
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
828
diff
changeset
|
77 * 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
|
78 * 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
|
79 */ |
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
|
80 private String columnQueryID = null; |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
81 |
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
|
82 /** |
835
2423cefe7d39
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
828
diff
changeset
|
83 * 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
|
84 * 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
|
85 */ |
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
|
86 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
|
87 |
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
|
88 /** |
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
|
89 * 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
|
90 */ |
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
|
91 private String geometryID = null; |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
92 |
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
|
93 /** |
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 * 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
|
95 */ |
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
|
96 private Boolean shapeFileLock = new Boolean(true); |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
97 |
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
|
98 /** |
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 * 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
|
100 */ |
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
|
101 private String shapeFilePath; |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
102 |
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
|
103 /** |
616
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
104 * Constructor |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
105 */ |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
106 public LayerOutputState() { |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
107 super(); |
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 |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
110 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
|
111 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
|
112 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
|
113 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
|
114 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
|
115 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
|
116 if (outputMode.equalsIgnoreCase("wms")) { |
870
dfd02f8d3602
Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
859
diff
changeset
|
117 |
dfd02f8d3602
Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
859
diff
changeset
|
118 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
|
119 this.getRequestedLayerMetadata(); |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
120 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
|
121 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
|
122 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
|
123 outputStream); |
199982e8866e
Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents:
655
diff
changeset
|
124 }else{ |
199982e8866e
Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents:
655
diff
changeset
|
125 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
|
126 } |
616
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
127 }else if (outputMode.equalsIgnoreCase("zip")){ |
870
dfd02f8d3602
Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
859
diff
changeset
|
128 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
|
129 this.getRequestedLayerMetadata(); |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
130 |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
131 if (layerMetaData != null && !layerMetaData.isEmpty()){ |
870
dfd02f8d3602
Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
859
diff
changeset
|
132 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
|
133 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
|
134 }else{ |
199982e8866e
Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents:
655
diff
changeset
|
135 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
|
136 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
137 |
616
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
138 } |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
139 } |
723
199982e8866e
Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents:
655
diff
changeset
|
140 |
199982e8866e
Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents:
655
diff
changeset
|
141 /** |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
142 * Writes an exception to an output stream. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
143 * |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
144 * @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
|
145 */ |
199982e8866e
Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents:
655
diff
changeset
|
146 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
|
147 Document document = XMLUtils.newDocument(); |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
148 ArtifactXMLUtilities. |
723
199982e8866e
Integrated ExceptionHandling if no Data was found for the given Layer.
Tim Englich <tim.englich@intevation.de>
parents:
655
diff
changeset
|
149 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
|
150 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
|
151 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
152 |
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
|
153 /** |
870
dfd02f8d3602
Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
859
diff
changeset
|
154 * 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
|
155 * 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
|
156 * @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
|
157 */ |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
158 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
|
159 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
|
160 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
|
161 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
|
162 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
|
163 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
|
164 .getQueryExecutor(); |
616
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
165 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
|
166 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
|
167 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
|
168 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
|
169 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
|
170 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
|
171 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
|
172 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
|
173 String templateID = resultValue.getString(2); |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
174 String layername = resultValue.getString(3); |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
175 String[] queryValues = null; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
176 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
|
177 if (this.geometryID != null){ |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
178 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
|
179 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
|
180 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
|
181 try { |
870
dfd02f8d3602
Removed trailing whitespace.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
859
diff
changeset
|
182 |
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
|
183 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
|
184 .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
|
185 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
|
186 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
|
187 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
|
188 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
|
189 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
|
190 } |
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 } 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
|
192 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
|
193 } |
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
|
194 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
|
195 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
|
196 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
|
197 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
|
198 }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
|
199 //Look into the presetting for an WKT |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
200 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
|
201 this.preSettings.get("geometry") : |
cae93c709548
Fixed NPE using the Presettings-Object without given Presettings.
Tim Englich <tim.englich@intevation.de>
parents:
729
diff
changeset
|
202 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
|
203 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
|
204 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
|
205 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
|
206 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
|
207 geometryWKTData.getValue()}; |
1103
faae3fc7b792
Now geometries of the generated layers will also be clipped if a polygon served by the mv-gnv-interface should be used.
Tim Englich <tim.englich@intevation.de>
parents:
1070
diff
changeset
|
208 geometryWKT = geometryWKTData.getValue(); |
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
|
209 }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
|
210 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
|
211 } |
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
|
212 } |
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
|
213 }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
|
214 //Look into the presetting for an WKT |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
215 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
|
216 this.preSettings.get("geometry") : |
cae93c709548
Fixed NPE using the Presettings-Object without given Presettings.
Tim Englich <tim.englich@intevation.de>
parents:
729
diff
changeset
|
217 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
|
218 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
|
219 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
|
220 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
|
221 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
|
222 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
|
223 }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
|
224 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
|
225 } |
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
|
226 } |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
227 returnValue.add(new LayerMetaData( |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
228 table, geometryType, where, columns, |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
229 templateID, queryValues, geometryWKT, layername)); |
616
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
230 } |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
231 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
232 return returnValue; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
233 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
234 |
859
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 * 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
|
237 * |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
238 * @return the resultdata. |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
239 */ |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
240 protected Collection<Result> fetchData(LayerMetaData layerMetaData, Envelope mbr){ |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
241 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
|
242 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
|
243 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
|
244 .getQueryExecutor(); |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
245 try { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
246 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
|
247 layerMetaData.getQueryValues()); |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
248 if (data != null){ |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
249 WKTReader wktReader = new WKTReader(); |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
250 Geometry border = null; |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
251 if (layerMetaData.getGeometryWKT() != null){ |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
252 border = wktReader.read(layerMetaData.getGeometryWKT()); |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
253 } |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
254 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
|
255 while (dataIt.hasNext()){ |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
256 // 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
|
257 // 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
|
258 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
|
259 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
|
260 Geometry currentGeometry = null; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
261 try { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
262 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
|
263 } catch (Exception e) { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
264 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
|
265 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
|
266 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
267 if (currentGeometry != null){ |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
268 if (border != null){ |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
269 currentGeometry = currentGeometry.intersection(border); |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
270 current.addColumnValue(0, currentGeometry.toText()); |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
271 } |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
272 if (mbr.isNull()){ |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
273 mbr.init(currentGeometry.getEnvelopeInternal()); |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
274 }else{ |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
275 mbr.expandToInclude(currentGeometry.getEnvelopeInternal()); |
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
276 } |
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
|
277 } |
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
|
278 } |
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
|
279 } |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
280 } catch (QueryException e) { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
281 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
|
282 } catch (ParseException e){ |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
283 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
|
284 } |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
285 return data; |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
286 } |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
287 |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
288 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
289 /** |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
290 * 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
|
291 * |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
292 * @param tableName Name of the table in the database. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
293 * @param queryExecutor The QueryExecutor. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
294 * @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
|
295 */ |
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 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
|
297 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
|
298 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
|
299 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
|
300 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
|
301 try { |
803
feae2f9d6c6f
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
799
diff
changeset
|
302 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
|
303 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
|
304 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
|
305 { |
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 int geometryCode = result.iterator().next().getInteger(0); |
803
feae2f9d6c6f
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
799
diff
changeset
|
307 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
|
308 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
|
309 returnValue = "MultiPolygon"; |
803
feae2f9d6c6f
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
799
diff
changeset
|
310 }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
|
311 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
|
312 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
|
313 }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
|
314 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
|
315 }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
|
316 returnValue = "GeometryCollection"; |
803
feae2f9d6c6f
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
799
diff
changeset
|
317 }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
|
318 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
|
319 returnValue = "Polygon"; |
803
feae2f9d6c6f
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
799
diff
changeset
|
320 }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
|
321 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
|
322 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
|
323 }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
|
324 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
|
325 }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
|
326 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
|
327 } |
feeaf5aec552
ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents:
780
diff
changeset
|
328 } |
feeaf5aec552
ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents:
780
diff
changeset
|
329 } 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
|
330 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
|
331 } |
feeaf5aec552
ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents:
780
diff
changeset
|
332 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
|
333 } |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
334 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
335 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
336 /** |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
337 * Fetch the columns of a specific table. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
338 * |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
339 * @param tableName The name of the table. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
340 * @return the columns as string. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
341 */ |
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
|
342 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
|
343 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
|
344 try { |
756
1614b27dcbfa
Added Support of Layers which are Joined from two Tables.
Tim Englich <tim.englich@intevation.de>
parents:
742
diff
changeset
|
345 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
|
346 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
|
347 // 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
|
348 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
|
349 .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
|
350 Collection<Result> columnData = queryExecutor. |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
351 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
|
352 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
|
353 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
|
354 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
|
355 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
|
356 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
|
357 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
|
358 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
|
359 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
|
360 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
|
361 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
|
362 } |
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
|
363 } |
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
|
364 } |
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
|
365 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
|
366 } |
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
|
367 } 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
|
368 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
|
369 } |
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
|
370 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
|
371 } |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
372 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
373 |
616
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
374 @Override |
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
375 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
|
376 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
|
377 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
|
378 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
|
379 "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
|
380 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
|
381 "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
|
382 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
|
383 "queryID-geometry"); |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
384 |
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
|
385 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
|
386 // "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
|
387 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
|
388 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
389 |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
390 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
391 /** |
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
|
392 * Write the resultdata to shapefiles. |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
393 * |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
394 * @param uuid The UUID of the current artifact. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
395 * @param data The finalized data used for shapefile creation. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
396 * @param callContext The CallContext object. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
397 * @param geometryType The geometry type. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
398 * @return the shapefile path. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
399 */ |
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
|
400 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
|
401 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
|
402 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
|
403 CallContext callContext, |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
404 String geometryType, |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
405 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
|
406 ) { |
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 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
|
408 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
|
409 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
|
410 try { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
411 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
|
412 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
|
413 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
|
414 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
|
415 } |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
416 success = true; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
417 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
|
418 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
|
419 } |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
420 finally { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
421 if (!success) { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
422 FileUtils.deleteRecursive(shapeDir); |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
423 } |
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
|
424 } |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
425 }else{ |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
426 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
|
427 } |
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
|
428 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
429 |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
430 /** |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
431 * 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
|
432 * 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
|
433 * @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
|
434 * @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
|
435 * @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
|
436 * 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
|
437 */ |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
438 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
|
439 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
|
440 boolean createdDir = false; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
441 synchronized (shapeFileLock) { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
442 if (shapeDir.exists()) { |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
443 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
|
444 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
445 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
|
446 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
|
447 + shapeDir.getAbsolutePath() + "'"); |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
448 return false; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
449 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
450 createdDir = true; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
451 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
452 shapeFilePath = shapeDir.getAbsolutePath(); |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
453 return createdDir; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
454 } |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
455 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
456 /** |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
457 * 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
|
458 * write it to <code>output</code>. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
459 * |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
460 * @param uuid The UUID of the current artifact. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
461 * @param callContext The CallContext object. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
462 * @param output The output stream. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
463 * @param data The data to be written to shapefile. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
464 * @param geometryType The geometry type. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
465 * @throws StateException if an error occured while zipfile creation. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
466 */ |
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
|
467 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
|
468 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
|
469 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
|
470 OutputStream output, |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
471 Collection<LayerMetaData> layerMetaData |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
472 ) |
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
|
473 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
|
474 { |
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
|
475 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
|
476 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
|
477 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
|
478 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
|
479 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
|
480 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
|
481 } |
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
|
482 } |
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
|
483 else { |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
484 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
|
485 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
|
486 return; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
487 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
488 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
|
489 int i = 1; |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
490 Envelope mbr = new Envelope(); |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
491 while(it.hasNext()){ |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
492 LayerMetaData lmd = it.next(); |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
493 Collection<Result> data = this.fetchData(lmd, mbr); |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
494 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
|
495 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
496 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
|
497 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
|
498 } |
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 } |
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 } |
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 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
|
502 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
|
503 } |
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
|
504 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
505 |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
506 /** |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
507 * Returns the shapefile path. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
508 * |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
509 * @return the shapefile path. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
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 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
|
512 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
|
513 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
|
514 } |
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 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
516 |
1044
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
517 |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
518 /** |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
519 * Set the shapefile path. |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
520 */ |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
521 public void setShapeFilePath(String shapeFilePath) { |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
522 synchronized (shapeFileLock) { |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
523 this.shapeFilePath = shapeFilePath; |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
524 } |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
525 } |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
526 |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
527 /** |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
528 * 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
|
529 * @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
|
530 * @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
|
531 * (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
|
532 * 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
|
533 */ |
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
|
534 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
|
535 // 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
|
536 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
|
537 (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
|
538 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
|
539 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
|
540 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
|
541 ? 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
|
542 : 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
|
543 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
544 |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
545 |
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
|
546 @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
|
547 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
|
548 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
|
549 // 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
|
550 new Thread() { |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
551 @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
|
552 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
|
553 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
|
554 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
|
555 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
|
556 } |
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 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
|
558 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
|
559 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
|
560 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
|
561 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
|
562 } |
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
|
563 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
|
564 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
|
565 } |
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
|
566 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
|
567 } |
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
|
568 } |
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
|
569 |
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
|
570 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
|
571 } // 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
|
572 }.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
|
573 } |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
574 |
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
|
575 /** |
ac1b9f00603f
Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents:
813
diff
changeset
|
576 * 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
|
577 * @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
|
578 */ |
ac1b9f00603f
Added more Javadoc. Removed obsolet TODO-Flags. Added missing Files to Revision 907
Tim Englich <tim.englich@intevation.de>
parents:
813
diff
changeset
|
579 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
|
580 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
|
581 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
|
582 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
|
583 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
|
584 } |
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
|
585 } |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
586 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
587 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
588 /** |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
589 * 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
|
590 * 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
|
591 * corresponding layers as WMS. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
592 * |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
593 * @param uuid The UUID of the current artifact. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
594 * @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
|
595 * @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
|
596 * 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
|
597 * @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
|
598 * @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
|
599 * type, time to live of the current artifact, etc). |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
600 * @throws StateException if an error occured while shapefile writing. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
601 */ |
1044
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
602 protected Document getWMS( |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
603 String uuid, |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
604 CallContext callContext, |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
605 Collection<LayerMetaData> layerMetaData, |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
606 Collection<InputData> inputData) |
655
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
607 throws StateException |
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
608 { |
1044
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
609 Document document = XMLUtils.newDocument(); |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
610 |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
611 File baseDir = shapefileDirectory(callContext); |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
612 File shapeDir = new File(baseDir, uuid); |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
613 |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
614 boolean success = false; |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
615 boolean createdDir = false; |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
616 |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
617 try { |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
618 // create shapefile directory or delete content if it already exists |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
619 synchronized (shapeFileLock) { |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
620 if (shapeDir.exists()) { |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
621 FileUtils.deleteContent(shapeDir); |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
622 } |
1044
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
623 else if (!shapeDir.mkdirs()) { |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
624 log.error("cannot create directory '" |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
625 + shapeDir.getAbsolutePath() + "'"); |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
626 return null; |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
627 } |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
628 setShapeFilePath(shapeDir.getAbsolutePath()); |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
629 createdDir = true; |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
630 } |
1044
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
631 |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
632 // process data |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
633 Iterator<LayerMetaData> it = layerMetaData.iterator(); |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
634 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
635 // create meta file |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
636 Document meta = MetaWriter.initMeta(); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
637 MetaWriter.insertAbstractMeta(callContext, meta); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
638 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
639 String path = getShapeFilePath(); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
640 String prefix = getLayerPrefix(inputData); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
641 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
642 if (prefix == null) { |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
643 prefix = uuid; |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
644 } |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
645 |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
646 int layerNumber = 0; |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
647 Envelope mbr = new Envelope(); |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
648 while (it.hasNext()){ |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
649 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
|
650 layerNumber ++; |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
651 |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
652 String geometryType = lmd.getGeometryType(); |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
653 String templateId = lmd.getTemplateID(); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
654 |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
655 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
|
656 try{ |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
657 Collection<Result> results = this.fetchData(lmd,mbr); |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
658 if (results != null && writeToShapeFile(uuid, results, |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
659 callContext, |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
660 geometryType, |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
661 layerNumber) != null) { |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
662 String name = getLayerName(uuid, layerNumber); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
663 String base = lmd.getLayertitle(); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
664 String title = getLayerTitle(prefix, base); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
665 String data = getLayerData( |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
666 uuid, createShapeFileName(layerNumber)); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
667 String type = determineGeometryType(geometryType); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
668 String status = "OFF"; |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
669 String model = findParameterTitle( |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
670 geometryType, templateId); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
671 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
672 MetaWriter.insertLayer( |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
673 callContext, meta, name, title, |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
674 data, model, type, status); |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
675 } |
1044
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
676 |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
677 success = true; |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
678 |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
679 if (meta != null && !it.hasNext()) { |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
680 MetaWriter.insertMbr(mbr, "EPSG:4326",meta); |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
681 MetaWriter.writeMetaFile(path, meta); |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
682 MapfileGenerator.getInstance().update(); |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
683 return meta; |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
684 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
685 }finally{ |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
686 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
|
687 } |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
688 } |
1070
7096a2e13676
Added functionality to publish the the mbr of the generated layer to
Tim Englich <tim.englich@intevation.de>
parents:
1057
diff
changeset
|
689 |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
690 return document; |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
691 } |
1044
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
692 finally { |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
693 if (!success && createdDir) { |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
694 FileUtils.deleteRecursive(shapeDir); |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
695 } |
461d4489705c
Improved directoy handling for incoming wms requests on product 'Layer' (issue269).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
870
diff
changeset
|
696 } |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
697 } |
655
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
698 |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
699 /** |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
700 * 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
|
701 * @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
|
702 * @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
|
703 */ |
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
704 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
|
705 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
|
706 } |
655
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
707 |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
756
diff
changeset
|
708 |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
709 protected String getLayerName(String uuid, int idx) { |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
710 return uuid + "_" + idx; |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
711 } |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
712 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
713 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
714 protected String getLayerTitle(String prefix, String base) { |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
715 return prefix + "_" + base; |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
716 } |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
717 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
718 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
719 protected String getLayerData(String shapeDir, String filename) { |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
720 File path = new File(shapeDir, filename); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
721 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
722 return path.toString(); |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
723 } |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
724 |
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
725 |
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
|
726 /** |
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 * 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
|
728 * @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
|
729 * @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
|
730 */ |
859
3fbabd4803d7
ISSUE252 Make it possible to export more than one Layer
Tim Englich <tim.englich@intevation.de>
parents:
853
diff
changeset
|
731 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
|
732 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
|
733 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
|
734 // 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
|
735 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
|
736 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
|
737 } |
28028979c813
Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
822
diff
changeset
|
738 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
|
739 } |
28028979c813
Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
822
diff
changeset
|
740 |
28028979c813
Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
822
diff
changeset
|
741 /** |
28028979c813
Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
822
diff
changeset
|
742 * 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
|
743 * |
28028979c813
Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
822
diff
changeset
|
744 * @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
|
745 * @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
|
746 */ |
1057
04967dc9c83f
The title of a layer can be changed by the user. Product 'Layer' and 'Horizontalschnitt' now use the same code path to write the meta information file. (issue198)
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1044
diff
changeset
|
747 protected String getLayerPrefix(Collection<InputData> inputData) { |
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
|
748 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
|
749 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
|
750 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
|
751 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
|
752 } |
28028979c813
Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
822
diff
changeset
|
753 } |
28028979c813
Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
822
diff
changeset
|
754 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
|
755 } |
28028979c813
Integrated the possibility to change the Title of an Layer in Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
822
diff
changeset
|
756 |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
757 |
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 * 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
|
760 * while mapfile generation. |
835
2423cefe7d39
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
828
diff
changeset
|
761 * |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
762 * @param geometryType The original geometry type. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
763 * @return a valid geometry type fpr the template mechanism. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
764 */ |
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
|
765 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
|
766 String returnValue = geometryType.toLowerCase(); |
655
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
767 if (returnValue.equalsIgnoreCase("linestring")){ |
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
768 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
|
769 }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
|
770 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
|
771 }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
|
772 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
|
773 } |
feeaf5aec552
ISSUE213: Wrong Geometrytype used for the generation of an Layer with Multipolygon-Geometries
Tim Englich <tim.englich@intevation.de>
parents:
780
diff
changeset
|
774 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
|
775 } |
803
feae2f9d6c6f
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
799
diff
changeset
|
776 |
813
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
777 |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
778 /** |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
779 * 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
|
780 * for this layer. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
781 * |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
782 * @param geometryType The geometry type. |
79c1db3ca7cc
Added some more javadocs.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
803
diff
changeset
|
783 * @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
|
784 */ |
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
|
785 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
|
786 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
|
787 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
|
788 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
|
789 }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
|
790 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
|
791 }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
|
792 returnValue = "point"; |
655
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
793 } |
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
794 return returnValue; |
6eccb68a8b99
Added WMS-Publishing to Product Layer
Tim Englich <tim.englich@intevation.de>
parents:
649
diff
changeset
|
795 } |
616
93978859fa9e
Added the Configuration and the Classes for the new Product Layer.
Tim Englich <tim.englich@intevation.de>
parents:
diff
changeset
|
796 } |
836
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
835
diff
changeset
|
797 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |