raimund@2651: package de.intevation.flys.artifacts.states.fixation;
raimund@2651:
sascha@2784: import de.intevation.artifactdatabase.state.Facet;
sascha@2784:
sascha@2784: import de.intevation.artifacts.CallContext;
sascha@2784:
sascha@2784: import de.intevation.flys.artifacts.FLYSArtifact;
sascha@2784: import de.intevation.flys.artifacts.FixationArtifactAccess;
sascha@2784:
sascha@2784: import de.intevation.flys.artifacts.model.CalculationResult;
sascha@2992: import de.intevation.flys.artifacts.model.DataFacet;
sascha@2992: import de.intevation.flys.artifacts.model.FacetTypes;
sascha@2784: import de.intevation.flys.artifacts.model.ReportFacet;
sascha@2784:
sascha@2784: import de.intevation.flys.artifacts.model.fixings.FixCalculation;
raimund@2651:
raimund@3028: import de.intevation.flys.artifacts.model.fixings.FixAvSectorFacet;
raimund@3035: import de.intevation.flys.artifacts.model.fixings.FixAnalysisEventsFacet;
raimund@3035: import de.intevation.flys.artifacts.model.fixings.FixReferenceEventsFacet;
raimund@3028: import de.intevation.flys.artifacts.model.fixings.FixOutlierFacet;
raimund@3028: import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet;
raimund@3028:
raimund@3028:
raimund@3028: import de.intevation.flys.artifacts.model.fixings.DateRange;
raimund@3028:
raimund@2651: import de.intevation.flys.artifacts.states.DefaultState;
raimund@2651:
sascha@2784: import java.util.List;
sascha@2784:
sascha@2784: import org.apache.log4j.Logger;
sascha@2784:
raimund@2651: /**
raimund@2651: * @author Raimund Renkert
raimund@2651: */
sascha@2992: public class FixationCompute
sascha@2992: extends DefaultState
sascha@2992: implements FacetTypes
sascha@2992: {
raimund@2651:
sascha@2784: /** The log used in this class. */
sascha@2784: private static Logger log = Logger.getLogger(FixationCompute.class);
raimund@2651:
raimund@2651:
raimund@2651: /**
raimund@2651: * The default constructor that initializes an empty State object.
raimund@2651: */
raimund@2651: public FixationCompute() {
raimund@2651: }
raimund@2651:
sascha@2784: @Override
sascha@2784: public Object computeAdvance(
sascha@2784: FLYSArtifact artifact,
sascha@2784: String hash,
sascha@2784: CallContext context,
sascha@2784: List facets,
sascha@2784: Object old
sascha@2784: ) {
sascha@2784: log.debug("FixationCompute.computeAdvance");
sascha@2784:
sascha@2784: CalculationResult res;
sascha@2784:
raimund@3028: FixationArtifactAccess access =
raimund@3028: new FixationArtifactAccess(artifact);
raimund@3028:
sascha@2784: if (old instanceof CalculationResult) {
sascha@2784: res = (CalculationResult)old;
sascha@2784: }
sascha@2784: else {
sascha@2784: FixCalculation calc =
sascha@2784: new FixCalculation(access);
sascha@2784:
sascha@2784: res = calc.calculate();
sascha@2784: }
sascha@2784:
sascha@2784: if (facets == null) {
sascha@2784: return res;
sascha@2784: }
sascha@2784:
sascha@2784: if (res.getReport().hasProblems()) {
sascha@2784: facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
sascha@2784: }
sascha@2992: facets.add(
sascha@2992: new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
sascha@2784:
raimund@3028: int count = access.getAnalysisPeriods().length;
raimund@3028: for (int i = 0; i < count; i++) {
raimund@3028: DateRange period = access.getAnalysisPeriods()[i];
raimund@3028: for (int j = access.getQSectorStart().intValue();
raimund@3028: j < access.getQSectorEnd().intValue();
raimund@3028: j++) {
raimund@3028: //TODO: replace j with q sector string.
raimund@3028: String description = j + ": " +
raimund@3028: period.getFrom().toString() + " - " +
raimund@3028: period.getTo().toString();
raimund@3028: facets.add(
raimund@3028: new FixAvSectorFacet(j - access.getQSectorStart().intValue(),
raimund@3028: description));
raimund@3028: }
raimund@3028: String eventDesc = period.getFrom().toString() +
raimund@3028: " - " +
raimund@3028: period.getTo().toString();
raimund@3035: facets.add(new FixAnalysisEventsFacet(i, eventDesc));
raimund@3028: }
raimund@3035: facets.add(new FixReferenceEventsFacet(0, "Referenceperiod"));
raimund@3028: facets.add(new FixWQCurveFacet("W/Q"));
raimund@3028: facets.add(new FixOutlierFacet("Outlier"));
raimund@3028:
sascha@2784: return res;
sascha@2784: }
raimund@2651: }
raimund@2651: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :