annotate artifacts/src/main/java/org/dive4elements/river/artifacts/CrossSectionArtifact.java @ 6101:a0078e5e3b39

Removed unused context from RangeAccess and subclasses leading to some dead code removal.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sat, 25 May 2013 19:32:58 +0200
parents af13ceeba52a
children f2722602936c
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: 5867
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: 5867
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: 4863
diff changeset
9 package org.dive4elements.river.artifacts;
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12 import java.util.List;
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
13 import java.util.NavigableMap;
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 import org.apache.log4j.Logger;
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17 import org.w3c.dom.Document;
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
19 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
20 import org.dive4elements.artifacts.ArtifactFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
21 import org.dive4elements.artifacts.CallMeta;
2126
d626ae185305 Use the fast cross section lines from backend now.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2120
diff changeset
22
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
23 import org.dive4elements.river.artifacts.access.RangeAccess;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
24 import org.dive4elements.river.artifacts.model.CrossSectionFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
25 import org.dive4elements.river.artifacts.model.FastCrossSectionLineFactory;
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
27 import org.dive4elements.river.model.FastCrossSectionLine;
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
29 import org.dive4elements.river.model.CrossSection;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
30 import org.dive4elements.river.model.CrossSectionLine;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
31 import org.dive4elements.river.artifacts.model.CrossSectionFactory;
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
33 import org.dive4elements.river.artifacts.states.StaticState;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
34
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
35 import org.dive4elements.artifactdatabase.state.Facet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
36 import org.dive4elements.artifactdatabase.state.FacetActivity;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
37 import org.dive4elements.artifactdatabase.state.State;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
38
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4863
diff changeset
39 import org.dive4elements.river.artifacts.services.CrossSectionKMService;
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
40
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41
1985
07b176b14205 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1982
diff changeset
42 /**
07b176b14205 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1982
diff changeset
43 * Artifact describing a cross-section.
07b176b14205 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1982
diff changeset
44 */
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
45 public class CrossSectionArtifact extends StaticD4EArtifact {
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 /** Name of Artifact. */
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 public static final String CS_ARTIFACT_NAME = "cross_section";
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 /** Name of state. */
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 public static final String STATIC_STATE_NAME = "state.cross_section";
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
53 /** Name of data item keeping the position. */
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
54 public static final String DATA_KM = "cross_section.km";
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
55
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
56 /** Name of data item keeping the database id of this c.s.. */
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
57 public static final String DATA_DBID = "cross_section.dbid";
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
58
2040
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
59 /** Name of data item flagging whether we think that we are master. */
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
60 public static final String DATA_IS_MASTER = "cross_section.master?";
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
61
2040
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
62 /** Name of data item flagging whether we are the newest. */
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
63 public static final String DATA_IS_NEWEST = "cross_section.newest?";
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
64
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
65 /** Name of data item storing the previous possible km. */
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
66 public static final String DATA_PREV_KM = "cross_section.km.previous";
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
67
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
68 /** Name of data item storing the next possible km. */
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
69 public static final String DATA_NEXT_KM = "cross_section.km.next";
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
70
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71 /** Own logger. */
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
72 private static final Logger logger =
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 Logger.getLogger(CrossSectionArtifact.class);
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74
3556
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
75 static {
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
76 // TODO: Move to configuration.
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
77 FacetActivity.Registry.getInstance().register(
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
78 CS_ARTIFACT_NAME,
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
79 new FacetActivity() {
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
80 @Override
3558
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
81 public Boolean isInitialActive(
3556
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
82 Artifact artifact,
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
83 Facet facet,
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
84 String outputName
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
85 ) {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
86 if (artifact instanceof D4EArtifact) {
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
87 D4EArtifact flys = (D4EArtifact)artifact;
3556
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
88 String data = flys.getDataAsString(DATA_IS_NEWEST);
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
89 return data != null && data.equals("1");
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
90 }
3558
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
91 return null;
3556
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
92 }
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
93 });
afc7bfb4800b Use the new infrastructure to figure out if a facet should
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3405
diff changeset
94 }
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
96 /** Return given name. */
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 @Override
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
98 public String getName() {
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
99 return CS_ARTIFACT_NAME;
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 }
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102
1985
07b176b14205 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1982
diff changeset
103 /** Store ids, create a CrossSectionFacet. */
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104 @Override
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105 public void setup(
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106 String identifier,
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107 ArtifactFactory factory,
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
108 Object context,
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109 CallMeta callMeta,
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
110 Document data)
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 {
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112 logger.info("CrossSectionArtifact.setup");
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114 super.setup(identifier, factory, context, callMeta, data);
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115
2741
0251393f037c Refactor usage of now static xpath, other artifacts will follow in later commits.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2740
diff changeset
116 String ids = getDatacageIDValue(data);
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
117
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
118 if (ids != null && ids.length() > 0) {
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
119 addStringData(DATA_DBID, ids);
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
120 logger.debug("CrossSectionArtifacts db-id: " + ids);
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
121 }
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
122 else {
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
123 throw new IllegalArgumentException("No attribute 'ids' found!");
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
124 }
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
125
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
126 List<Facet> fs = new ArrayList<Facet>();
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
127 CrossSection cs = CrossSectionFactory.getCrossSection(
3405
b0ba96bbf01d Use Integer.parseInt() instead of Integer.valueOf() + Autounboxing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3284
diff changeset
128 Integer.parseInt(ids));
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
129
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
130 List<CrossSectionLine> csls = cs.getLines();
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
131 if (!csls.isEmpty()) {
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
132 CrossSectionLine csl = csls.get(0);
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
133 // Find min-km of cross sections,
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
134 // then set DATA_KM to min(DATA_KM, minCross).
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
135 double dataKm = Double.valueOf(getDataAsString(DATA_KM));
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
136 if (dataKm < csl.getKm().doubleValue()) {
2036
c03aeb0cf46b Initialize km of cross-section artifact to a better value (not all cases covered, yet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1985
diff changeset
137 addStringData(DATA_KM, csl.getKm().toString());
c03aeb0cf46b Initialize km of cross-section artifact to a better value (not all cases covered, yet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1985
diff changeset
138 }
c03aeb0cf46b Initialize km of cross-section artifact to a better value (not all cases covered, yet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1985
diff changeset
139 }
1971
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
140 fs.add(new CrossSectionFacet(0, cs.getDescription()));
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
141
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
142 // Find out if we are newest and become master if so.
2040
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
143 boolean isNewest = CrossSectionFactory.isNewest(cs);
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
144 String newString = (isNewest) ? "1" : "0";
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
145 addStringData(DATA_IS_NEWEST, newString);
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
146 addStringData(DATA_IS_MASTER, newString);
cd9bcdcf6597 Make only newest CrossSection intially active in diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2037
diff changeset
147
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
148 if (!fs.isEmpty()) {
4497
a2735a4bf75e Change facets member variable to private
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3558
diff changeset
149 addFacets(getCurrentStateId(), fs);
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
150 }
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
151 }
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
152
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
153
2036
c03aeb0cf46b Initialize km of cross-section artifact to a better value (not all cases covered, yet).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1985
diff changeset
154 /** Copy km where master-artifact "starts". */
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
155 @Override
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
156 protected void initialize(
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
157 Artifact artifact,
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
158 Object context,
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
159 CallMeta callMeta)
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
160 {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
161 D4EArtifact flys = (D4EArtifact) artifact;
4857
c7133c1f8ede CrossSectionArtifact, Calculation4Access: Updated to use RangeAccess instead of FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4497
diff changeset
162
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
163 RangeAccess rangeAccess = new RangeAccess(flys);
4857
c7133c1f8ede CrossSectionArtifact, Calculation4Access: Updated to use RangeAccess instead of FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4497
diff changeset
164 double[] range = rangeAccess.getKmRange();
2037
986820795c3b Better initialize cross_section.km of cross-section-artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2036
diff changeset
165 double min = 0.0f;
986820795c3b Better initialize cross_section.km of cross-section-artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2036
diff changeset
166 if (range != null && range.length > 0) {
986820795c3b Better initialize cross_section.km of cross-section-artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2036
diff changeset
167 min = range[0];
986820795c3b Better initialize cross_section.km of cross-section-artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2036
diff changeset
168 }
986820795c3b Better initialize cross_section.km of cross-section-artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2036
diff changeset
169 this.addStringData(DATA_KM, Double.toString(min));
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
170 }
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
171
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
172
3284
d9af29a4bb85 Various cosmetic doc fixes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3272
diff changeset
173 /** Returns next possible km for a cross-section. */
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
174 public Double getNextKm() {
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
175 return getDataAsDouble(DATA_NEXT_KM);
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
176 }
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
177
3284
d9af29a4bb85 Various cosmetic doc fixes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3272
diff changeset
178
d9af29a4bb85 Various cosmetic doc fixes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3272
diff changeset
179 /** Returns previous possible km for a cross-section. */
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
180 public Double getPrevKm() {
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
181 return getDataAsDouble(DATA_PREV_KM);
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
182 }
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
183
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
184
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
185 /**
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
186 * Create and return a new StaticState with charting output.
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
187 */
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
188 @Override
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
189 public State getCurrentState(Object cc) {
4497
a2735a4bf75e Change facets member variable to private
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3558
diff changeset
190 final List<Facet> fs = getFacets(getCurrentStateId());
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
191
1971
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
192 StaticState state = new StaticState(STATIC_STATE_NAME) {
1982
8afd6a9bb244 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1973
diff changeset
193 @Override
1971
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
194 public Object staticCompute(List<Facet> facets) {
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
195 if (facets != null) {
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
196 facets.addAll(fs);
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
197 }
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
198 return null;
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
199 }
741d2067cfe1 Given CrossSections a name, let crosssection facets survive.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1967
diff changeset
200 };
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
201
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
202 state.addDefaultChartOutput("cross_section", fs);
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
203
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
204 return state;
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
205 }
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
206
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
207
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
208 /**
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
209 * Get a list containing the one and only State.
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
210 * @param context ignored.
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
211 * @return list with one and only state.
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
212 */
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
213 @Override
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
214 protected List<State> getStates(Object context) {
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
215 ArrayList<State> states = new ArrayList<State>();
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
216 states.add(getCurrentState(context));
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
217
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
218 return states;
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
219 }
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
220
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
221 // TODO all data access needs proper caching.
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
222
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
223 /**
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
224 * Get a DataItem casted to int (0 if fails).
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
225 */
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
226 public int getDataAsIntNull(String dataName) {
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
227 String val = getDataAsString(dataName);
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
228 try {
3405
b0ba96bbf01d Use Integer.parseInt() instead of Integer.valueOf() + Autounboxing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3284
diff changeset
229 return Integer.parseInt(val);
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
230 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
231 catch (NumberFormatException e) {
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
232 logger.warn("Could not get data " + dataName + " as int", e);
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
233 return 0;
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
234 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
235 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
236
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
237
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
238 /** Returns database-id of cross-section (from data). */
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
239 protected int getDBID() {
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
240 return getDataAsIntNull(DATA_DBID);
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
241 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
242
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
243
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
244 /**
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
245 * Return position (km) from data, 0 if not found.
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
246 */
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
247 protected double getKm() {
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
248 String val = getDataAsString(DATA_KM);
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
249 try {
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
250 return Double.valueOf(val);
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
251 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
252 catch (NumberFormatException e) {
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
253 logger.warn("Could not get data " + DATA_KM + " as double", e);
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
254 return 0;
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
255 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
256 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
257
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
258
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
259 /** Returns true if artifact is set to be a "master" (other facets will
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
260 * refer to this). */
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
261 public boolean isMaster() {
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
262 return !getDataAsString(DATA_IS_MASTER).equals("0");
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
263 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
264
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
265
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
266 /**
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
267 * Get points of Profile of cross section at given kilometer.
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
268 *
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
269 * @return an array holding coordinates of points of profile (
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
270 * in the form {{x1, x2} {y1, y2}} ).
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
271 */
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
272 public double [][] getCrossSectionData() {
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
273 logger.info("getCrossSectionData() for cross_section.km "
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
274 + getDataAsString(DATA_KM));
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
275 FastCrossSectionLine line = searchCrossSectionLine();
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
276
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
277 return line != null
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
278 ? line.fetchCrossSectionProfile()
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
279 : null;
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
280 }
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
281
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
282
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
283 /**
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
284 * Get CrossSectionLine spatially closest to what is specified in the data
2678
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
285 * "cross_section.km", null if considered too far.
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
286 *
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
287 * It also adds DataItems to store the next and previous (numerically)
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
288 * values at which cross-section data was recorded.
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
289 *
2678
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
290 * @return CrossSectionLine closest to "cross_section.km", might be null
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
291 * if considered too far.
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
292 */
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
293 public FastCrossSectionLine searchCrossSectionLine() {
2678
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
294 double TOO_FAR = 1d;
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
295 CrossSection crossSection = CrossSectionFactory
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
296 .getCrossSection(getDBID());
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
297
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
298 if (logger.isDebugEnabled()) {
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
299 logger.debug("dbid " + getDBID() + " : " + crossSection);
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
300 }
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
301
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
302 NavigableMap<Double, Integer> kms = CrossSectionKMService
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
303 .getKms(crossSection.getId());
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
304
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
305 Double wishKM = getKm();
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
306
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
307 Double floor = kms.floorKey(wishKM);
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
308 Double ceil = kms.ceilingKey(wishKM);
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
309
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
310 Double nextKm;
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
311 Double prevKm;
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
312
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
313 double floorD = floor != null
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
314 ? Math.abs(floor - wishKM)
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
315 : Double.MAX_VALUE;
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
316
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
317 double ceilD = ceil != null
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
318 ? Math.abs(ceil - wishKM)
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
319 : Double.MAX_VALUE;
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
320
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
321 double km;
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
322 if (floorD < ceilD) {
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
323 km = floor;
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
324 }
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
325 else {
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
326 km = ceil;
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
327 }
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
328
2678
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
329 // If we are too far from the wished km, return null.
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
330 if (Math.abs(km - wishKM) > TOO_FAR) {
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
331 return null;
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
332 }
d35e37b6a211 Fix issue620: synchron navigation at impossible km.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2153
diff changeset
333
3272
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
334 // Store next and previous km.
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
335 nextKm = kms.higherKey(km);
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
336 prevKm = kms.lowerKey(km);
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
337
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
338 if (prevKm == null) {
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
339 prevKm = -1d;
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
340 }
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
341 if (nextKm == null) {
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
342 nextKm = -1d;
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
343 }
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
344
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
345 addStringData(DATA_PREV_KM, prevKm.toString());
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
346 addStringData(DATA_NEXT_KM, nextKm.toString());
31168ac9c7e7 Partial fix for issue694 (heightmarks snap to nearest cross section).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2763
diff changeset
347
2120
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
348 return FastCrossSectionLineFactory
f021080cb409 Use improved caching for cross section lines data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2040
diff changeset
349 .getCrossSectionLine(crossSection, km);
1967
27bb2e24f7f8 Preparations for better CrossSection diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1964
diff changeset
350 }
1964
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
351 }
85e442933e6d New CrossSectionArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
352 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org