Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstState.java @ 9432:d194c5b24bf8
Added bundu bzws w calculation and longitudinal sections of wspl and depth
author | mschaefer |
---|---|
date | Mon, 20 Aug 2018 09:46:02 +0200 |
parents | ddcd52d239cd |
children | d2f5375ede26 |
comparison
equal
deleted
inserted
replaced
9431:eeea16ea0980 | 9432:d194c5b24bf8 |
---|---|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde | 1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
2 * Software engineering by Intevation GmbH | 2 * Software engineering by |
3 * Björnsen Beratende Ingenieure GmbH | |
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt | |
3 * | 5 * |
4 * This file is Free Software under the GNU AGPL (>=v3) | 6 * This file is Free Software under the GNU AGPL (>=v3) |
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the | 7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
6 * documentation coming with Dive4Elements River for details. | 8 * documentation coming with Dive4Elements River for details. |
7 */ | 9 */ |
11 import java.util.List; | 13 import java.util.List; |
12 | 14 |
13 import org.apache.log4j.Logger; | 15 import org.apache.log4j.Logger; |
14 import org.dive4elements.artifactdatabase.state.Facet; | 16 import org.dive4elements.artifactdatabase.state.Facet; |
15 import org.dive4elements.artifacts.CallContext; | 17 import org.dive4elements.artifacts.CallContext; |
18 import org.dive4elements.river.artifacts.ChartArtifact; | |
16 import org.dive4elements.river.artifacts.D4EArtifact; | 19 import org.dive4elements.river.artifacts.D4EArtifact; |
17 import org.dive4elements.river.artifacts.bundu.BUNDUArtifact; | 20 import org.dive4elements.river.artifacts.bundu.BUNDUArtifact; |
21 import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult; | |
22 import org.dive4elements.river.artifacts.model.Calculation; | |
18 import org.dive4elements.river.artifacts.model.CalculationResult; | 23 import org.dive4elements.river.artifacts.model.CalculationResult; |
19 import org.dive4elements.river.artifacts.model.DataFacet; | 24 import org.dive4elements.river.artifacts.model.DataFacet; |
25 import org.dive4elements.river.artifacts.model.EmptyFacet; | |
20 import org.dive4elements.river.artifacts.model.FacetTypes; | 26 import org.dive4elements.river.artifacts.model.FacetTypes; |
27 import org.dive4elements.river.artifacts.model.ReportFacet; | |
28 import org.dive4elements.river.artifacts.model.WaterlevelFacet; | |
21 import org.dive4elements.river.artifacts.states.DefaultState; | 29 import org.dive4elements.river.artifacts.states.DefaultState; |
22 | 30 |
23 /** | 31 /** |
24 * State to compute the fixation realizing (vollmer) results. | 32 * State to compute the bundu bezugswst results. |
25 * | |
26 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> | |
27 */ | 33 */ |
28 public class BezugswstState extends DefaultState implements FacetTypes { | 34 public class BezugswstState extends DefaultState implements FacetTypes { |
29 | 35 |
30 private static final long serialVersionUID = 1L; | 36 private static final long serialVersionUID = 1L; |
31 | 37 |
40 public BezugswstState() { | 46 public BezugswstState() { |
41 } | 47 } |
42 | 48 |
43 @Override | 49 @Override |
44 public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) { | 50 public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) { |
51 | |
45 log.debug("BezugswstState.computeAdvance"); | 52 log.debug("BezugswstState.computeAdvance"); |
46 // TODO: remove this old stuff, or replace it by new | 53 |
47 // final CalculationResult res; | 54 if (artifact instanceof ChartArtifact) { |
48 // | 55 facets.add(new EmptyFacet()); |
49 // final FixRealizingAccess access = new FixRealizingAccess(artifact); | 56 return null; |
50 // | 57 } |
51 // if (old instanceof CalculationResult) { | |
52 // res = (CalculationResult) old; | |
53 // } else { | |
54 // | |
55 // final FixRealizingCalculation calc = new FixRealizingCalculation(access); | |
56 // res = calc.calculate(); | |
57 // } | |
58 // | |
59 // if (facets == null) { | |
60 // return res; | |
61 // } | |
62 // | |
63 // if (res.getReport().hasProblems()) { | |
64 // facets.add(new ReportFacet()); | |
65 // } | |
66 // | |
67 // final String id = getID(); | |
68 // final CallMeta meta = context.getMeta(); | |
69 // | |
70 // final FixRealizingResult fixRes = (FixRealizingResult) res.getData(); | |
71 // final WQKms[] wqkms = fixRes != null ? fixRes.getWQKms() : new WQKms[0]; | |
72 // | |
73 // for (int i = 0; i < wqkms.length; i++) { | |
74 // String nameW = null; | |
75 // String nameQ = null; | |
76 // | |
77 // if (access.isQ()) { | |
78 // nameQ = wqkms[i].getName(); | |
79 // nameW = "W(" + nameQ + ")"; | |
80 // } else { | |
81 // nameW = wqkms[i].getName(); | |
82 // nameQ = "Q(" + nameW + ")"; | |
83 // } | |
84 // | |
85 // final Facet wq = new FixWaterlevelFacet(i, FIX_WQ_LS, nameW, ComputeType.ADVANCE, hash, id); | |
86 // | |
87 // final Facet w = new FixWaterlevelFacet(i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, hash, id); | |
88 // | |
89 // final Facet q = new FixWaterlevelFacet(i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, hash, id); | |
90 // final Facet csFacet = new CrossSectionWaterLineFacet(i, nameW); | |
91 // | |
92 // facets.add(wq); | |
93 // facets.add(w); | |
94 // facets.add(q); | |
95 // facets.add(csFacet); | |
96 // | |
97 // // XXX: THIS CAN NOT HAPPEN! REMOVE IT! | |
98 // if (wqkms[i] instanceof WQCKms) { | |
99 // final String nameC = nameW.replace("benutzerdefiniert", "benutzerdefiniert [korrigiert]"); | |
100 // | |
101 // final Facet c = new FixWaterlevelFacet(i, DISCHARGE_LONGITUDINAL_C, nameC); | |
102 // | |
103 // facets.add(c); | |
104 // } | |
105 // } | |
106 // | |
107 // if (wqkms.length > 0) { | |
108 // final DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy"); | |
109 // final DateFormat lf = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy'T'HH:mm"); | |
110 // | |
111 // final Collection<Date> reds = fixRes.getReferenceEventsDates(); | |
112 // final UniqueDateFormatter cf = new UniqueDateFormatter(df, lf, reds); | |
113 // | |
114 // int i = 0; | |
115 // for (final Date d : reds) { | |
116 // facets.add(new FixReferenceEventsFacet((1 << 9) | i, FIX_EVENTS, cf.format(d))); | |
117 // i++; | |
118 // } | |
119 // | |
120 // facets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); | |
121 // | |
122 // facets.add(new DataFacet(WST, "WST data", ComputeType.ADVANCE, hash, id)); | |
123 // | |
124 // facets.add(new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id)); | |
125 // } | |
126 // | |
127 // facets.add(new DataFacet(AT, "AT data", ComputeType.ADVANCE, hash, id)); | |
128 // | |
129 // facets.add(new FixWQCurveFacet(0, Resources.getMsg(meta, I18N_WQ_CURVE, I18N_WQ_CURVE) + " (" + access.getFunction() | |
130 // + ")")); | |
131 // | |
132 return compute((BUNDUArtifact) artifact, context, hash, facets, old); | 58 return compute((BUNDUArtifact) artifact, context, hash, facets, old); |
133 } | 59 } |
134 | 60 |
135 @Override | 61 @Override |
136 public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) { | 62 public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) { |
137 | 63 |
64 if (artifact instanceof ChartArtifact) { | |
65 facets.add(new EmptyFacet()); | |
66 return null; | |
67 } | |
138 return compute((BUNDUArtifact) artifact, context, hash, facets, old); | 68 return compute((BUNDUArtifact) artifact, context, hash, facets, old); |
139 } | 69 } |
140 | 70 |
71 /** | |
72 * Compute result or returned object from cache, create facets. | |
73 * | |
74 * @param old | |
75 * Object that was cached. | |
76 */ | |
141 private Object compute(final BUNDUArtifact artifact, final CallContext context, final String hash, final List<Facet> facets, final Object old) { | 77 private Object compute(final BUNDUArtifact artifact, final CallContext context, final String hash, final List<Facet> facets, final Object old) { |
142 | 78 |
143 final BezugswstCalculation s = new BezugswstCalculation(context); | 79 final CalculationResult res = doCompute(artifact, context, old); |
144 final CalculationResult res = s.calculate(artifact); | |
145 | 80 |
146 if (facets == null) | 81 if (facets == null) |
147 return res; | 82 return res; |
148 | 83 |
149 final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id); | 84 final BezugswstCalculationResults results = (BezugswstCalculationResults) res.getData(); |
150 final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id); | |
151 | 85 |
152 facets.add(csv); | 86 final List<AbstractCalculationExportableResult> resultList = results.getResults(); |
153 facets.add(pdf); | 87 |
88 int facetIndex = 0; | |
89 | |
90 if (!resultList.isEmpty()) { | |
91 final BezugswstMainCalculationResult result = (BezugswstMainCalculationResult) resultList.get(0); | |
92 facets.add(BezugswstHeightProcessor.createWFacet(context, hash, this.id, facetIndex++, 0, result.getWstLabel())); | |
93 facets.add(BezugswstHeightProcessor.createChannelminFacet(context, hash, this.id, facetIndex++, 0)); | |
94 facets.add(BezugswstHeightProcessor.createBedheightFacet(context, hash, this.id, facetIndex++, 0, result.getBedHeightLabel())); | |
95 facets.add(new WaterlevelFacet(facetIndex++, FacetTypes.LONGITUDINAL_Q, result.getWstLabel(), ComputeType.ADVANCE, this.id, hash)); | |
96 | |
97 facets.add(BezugswstDepthProcessor.createFlowdepthFilteredFacet(context, hash, this.id, facetIndex++, 0, result.getBedHeightLabel())); | |
98 facets.add(BezugswstDepthProcessor.createChanneldepthFacet(context, hash, this.id, facetIndex++, 0)); | |
99 | |
100 final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id); | |
101 final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id); | |
102 | |
103 facets.add(csv); | |
104 facets.add(pdf); | |
105 } | |
106 | |
107 final Calculation report = res.getReport(); | |
108 | |
109 if (report.hasProblems()) | |
110 facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id)); | |
154 | 111 |
155 return res; | 112 return res; |
156 } | 113 } |
157 | 114 |
115 private CalculationResult doCompute(final BUNDUArtifact uinfo, final CallContext context, final Object old) { | |
116 | |
117 if (old instanceof CalculationResult) | |
118 return (CalculationResult) old; | |
119 | |
120 return new BezugswstCalculation(context).calculate(uinfo); | |
121 } | |
158 } | 122 } |