Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/MiddleBedHeight.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-artifacts/src/main/java/org/dive4elements/river/artifacts/states/MiddleBedHeight.java@bd047b71ab37 |
children | 4897a58c8746 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/MiddleBedHeight.java Thu Apr 25 15:23:37 2013 +0200 @@ -0,0 +1,97 @@ +package org.dive4elements.river.artifacts.states; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.log4j.Logger; + +import org.dive4elements.artifacts.CallContext; + +import org.dive4elements.artifactdatabase.state.Facet; + +import org.dive4elements.river.artifacts.FLYSArtifact; +import org.dive4elements.river.artifacts.access.BedHeightAccess; +import org.dive4elements.river.artifacts.model.CalculationResult; +import org.dive4elements.river.artifacts.model.DataFacet; +import org.dive4elements.river.artifacts.model.FacetTypes; +import org.dive4elements.river.artifacts.model.MiddleBedHeightData; +import org.dive4elements.river.artifacts.model.MiddleBedHeightFacet; +import org.dive4elements.river.artifacts.model.MiddleBedHeightCalculation; + + +/** State in which Middle Bed Heights are generated. */ +public class MiddleBedHeight extends DefaultState implements FacetTypes { + + /** Private logger. */ + private static final Logger logger = Logger.getLogger(MiddleBedHeight.class); + + + @Override + public Object computeAdvance( + FLYSArtifact artifact, + String hash, + CallContext context, + List<Facet> facets, + Object old + ) { + logger.debug("MiddleBedHeight.computeAdvance"); + + List<Facet> newFacets = new ArrayList<Facet>(); + + BedHeightAccess access = new BedHeightAccess(artifact, context); + + CalculationResult res = old instanceof CalculationResult + ? (CalculationResult) old + : new MiddleBedHeightCalculation().calculate(access); + + if (facets == null || res == null) { + return res; + } + + MiddleBedHeightData[] data = (MiddleBedHeightData[]) res.getData(); + + logger.debug("Calculated " + data.length + " MiddleBedHeightData objects"); + + String id = getID(); + int idx = 0; + + for (MiddleBedHeightData d: data) { + if (d.getStartYear() == d.getEndYear()) { + newFacets.add(new MiddleBedHeightFacet( + idx, + MIDDLE_BED_HEIGHT_SINGLE, + d.getSoundingName(context), + ComputeType.ADVANCE, + id, + hash + )); + } + else { + newFacets.add(new MiddleBedHeightFacet( + idx, + MIDDLE_BED_HEIGHT_EPOCH, + d.getSoundingName(context), + ComputeType.ADVANCE, + id, + hash + )); + } + + idx++; + } + + Facet csv = new DataFacet( + CSV, "CSV data", ComputeType.ADVANCE, hash, id); + + // TODO ADD PDF FACET + + newFacets.add(csv); + + logger.debug("Created " + newFacets.size() + " new Facets."); + + facets.addAll(newFacets); + + return res; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :