raimund@3629: package de.intevation.flys.artifacts.states.minfo; raimund@3629: ingo@3749: import java.util.ArrayList; ingo@3749: import java.util.List; ingo@3749: ingo@3749: import org.apache.log4j.Logger; ingo@3749: ingo@3749: import de.intevation.artifactdatabase.state.Facet; ingo@3749: import de.intevation.artifacts.CallContext; ingo@3749: import de.intevation.flys.artifacts.FLYSArtifact; ingo@3749: import de.intevation.flys.artifacts.access.BedQualityAccess; ingo@3749: import de.intevation.flys.artifacts.model.CalculationResult; ingo@3757: import de.intevation.flys.artifacts.model.FacetTypes; ingo@3757: import de.intevation.flys.artifacts.model.minfo.BedDensityFacet; ingo@3757: import de.intevation.flys.artifacts.model.minfo.BedDiameterFacet; ingo@3757: import de.intevation.flys.artifacts.model.minfo.BedPorosityFacet; christian@3761: import de.intevation.flys.artifacts.model.minfo.BedQualityCalculation; ingo@3757: import de.intevation.flys.artifacts.model.minfo.BedloadDiameterFacet; raimund@3629: import de.intevation.flys.artifacts.states.DefaultState; raimund@3629: sascha@3750: ingo@3757: public class BedQualityState extends DefaultState implements FacetTypes { ingo@3757: ingo@3757: private static final long serialVersionUID = 1L; ingo@3757: ingo@3757: private static final Logger logger = Logger ingo@3757: .getLogger(BedQualityState.class); sascha@3750: ingo@3749: @Override ingo@3757: public Object computeAdvance(FLYSArtifact artifact, String hash, ingo@3757: CallContext context, List facets, Object old) { ingo@3749: logger.debug("BedQualityState.computeAdvance"); raimund@3629: ingo@3749: List newFacets = new ArrayList(); ingo@3749: ingo@3749: BedQualityAccess access = new BedQualityAccess(artifact); ingo@3749: ingo@3757: CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old ingo@3749: : new BedQualityCalculation().calculate(access); ingo@3749: ingo@3749: if (facets == null || res == null) { ingo@3749: return res; ingo@3749: } ingo@3749: ingo@3757: String stateId = getID(); ingo@3757: ingo@3757: // TODO CREATE FACETS DEPENDING ON THE CALCULATION RESULT ingo@3757: newFacets.add(new BedDiameterFacet(0, BED_QUALITY_BED_DIAMETER, ingo@3757: "bed diameter", ComputeType.ADVANCE, stateId, hash)); ingo@3757: ingo@3757: newFacets.add(new BedloadDiameterFacet(0, BED_QUALITY_BEDLOAD_DIAMETER, ingo@3757: "bedload diameter", ComputeType.ADVANCE, stateId, hash)); ingo@3757: ingo@3757: newFacets.add(new BedPorosityFacet(0, BED_QUALITY_POROSITY, "porosity", ingo@3757: ComputeType.ADVANCE, stateId, hash)); ingo@3757: ingo@3757: newFacets.add(new BedDensityFacet(0, BED_QUALITY_SEDIMENT_DENSITY, ingo@3757: "density", ComputeType.ADVANCE, stateId, hash)); ingo@3757: ingo@3749: logger.debug("Created " + newFacets.size() + " new Facets."); ingo@3749: facets.addAll(newFacets); ingo@3749: ingo@3749: return res; ingo@3749: } raimund@3629: } christian@3761: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :