3610
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.artifacts.model.fixings; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 import org.apache.log4j.Logger; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 import de.intevation.artifacts.Artifact; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 import de.intevation.artifacts.CallContext; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 import de.intevation.flys.artifacts.FLYSArtifact; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 import de.intevation.flys.artifacts.model.CalculationResult; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 import de.intevation.flys.artifacts.model.DataFacet; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
10 import de.intevation.flys.artifacts.model.FacetTypes; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
11 import de.intevation.flys.artifacts.states.DefaultState.ComputeType; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
12 import de.intevation.flys.utils.KMIndex; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
13 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 public class FixLongitudinalAvSectorFacet |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 extends DataFacet |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 implements FacetTypes { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
18 /** House logger. */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 private static Logger logger = |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 Logger.getLogger(FixLongitudinalAvSectorFacet.class); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 /** Trivial Constructor. */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 public FixLongitudinalAvSectorFacet() { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 public FixLongitudinalAvSectorFacet( |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 int ndx, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 String name, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 String description) |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 super( |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 ndx, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
34 name, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 description, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 ComputeType.ADVANCE, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 null, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 null); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 /** |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 * Returns the data this facet requires. |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 * |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 * @param artifact the owner artifact. |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 * @param context the CallContext. |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 * |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 * @return the data as KMIndex. |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 @Override |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 public Object getData(Artifact artifact, CallContext context) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 logger.debug("FixLongitudinalAvSectorFacet.getData"); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 if (artifact instanceof FLYSArtifact) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 FLYSArtifact flys = (FLYSArtifact)artifact; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 CalculationResult res = |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 (CalculationResult) flys.compute(context, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 ComputeType.ADVANCE, |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 false); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 FixAnalysisResult result = (FixAnalysisResult) res.getData(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 KMIndex<AnalysisPeriod []> kmPeriods = result.getAnalysisPeriods(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 if (kmPeriods == null) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 logger.warn("No analysis periods found."); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 return null; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
69 int periodNdx = index >> 2; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
70 KMIndex<AnalysisPeriod> resPeriods = |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 new KMIndex<AnalysisPeriod>(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 for (KMIndex.Entry<AnalysisPeriod[]> entry: kmPeriods) { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 AnalysisPeriod ap = entry.getValue()[periodNdx]; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 resPeriods.add(entry.getKm(), ap); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 return resPeriods; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 else { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 logger.warn("Artifact is no instance of FLYSArtifact."); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 return null; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
85 |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
86 /** |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 * Create a deep copy of this Facet. |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 * @return a deep copy. |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 */ |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 @Override |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
91 public FixLongitudinalAvSectorFacet deepCopy() { |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
92 FixLongitudinalAvSectorFacet copy = new FixLongitudinalAvSectorFacet(); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
93 copy.set(this); |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
94 return copy; |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
95 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
96 } |
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
97 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |