sascha@3413: package de.intevation.flys.artifacts.states.fixation;
sascha@3413:
sascha@3414: import de.intevation.artifactdatabase.state.Facet;
sascha@3414:
sascha@3414: import de.intevation.artifacts.CallContext;
sascha@3414:
sascha@3414: import de.intevation.flys.artifacts.FLYSArtifact;
sascha@3414:
sascha@3414: import de.intevation.flys.artifacts.access.FixRealizingAccess;
sascha@3414:
sascha@3414: import de.intevation.flys.artifacts.model.CalculationResult;
felix@3457: import de.intevation.flys.artifacts.model.FacetTypes;
sascha@3414: import de.intevation.flys.artifacts.model.ReportFacet;
felix@3459: import de.intevation.flys.artifacts.model.WQKms;
felix@3457: import de.intevation.flys.artifacts.model.WaterlevelFacet;
sascha@3414:
sascha@3414: import de.intevation.flys.artifacts.model.fixings.FixRealizingCalculation;
felix@3457: import de.intevation.flys.artifacts.model.fixings.FixRealizingResult;
sascha@3413:
sascha@3413: import de.intevation.flys.artifacts.states.DefaultState;
sascha@3413:
sascha@3414: import java.util.List;
sascha@3414:
sascha@3414: import org.apache.log4j.Logger;
sascha@3413:
felix@3457:
sascha@3413: /**
sascha@3413: * @author Raimund Renkert
sascha@3413: */
felix@3457: public class FixRealizingCompute extends DefaultState implements FacetTypes {
sascha@3413:
sascha@3413: /** The logger used in this class. */
felix@3457: private static Logger logger = Logger.getLogger(FixRealizingCompute.class);
sascha@3413:
sascha@3413: /**
sascha@3413: * The default constructor that initializes an empty State object.
sascha@3413: */
sascha@3413: public FixRealizingCompute() {
sascha@3413: }
sascha@3414:
sascha@3414: @Override
sascha@3414: public Object computeAdvance(
sascha@3414: FLYSArtifact artifact,
sascha@3414: String hash,
sascha@3414: CallContext context,
sascha@3414: List facets,
sascha@3414: Object old
sascha@3414: ) {
felix@3457: logger.debug("FixRealizingCompute.computeAdvance");
sascha@3414:
sascha@3414: CalculationResult res;
sascha@3414:
sascha@3414: FixRealizingAccess access =
sascha@3414: new FixRealizingAccess(artifact);
sascha@3414:
sascha@3414: if (old instanceof CalculationResult) {
sascha@3414: res = (CalculationResult)old;
sascha@3414: }
sascha@3414: else {
sascha@3414: FixRealizingCalculation calc = new FixRealizingCalculation(access);
sascha@3414: res = calc.calculate();
sascha@3414: }
sascha@3414:
sascha@3414: if (facets == null) {
sascha@3414: return res;
sascha@3414: }
sascha@3414:
sascha@3414: if (res.getReport().hasProblems()) {
sascha@3414: facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
sascha@3414: }
sascha@3414:
felix@3457: // TODO: Add more facets.
felix@3457: FixRealizingResult fr = (FixRealizingResult) res.getData();
felix@3457:
felix@3459: /*
felix@3459: facets.add(
felix@3459: new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
felix@3459: */
felix@3459:
felix@3457: // WaterlevelFacet
felix@3457: // Also: DataFacet and WQstuff
felix@3457: // TODO naming, i18n.
felix@3457: String nameW = "waterlevel";
felix@3459: String nameQ = "discharge";
felix@3459: WQKms[] wqkms = fr.getWQKms();
felix@3459: for (int i = 0; i < wqkms.length; i++) {
felix@3459: facets.add(new WaterlevelFacet(
felix@3459: i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, id, hash));
felix@3459: facets.add(new WaterlevelFacet(
felix@3459: i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, id, hash));
felix@3459: }
sascha@3414:
sascha@3414: return res;
sascha@3414: }
sascha@3413: }
sascha@3413: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :