Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java @ 8125:f01c65261963
(issue1448) Add WIP SedimentLoadDataFacet and use it in calculation.
The unit handling is currently just a stub
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 25 Aug 2014 15:56:09 +0200 |
parents | 75e62ea0e307 |
children | 353f93d5d9f7 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java Mon Aug 25 12:18:35 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java Mon Aug 25 15:56:09 2014 +0200 @@ -28,7 +28,9 @@ import org.dive4elements.river.artifacts.model.minfo.SedimentLoadLSData; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFacet; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFactory; -import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataResult; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataResult.Fraction; +import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataFacet; import org.dive4elements.river.artifacts.model.minfo.SedimentLoadUnknownFacet; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.states.DefaultState; @@ -42,7 +44,7 @@ private static final long serialVersionUID = 1L; private static final Logger logger = Logger - .getLogger(SedimentLoadCalculate.class); + .getLogger(SedimentLoadDataCalculate.class); public static final String I18N_FACET_SEDIMENTLOAD_COARSE = "facet.sedimentload.coarse"; public static final String I18N_FACET_SEDIMENTLOAD_SAND = "facet.sedimentload.sand"; @@ -143,10 +145,45 @@ ? (CalculationResult) old : new SedimentLoadDataCalculation().calculate(access); - if (facets == null || res == null) { + SedimentLoadDataResult sdRes; + + if (res == null) { + logger.error ("No calculation result."); + } + + Object raw = res.getData(); + if (raw == null) { + logger.warn("No result data."); return res; } + if (raw instanceof SedimentLoadDataResult) { + sdRes = (SedimentLoadDataResult) raw; + } else if (raw instanceof SedimentLoadDataCalculation) { + SedimentLoadDataCalculation calc = (SedimentLoadDataCalculation) raw; + logger.warn ("Problems : " + calc.problemsToString()); + return calc; + } else { + logger.error ("Unknown result"); + return null; + } + + int i = 0; + for (Fraction fract: sdRes.getFractions()) { + logger.debug("Adding facet for fraction: " + fract.getName()); + newFacets.add(new SedimentLoadDataFacet(i++, fract.getName(), + fract.getUnit(), ComputeType.ADVANCE, id, hash, context)); + } + + newFacets.add( + new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); + + if (facets != null) { + facets.addAll(newFacets); + } else { + facets = newFacets; + } + /* XXX: THIS IS ALL BROKEN SedimentLoadResult[] results = (SedimentLoadResult[]) res.getData(); @@ -189,10 +226,6 @@ hash)); } - newFacets.add( - new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); - - facets.addAll(newFacets); */