annotate artifacts/src/main/java/org/dive4elements/river/artifacts/WMSBuildingsArtifact.java @ 7471:fff862f4ef76

Experimental caching of datacage recommendations. The respective hook is called a lot and running the datacage over and over again when loading data can be expensive. So the generated recommendations are cached for some time. Hopefully this improves the overall speed of loading data from the datacage.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 30 Oct 2013 15:26:21 +0100
parents af13ceeba52a
children 8d5ca5175038
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
9 package org.dive4elements.river.artifacts;
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.util.List;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import org.w3c.dom.Document;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.apache.log4j.Logger;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import com.vividsolutions.jts.geom.Envelope;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
19 import org.dive4elements.artifacts.ArtifactFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
20 import org.dive4elements.artifacts.CallMeta;
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
22 import org.dive4elements.artifactdatabase.state.DefaultOutput;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
23 import org.dive4elements.artifactdatabase.state.Facet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
24 import org.dive4elements.artifactdatabase.state.State;
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
26 import org.dive4elements.river.model.River;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
27 import org.dive4elements.river.model.Building;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
28
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
29 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
30 import org.dive4elements.river.artifacts.model.RiverFactory;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
31 import org.dive4elements.river.utils.RiverUtils;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5404
diff changeset
32 import org.dive4elements.river.utils.GeometryUtils;
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 public class WMSBuildingsArtifact extends WMSDBArtifact {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 public static final String NAME = "buildings";
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 private static final Logger logger =
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 Logger.getLogger(WMSBuildingsArtifact.class);
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 public void setup(
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 String identifier,
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 ArtifactFactory factory,
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 Object context,
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 CallMeta callMeta,
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 Document data)
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 logger.debug("WMSBuildingsArtifact.setup");
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 super.setup(identifier, factory, context, callMeta, data);
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 public String getName() {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 return NAME;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 public State getCurrentState(Object cc) {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 State s = new BuildingsState(this);
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
4497
a2735a4bf75e Change facets member variable to private
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3918
diff changeset
68 List<Facet> fs = getFacets(getCurrentStateId());
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 DefaultOutput o = new DefaultOutput(
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 "floodmap",
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 "floodmap",
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 "image/png",
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 fs,
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 "map");
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 s.getOutputs().add(o);
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 return s;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 public static class BuildingsState extends WMSDBState implements FacetTypes
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 private static final Logger logger =
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 Logger.getLogger(BuildingsState.class);
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 protected int riverId;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 public BuildingsState(WMSDBArtifact artifact) {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 super(artifact);
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 riverId = 0;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 protected String getFacetType() {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 return FLOODMAP_BUILDINGS;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 protected String getUrl() {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
102 return RiverUtils.getUserWMSUrl(artifact.identifier());
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 protected String getSrid() {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 River river = RiverFactory.getRiver(getRiverId());
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
108 return RiverUtils.getRiverSrid(river.getName());
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 @Override
3918
2fdbe78a8fc2 Fixed various projection issues during map creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3305
diff changeset
112 protected Envelope getExtent(boolean reproject) {
5404
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
113 List<Building> buildings;
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
114 String kind = getIdPart(2);
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
115
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
116 if (kind != null) {
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
117 buildings = Building.getBuildings(getRiverId(), Integer.parseInt(kind));
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
118 } else {
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
119 buildings = Building.getBuildings(getRiverId(), name);
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
120 }
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 Envelope max = null;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 for (Building b: buildings) {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 Envelope env = b.getGeom().getEnvelopeInternal();
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 if (max == null) {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 max = env;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 continue;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 max.expandToInclude(env);
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 }
3305
b24920235944 Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3301
diff changeset
134
3918
2fdbe78a8fc2 Fixed various projection issues during map creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3305
diff changeset
135 return max != null && reproject
3301
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2699
diff changeset
136 ? GeometryUtils.transform(max, getSrid())
c8f670ae96e8 Create extent of a map layer in the correct coordinate reference system.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2699
diff changeset
137 : max;
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141 protected String getFilter() {
5404
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
142 // The expected id string is:
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
143 // river_id;layer-name;kind
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
144
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
145 String kind = getIdPart(2);
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
146 if (kind != null) {
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
147 // If kind is provided we filter by kind
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
148 return "river_id=" + String.valueOf(getRiverId()) +
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
149 " AND kind_id=" + kind;
08262e0ce57a Add buildings with kinds to datacage
Andre Heinecke <aheinecke@intevation.de>
parents: 4497
diff changeset
150 }
2683
f5af3adb3b95 Improved datacage configuration for floodmaps and maps and modified the WMS layer artifacts to support names for layers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1871
diff changeset
151 return "river_id=" + String.valueOf(getRiverId()) +
f5af3adb3b95 Improved datacage configuration for floodmaps and maps and modified the WMS layer artifacts to support names for layers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1871
diff changeset
152 " AND name='" + getName() + "'";
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
153 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
154
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
155 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156 protected String getDataString() {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157 String srid = getSrid();
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
158
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
159 if (RiverUtils.isUsingOracle()) {
1871
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 return "geom FROM buildings USING SRID " + srid;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
162 else {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163 return "geom FROM buildings USING UNIQUE id USING SRID " + srid;
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167 @Override
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 protected String getGeometryType() {
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 return "LINE";
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 } // end of WMSKmState
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 }
257f7b54a943 Added new WMSBuildingsArtifact for displaying buildings in maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org