Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WDifferencesState.java @ 1183:9c1cda9e2bc4
Load given artifacts for w-diff calculation.
flys-artifacts/trunk@2776 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 16 Sep 2011 11:30:50 +0000 |
parents | 2490d6ef394e |
children | 7552ae1061d7 |
comparison
equal
deleted
inserted
replaced
1182:8ad0331e444f | 1183:9c1cda9e2bc4 |
---|---|
20 import de.intevation.flys.artifacts.model.DataFacet; | 20 import de.intevation.flys.artifacts.model.DataFacet; |
21 import de.intevation.flys.artifacts.model.WaterlevelFacet; | 21 import de.intevation.flys.artifacts.model.WaterlevelFacet; |
22 | 22 |
23 import de.intevation.flys.utils.FLYSUtils; | 23 import de.intevation.flys.utils.FLYSUtils; |
24 | 24 |
25 //import net.sf.json.JSONObject; | |
26 | 25 |
27 public class WDifferencesState | 26 public class WDifferencesState |
28 extends DefaultState | 27 extends DefaultState |
29 implements FacetTypes | 28 implements FacetTypes |
30 { | 29 { |
42 return "noinput"; | 41 return "noinput"; |
43 } | 42 } |
44 | 43 |
45 | 44 |
46 @Override | 45 @Override |
46 public boolean validate(Artifact artifact) | |
47 throws IllegalArgumentException | |
48 { | |
49 FLYSArtifact flys = (FLYSArtifact) artifact; | |
50 | |
51 StateData data = flys.getData("diffids"); | |
52 | |
53 if (data == null) { | |
54 throw new IllegalArgumentException("diffids is empty"); | |
55 } | |
56 | |
57 // TODO: Also validate format. | |
58 | |
59 return true; | |
60 } | |
61 | |
62 | |
63 | |
64 @Override | |
47 public Object computeAdvance( | 65 public Object computeAdvance( |
48 FLYSArtifact artifact, | 66 FLYSArtifact artifact, |
49 String hash, | 67 String hash, |
50 CallContext context, | 68 CallContext context, |
51 List<Facet> facets, | 69 List<Facet> facets, |
52 Object old | 70 Object old |
53 ) { | 71 ) { |
54 WINFOArtifact winfo = (WINFOArtifact)artifact; | 72 WINFOArtifact winfo = (WINFOArtifact)artifact; |
55 String id = getID(); | 73 String id = getID(); |
56 | 74 |
57 // Get a data item (uuids) or parameterization of the respective | 75 // Load the Artifacts/facets that we want to subtract and display. |
58 // artifacts. | 76 // Expected format is: |
59 // TODO Fix, choose artifacts/parameterization dynamically. | 77 // [42537f1e-3522-42ef-8968-635b03d8e9c6;longitudinal_section.w;0]#[1231f2-....] |
78 String datas[] = winfo.getDataAsString("diffids"); | |
79 | |
80 // Validate the Data-Strings. | |
81 for (String s: datas) { | |
82 if (!WaterlevelSelectState.isValid(winfo.getDataAsString("diffids"))) { | |
83 // TODO: escalate. | |
84 } | |
85 } | |
86 | |
87 if (datas.length != 2) { | |
88 // TODO crash with style | |
89 ; | |
90 } | |
91 String uuid1 = WaterlevelSelectState.strip(datas[0]).split(";")[0]; | |
92 String uuid2 = WaterlevelSelectState.strip(datas[1]).split(";")[0]; | |
93 | |
60 WINFOArtifact flys1 = (WINFOArtifact) FLYSUtils.getArtifact( | 94 WINFOArtifact flys1 = (WINFOArtifact) FLYSUtils.getArtifact( |
61 //"a110a16d-d155-4115-ab0d-c4c61101c9cb", //Collection | 95 uuid1, |
62 "a0ec533f-b05b-4dcd-9db3-7850686f90a2", | |
63 context); | 96 context); |
64 WINFOArtifact flys2 = (WINFOArtifact) FLYSUtils.getArtifact( | 97 WINFOArtifact flys2 = (WINFOArtifact) FLYSUtils.getArtifact( |
65 //"8ebb696d-771a-4540-bd18-15e19744a6e2", //Collection | 98 uuid2, |
66 "ce5a2c4e-3f9c-4c4d-a35c-109dd8670992", | |
67 context); | 99 context); |
68 | 100 |
69 if (flys1 == null) { | 101 if (flys1 == null) { |
70 logger.warn("One of the artifacts (1) for diff calculation could not be loaded"); | 102 logger.warn("One of the artifacts (1) for diff calculation could not be loaded"); |
71 } | 103 } |
81 WQKms[] minuend = (WQKms[]) flys1.getWaterlevelData().getData(); | 113 WQKms[] minuend = (WQKms[]) flys1.getWaterlevelData().getData(); |
82 WQKms[] subtrahend = (WQKms[]) flys2.getWaterlevelData().getData(); | 114 WQKms[] subtrahend = (WQKms[]) flys2.getWaterlevelData().getData(); |
83 wkms = WKmsOperation.SUBTRACTION.operate(minuend[0], subtrahend[0]); | 115 wkms = WKmsOperation.SUBTRACTION.operate(minuend[0], subtrahend[0]); |
84 facetName = "W ("+minuend[0].getName() + ") - W (" + subtrahend[0].getName()+")"; | 116 facetName = "W ("+minuend[0].getName() + ") - W (" + subtrahend[0].getName()+")"; |
85 logger.warn("Did a WKMSSubtraction"); | 117 logger.warn("Did a WKMSSubtraction"); |
86 // Add these datasets also as facets. | 118 // Add these datasets also as facets ("absolutes"). |
87 // TODO Store parameterization. | 119 /* |
88 // Therefore need: getKmRange, getQs, getRiver, eventually getWs | |
89 Facet minuendAbsFacet = new WaterlevelFacet(0, LONGITUDINAL_W, | 120 Facet minuendAbsFacet = new WaterlevelFacet(0, LONGITUDINAL_W, |
90 "Minuend: W (_todo_)", ComputeType.ADVANCE, id, hash); | 121 "Minuend: W (_todo_)", ComputeType.ADVANCE, id, hash); |
91 Facet subtrahendAbsFacet = new WaterlevelFacet(1, LONGITUDINAL_W, | 122 Facet subtrahendAbsFacet = new WaterlevelFacet(1, LONGITUDINAL_W, |
92 "Subtrahend: W (_todo_)", ComputeType.ADVANCE, id, hash); | 123 "Subtrahend: W (_todo_)", ComputeType.ADVANCE, id, hash); |
93 //JSONObject jsonObject = new JSONObject().accumulate("string", 2.0f); | 124 */ |
94 //facets.add(minuendAbsFacet); | 125 //facets.add(minuendAbsFacet); |
95 //facets.add(subtrahendAbsFacet); | 126 //facets.add(subtrahendAbsFacet); |
96 } | 127 } |
97 | 128 |
98 if (facets != null) { | 129 if (facets != null) { |