Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/BedHeightsArtifact.java @ 4535:b838d16c629e
Refactor BedHeightArtifacts to provide bed height single values of a range
The range of bed height single values is necessary to generate a chart for
sounding widths.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Thu, 15 Nov 2012 16:20:02 +0100 |
parents | 5b0a545fceef |
children | cd44d28d0fbc |
comparison
equal
deleted
inserted
replaced
4534:1619f80eb62e | 4535:b838d16c629e |
---|---|
4 import java.util.List; | 4 import java.util.List; |
5 | 5 |
6 import org.apache.log4j.Logger; | 6 import org.apache.log4j.Logger; |
7 import org.w3c.dom.Document; | 7 import org.w3c.dom.Document; |
8 | 8 |
9 import de.intevation.artifactdatabase.state.DefaultOutput; | |
9 import de.intevation.artifactdatabase.state.Facet; | 10 import de.intevation.artifactdatabase.state.Facet; |
10 import de.intevation.artifactdatabase.state.FacetActivity; | 11 import de.intevation.artifactdatabase.state.FacetActivity; |
11 import de.intevation.artifactdatabase.state.State; | |
12 import de.intevation.artifacts.ArtifactFactory; | 12 import de.intevation.artifacts.ArtifactFactory; |
13 import de.intevation.artifacts.Artifact; | |
13 import de.intevation.artifacts.CallMeta; | 14 import de.intevation.artifacts.CallMeta; |
14 import de.intevation.artifacts.common.utils.XMLUtils; | 15 import de.intevation.artifacts.common.utils.XMLUtils; |
15 import de.intevation.flys.artifacts.model.minfo.BedHeight; | 16 import de.intevation.flys.artifacts.model.minfo.BedHeight; |
16 import de.intevation.flys.artifacts.model.minfo.BedHeightFacet; | 17 import de.intevation.flys.artifacts.model.minfo.BedHeightFacet; |
17 import de.intevation.flys.artifacts.model.minfo.BedHeightFactory; | 18 import de.intevation.flys.artifacts.model.minfo.BedHeightFactory; |
18 import de.intevation.flys.artifacts.states.StaticState; | 19 import de.intevation.flys.artifacts.states.StaticState; |
20 import de.intevation.flys.model.BedHeightSingle; | |
21 import de.intevation.flys.model.BedHeightSingleValue; | |
19 | 22 |
20 public class BedHeightsArtifact | 23 public class BedHeightsArtifact |
21 extends StaticFLYSArtifact | 24 extends AbstractStaticStateArtifact |
22 { | 25 { |
23 /** The logger for this class. */ | 26 /** The logger for this class. */ |
24 private static Logger logger = | 27 private static Logger logger = |
25 Logger.getLogger(BedHeightsArtifact.class); | 28 Logger.getLogger(BedHeightsArtifact.class); |
26 | 29 |
27 private static final String NAME = "bedheights"; | 30 private static final String NAME = "bedheights"; |
31 private static final String STATIC_FACET_NAME = "bedheight"; | |
28 | 32 |
29 static { | 33 static { |
30 // TODO: Move to configuration. | 34 // TODO: Move to configuration. |
31 FacetActivity.Registry.getInstance() | 35 FacetActivity.Registry.getInstance() |
32 .register(NAME, FacetActivity.INACTIVE); | 36 .register(NAME, FacetActivity.INACTIVE); |
37 | 41 |
38 /** Data Item name to know whether we are Heighmarks and reveive | 42 /** Data Item name to know whether we are Heighmarks and reveive |
39 * some data slightly different. */ | 43 * some data slightly different. */ |
40 public static final String DATA_HEIGHT_TYPE = | 44 public static final String DATA_HEIGHT_TYPE = |
41 "height_marks"; | 45 "height_marks"; |
42 | |
43 /** One and only state to be in. */ | |
44 protected transient State state = null; | |
45 | |
46 | 46 |
47 /** | 47 /** |
48 * Trivial Constructor. | 48 * Trivial Constructor. |
49 */ | 49 */ |
50 public BedHeightsArtifact() { | 50 public BedHeightsArtifact() { |
67 CallMeta callMeta, | 67 CallMeta callMeta, |
68 Document data) | 68 Document data) |
69 { | 69 { |
70 logger.debug("BedHeightsArtifact.setup"); | 70 logger.debug("BedHeightsArtifact.setup"); |
71 | 71 |
72 state = new StaticState(STATIC_STATE_NAME); | |
73 | |
74 if (logger.isDebugEnabled()) { | 72 if (logger.isDebugEnabled()) { |
75 logger.debug(XMLUtils.toString(data)); | 73 logger.debug(XMLUtils.toString(data)); |
76 } | 74 } |
77 | 75 |
78 List<Facet> fs = new ArrayList<Facet>(); | |
79 String code = getDatacageIDValue(data); | 76 String code = getDatacageIDValue(data); |
80 | 77 |
81 if (code != null) { | 78 if (code != null) { |
82 String [] parts = code.split("-"); | 79 String [] parts = code.split("-"); |
83 | 80 |
84 if (parts.length >= 4) { | 81 if (parts.length >= 4) { |
85 if (parts[0].equals("bedheight")) { | 82 String name = parts[0]; |
86 addStringData("type", parts[1]); | 83 String type = parts[1]; |
84 String btype = type; | |
85 int hId = Integer.parseInt(parts[2]); | |
86 if (name.equals("bedheight")) { | |
87 addStringData("type", type); | |
87 addStringData("height_id", parts[2]); | 88 addStringData("height_id", parts[2]); |
88 addStringData("time", parts[3]); | 89 addStringData("time", parts[3]); |
89 } | 90 } |
90 int hId = Integer.parseInt(parts[2]); | 91 if (type.equals("singlevalues")) { |
91 String bedHName = BedHeightFactory.getHeightName(parts[1], hId); | 92 btype = "single"; |
93 } | |
92 | 94 |
93 Facet bedHFacet = new BedHeightFacet( | 95 String bedHName = BedHeightFactory.getHeightName(btype, hId); |
94 "bedheight", | |
95 bedHName); | |
96 | 96 |
97 fs.add(bedHFacet); | 97 Facet facet = new BedHeightFacet( |
98 addFacets(state.getID(), fs); | 98 STATIC_FACET_NAME, bedHName, type); |
99 | |
100 ArrayList<Facet> facets = new ArrayList<Facet>(1); | |
101 facets.add(facet); | |
102 | |
103 addFacets(STATIC_STATE_NAME, facets); | |
99 } | 104 } |
100 } | 105 } |
101 | |
102 //spawnState(); | |
103 super.setup(identifier, factory, context, callMeta, data); | 106 super.setup(identifier, factory, context, callMeta, data); |
104 } | |
105 | |
106 /** | |
107 * Get a list containing the one and only State. | |
108 * @param context ignored. | |
109 * @return list with one and only state. | |
110 */ | |
111 @Override | |
112 protected List<State> getStates(Object context) { | |
113 ArrayList<State> states = new ArrayList<State>(); | |
114 states.add(state); | |
115 return states; | |
116 } | 107 } |
117 | 108 |
118 /** | 109 /** |
119 */ | 110 */ |
120 public BedHeight getHeight() { | 111 public BedHeight getHeight() { |
121 return BedHeightFactory.getHeight( | 112 return BedHeightFactory.getHeight( |
122 getDataAsString("type"), | 113 getDataAsString("type"), |
123 Integer.parseInt(getDataAsString("height_id")), | 114 Integer.parseInt(getDataAsString("height_id")), |
124 Integer.parseInt(getDataAsString("time"))); | 115 Integer.parseInt(getDataAsString("time"))); |
125 } | 116 } |
117 | |
118 public List<BedHeightSingleValue> getSingleValues() { | |
119 logger.debug("getSingleValues"); | |
120 BedHeightSingle single = BedHeightSingle.getBedHeightSingleById( | |
121 getDataAsInteger("height_id")); | |
122 return BedHeightSingleValue.getBedHeightSingleValues(single, | |
123 getDataAsDouble("ld_from"), | |
124 getDataAsDouble("ld_to")); | |
125 } | |
126 | |
127 @Override | |
128 protected void initStaticState() { | |
129 | |
130 logger.debug("initStaticState " + getName() + " " + identifier()); | |
131 | |
132 StaticState state = new StaticState(STATIC_STATE_NAME); | |
133 DefaultOutput output = new DefaultOutput( | |
134 "general", | |
135 "general", | |
136 "image/png", | |
137 "chart"); | |
138 | |
139 List<Facet> facets = getFacets(STATIC_STATE_NAME); | |
140 output.addFacets(facets); | |
141 state.addOutput(output); | |
142 | |
143 setStaticState(state); | |
144 } | |
145 | |
146 @Override | |
147 protected void initialize(Artifact artifact, Object context, CallMeta meta) { | |
148 // do not clone facets, etc. from master artifact | |
149 | |
150 logger.debug("initialize"); | |
151 importData((FLYSArtifact)artifact, "ld_from"); | |
152 importData((FLYSArtifact)artifact, "ld_to"); | |
153 | |
154 logger.debug("ld_from " + getDataAsString("ld_from")); | |
155 logger.debug("ld_to " + getDataAsString("ld_to")); | |
156 } | |
126 } | 157 } |
127 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : | 158 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |