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) {

http://dive4elements.wald.intevation.org