Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/BedQualityState.java @ 3762:0c978a80726a
Splitted up facets for porosity and density into two facets: a toplayer and a sublayer facet for each. BedQualityState will now create facets based on the calculation result.
flys-artifacts/trunk@5464 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 14 Sep 2012 07:12:08 +0000 |
parents | 066e2b4d69ca |
children | d29cebf371ba |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/BedQualityState.java Thu Sep 13 20:58:24 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/BedQualityState.java Fri Sep 14 07:12:08 2012 +0000 @@ -11,10 +11,13 @@ import de.intevation.flys.artifacts.access.BedQualityAccess; import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.FacetTypes; +import de.intevation.flys.artifacts.model.minfo.BedBedQualityResult; import de.intevation.flys.artifacts.model.minfo.BedDensityFacet; import de.intevation.flys.artifacts.model.minfo.BedDiameterFacet; +import de.intevation.flys.artifacts.model.minfo.BedLoadBedQualityResult; import de.intevation.flys.artifacts.model.minfo.BedPorosityFacet; import de.intevation.flys.artifacts.model.minfo.BedQualityCalculation; +import de.intevation.flys.artifacts.model.minfo.BedQualityResult; import de.intevation.flys.artifacts.model.minfo.BedloadDiameterFacet; import de.intevation.flys.artifacts.states.DefaultState; @@ -42,25 +45,63 @@ return res; } - String stateId = getID(); - - // TODO CREATE FACETS DEPENDING ON THE CALCULATION RESULT - newFacets.add(new BedDiameterFacet(0, BED_QUALITY_BED_DIAMETER, - "bed diameter", ComputeType.ADVANCE, stateId, hash)); + BedQualityResult[] results = (BedQualityResult[]) res.getData(); - newFacets.add(new BedloadDiameterFacet(0, BED_QUALITY_BEDLOAD_DIAMETER, - "bedload diameter", ComputeType.ADVANCE, stateId, hash)); + if (results == null || results.length == 0) { + logger.warn("Calculation computed no results!"); + return res; + } - newFacets.add(new BedPorosityFacet(0, BED_QUALITY_POROSITY, "porosity", - ComputeType.ADVANCE, stateId, hash)); + generateFacets(newFacets, results, getID(), hash); + logger.debug("Created " + newFacets.size() + " new Facets."); - newFacets.add(new BedDensityFacet(0, BED_QUALITY_SEDIMENT_DENSITY, - "density", ComputeType.ADVANCE, stateId, hash)); - - logger.debug("Created " + newFacets.size() + " new Facets."); facets.addAll(newFacets); return res; } + + protected void generateFacets(List<Facet> newFacets, + BedQualityResult[] results, String stateId, String hash) { + logger.debug("BedQualityState.generateFacets"); + + for (int idx = 0; idx < results.length; idx++) { + BedQualityResult result = results[idx]; + + if (result instanceof BedBedQualityResult) { + // TODO I18N for Facet description + newFacets.add(new BedPorosityFacet(idx, + BED_QUALITY_POROSITY_TOPLAYER, "porosity_toplayer", + ComputeType.ADVANCE, stateId, hash)); + + // TODO I18N for Facet description + newFacets.add(new BedPorosityFacet(idx, + BED_QUALITY_POROSITY_SUBLAYER, "porosity_sublayer", + ComputeType.ADVANCE, stateId, hash)); + + // TODO I18N for Facet description + newFacets.add(new BedDensityFacet(idx, + BED_QUALITY_SEDIMENT_DENSITY_TOPLAYER, "density_toplayer", + ComputeType.ADVANCE, stateId, hash)); + + // TODO I18N for Facet description + newFacets.add(new BedDensityFacet(idx, + BED_QUALITY_SEDIMENT_DENSITY_SUBLAYER, "density_sublayer", + ComputeType.ADVANCE, stateId, hash)); + + // TODO I18N for Facet description + newFacets.add(new BedloadDiameterFacet(idx, + BED_QUALITY_BEDLOAD_DIAMETER, "bed diameter", + ComputeType.ADVANCE, stateId, hash)); + } + else if (result instanceof BedLoadBedQualityResult) { + // TODO CREATE FACETS DEPENDING ON THE CALCULATION RESULT + newFacets.add(new BedDiameterFacet(idx, BED_QUALITY_BED_DIAMETER, + "bedload diameter", ComputeType.ADVANCE, stateId, hash)); + } + else { + logger.warn("unknown result object: " + result.getClass()); + } + } + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :