ingo@2709: package de.intevation.flys.artifacts.states; ingo@2709: ingo@2713: import java.util.ArrayList; ingo@2709: import java.util.List; ingo@2709: ingo@2709: import org.apache.log4j.Logger; ingo@2709: ingo@2709: import de.intevation.artifacts.CallContext; ingo@2709: ingo@2709: import de.intevation.artifactdatabase.state.Facet; ingo@2709: ingo@2709: import de.intevation.flys.artifacts.FLYSArtifact; ingo@3230: import de.intevation.flys.artifacts.access.BedHeightAccess; ingo@2713: import de.intevation.flys.artifacts.model.CalculationResult; ingo@2713: import de.intevation.flys.artifacts.model.DataFacet; ingo@2713: import de.intevation.flys.artifacts.model.FacetTypes; ingo@2713: import de.intevation.flys.artifacts.model.MiddleBedHeightData; ingo@2713: import de.intevation.flys.artifacts.model.MiddleBedHeightFacet; ingo@2713: import de.intevation.flys.artifacts.model.MiddleBedHeightCalculation; ingo@2709: ingo@2709: ingo@2713: public class MiddleBedHeight extends DefaultState implements FacetTypes { ingo@2709: ingo@2709: private static final Logger logger = Logger.getLogger(MiddleBedHeight.class); ingo@2709: ingo@2709: ingo@2709: @Override ingo@2709: public Object computeAdvance( ingo@2709: FLYSArtifact artifact, ingo@2709: String hash, ingo@2709: CallContext context, ingo@2709: List facets, ingo@2709: Object old ingo@2709: ) { ingo@2709: logger.debug("MiddleBedHeight.computeAdvance"); ingo@2709: ingo@2713: List newFacets = new ArrayList(); sascha@3232: ingo@3230: BedHeightAccess access = new BedHeightAccess(artifact); ingo@2709: ingo@2713: CalculationResult res = old instanceof CalculationResult ingo@2713: ? (CalculationResult) old ingo@3230: : new MiddleBedHeightCalculation().calculate(access); ingo@2713: ingo@2713: if (facets == null || res == null) { ingo@2713: return res; ingo@2713: } ingo@2713: ingo@2713: MiddleBedHeightData[] data = (MiddleBedHeightData[]) res.getData(); ingo@2713: ingo@2713: logger.debug("Calculated " + data.length + " MiddleBedHeightData objects"); ingo@2713: ingo@2713: String id = getID(); ingo@2713: int idx = 0; ingo@2713: ingo@2713: for (MiddleBedHeightData d: data) { ingo@2715: if (d.getStartYear() == d.getEndYear()) { ingo@2715: newFacets.add(new MiddleBedHeightFacet( ingo@2715: idx, ingo@2715: MIDDLE_BED_HEIGHT_SINGLE, ingo@2715: d.getSoundingName(context), ingo@2715: ComputeType.ADVANCE, ingo@2715: id, ingo@2715: hash ingo@2715: )); ingo@2715: } ingo@2715: else { ingo@2715: newFacets.add(new MiddleBedHeightFacet( ingo@2715: idx, ingo@2715: MIDDLE_BED_HEIGHT_EPOCH, ingo@2715: d.getSoundingName(context), ingo@2715: ComputeType.ADVANCE, ingo@2715: id, ingo@2715: hash ingo@2715: )); ingo@2715: } ingo@2713: ingo@2713: idx++; ingo@2713: } ingo@2713: ingo@2713: Facet csv = new DataFacet( ingo@2713: CSV, "CSV data", ComputeType.ADVANCE, hash, id); ingo@2713: ingo@2713: // TODO ADD PDF FACET ingo@2713: ingo@2713: newFacets.add(csv); ingo@2713: ingo@2713: logger.debug("Created " + newFacets.size() + " new Facets."); ingo@2713: ingo@2713: facets.addAll(newFacets); ingo@2713: ingo@2713: return res; ingo@2713: } ingo@2709: } ingo@2709: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :