diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/SQRelation.java @ 3101:b31397addf2f

Create Facets for each SQResult and SQFractionResult. flys-artifacts/trunk@4700 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 19 Jun 2012 12:25:01 +0000
parents ef0dd585b5e0
children 2feed9b50047
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/SQRelation.java	Tue Jun 19 11:13:04 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/SQRelation.java	Tue Jun 19 12:25:01 2012 +0000
@@ -15,6 +15,7 @@
 import de.intevation.flys.artifacts.model.FacetTypes;
 import de.intevation.flys.artifacts.model.CalculationResult;
 import de.intevation.flys.artifacts.model.sq.SQCurveFacet;
+import de.intevation.flys.artifacts.model.sq.SQFractionResult;
 import de.intevation.flys.artifacts.model.sq.SQMeasurementFacet;
 import de.intevation.flys.artifacts.model.sq.SQOutlierFacet;
 import de.intevation.flys.artifacts.model.sq.SQRelationCalculation;
@@ -54,6 +55,8 @@
         }
 
         SQResult[] sqr = (SQResult[]) res.getData();
+        logger.info("Calculation computed " + sqr.length + " SQResult objects");
+
         createFacets(newFacets, sqr, hash);
 
         Facet csv = new DataFacet(
@@ -80,27 +83,84 @@
     ) {
         String stateId = getID();
 
-        // TODO Create facets for each parameter type (A-F)
-        container.add(new SQMeasurementFacet(
-            0,
-            SQ_A_MEASUREMENT,
-            "Measurement TODO",
-            hash,
-            stateId
-        ));
+        for (int res = 0, n = sqr.length; res < n; res++) {
 
-        container.add(new SQCurveFacet(0, SQ_A_CURVE, "TODO"));
+            for (int i = 0; i < 6; i++) {
+                SQFractionResult result = sqr[res].getFraction(i);
 
-        for (int i = 0, C = sqr[0].getOutliersCount(); i < C; i++) {
-            container.add(new SQOutlierFacet(
-                0,
-                i,
-                SQ_A_OUTLIER,
-                "OUTLIER AT" + i,
-                hash,
-                stateId
-            ));
+                if (result == null) {
+                    logger.warn("Fraction at index " + i + " is empty!");
+                    continue;
+                }
+
+                container.add(new SQMeasurementFacet(
+                    res,
+                    i,
+                    getFractionFacetname(1, i),
+                    "Measurement (Fraction " + i + ")",
+                    hash,
+                    stateId
+                ));
+
+                container.add(new SQCurveFacet(
+                    res,
+                    i,
+                    getFractionFacetname(0, i),
+                    "CURVE AT " + i,
+                    hash,
+                    stateId
+                ));
+
+                for (int j = 0, C = result.getOutliersCount(); j < C; j++) {
+                    container.add(new SQOutlierFacet(
+                        res,
+                        i,
+                        j,
+                        getFractionFacetname(2, i),
+                        "OUTLIER AT " + i,
+                        hash,
+                        stateId
+                    ));
+                }
+            }
         }
     }
+
+
+    protected String getFractionFacetname(int type, int fractionIdx) {
+        logger.debug("getFractionFacetname(): " + type + " | " + fractionIdx);
+
+        switch (type) {
+            case 0:
+                switch (fractionIdx) {
+                    case 0: return SQ_A_CURVE;
+                    case 1: return SQ_B_CURVE;
+                    case 2: return SQ_C_CURVE;
+                    case 3: return SQ_D_CURVE;
+                    case 4: return SQ_E_CURVE;
+                    case 5: return SQ_F_CURVE;
+                }
+            case 1:
+                switch (fractionIdx) {
+                    case 0: return SQ_A_MEASUREMENT;
+                    case 1: return SQ_B_MEASUREMENT;
+                    case 2: return SQ_C_MEASUREMENT;
+                    case 3: return SQ_D_MEASUREMENT;
+                    case 4: return SQ_E_MEASUREMENT;
+                    case 5: return SQ_F_MEASUREMENT;
+                }
+            case 2:
+                switch (fractionIdx) {
+                    case 0: return SQ_A_OUTLIER;
+                    case 1: return SQ_B_OUTLIER;
+                    case 2: return SQ_C_OUTLIER;
+                    case 3: return SQ_D_OUTLIER;
+                    case 4: return SQ_E_OUTLIER;
+                    case 5: return SQ_F_OUTLIER;
+                }
+        }
+
+        return null;
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org