sascha@3413: package de.intevation.flys.artifacts.states.fixation;
sascha@3413:
ingo@3466: import java.util.List;
ingo@3466:
ingo@3466: import org.apache.log4j.Logger;
ingo@3466:
sascha@3461: import de.intevation.artifactdatabase.state.Facet;
ingo@3460: import de.intevation.artifacts.CallContext;
ingo@3466: import de.intevation.artifacts.CallMeta;
ingo@3460: import de.intevation.flys.artifacts.FLYSArtifact;
ingo@3460: import de.intevation.flys.artifacts.access.FixRealizingAccess;
ingo@3460: import de.intevation.flys.artifacts.model.CalculationResult;
ingo@3460: import de.intevation.flys.artifacts.model.DataFacet;
ingo@3460: import de.intevation.flys.artifacts.model.FacetTypes;
ingo@3460: import de.intevation.flys.artifacts.model.ReportFacet;
ingo@3460: import de.intevation.flys.artifacts.model.WQCKms;
ingo@3460: import de.intevation.flys.artifacts.model.WQKms;
ingo@3466: import de.intevation.flys.artifacts.model.fixings.FixOutlierFacet;
ingo@3460: import de.intevation.flys.artifacts.model.fixings.FixRealizingCalculation;
ingo@3460: import de.intevation.flys.artifacts.model.fixings.FixRealizingResult;
ingo@3466: import de.intevation.flys.artifacts.model.fixings.FixReferenceEventsFacet;
ingo@3466: import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet;
sascha@3461: import de.intevation.flys.artifacts.model.fixings.FixWaterlevelFacet;
ingo@3466: import de.intevation.flys.artifacts.resources.Resources;
ingo@3460: import de.intevation.flys.artifacts.states.DefaultState;
ingo@3460:
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:
ingo@3466:
ingo@3466: public static final String I18N_WQ_CURVE = "fix.vollmer.wq.curve";
ingo@3466:
ingo@3466: public static final String I18N_WQ_OUTLIER = "fix.vollmer.wq.outliers";
ingo@3466:
ingo@3466: public static final String I18N_WQ_EVENTS = "fix.vollmer.wq.events";
ingo@3466:
ingo@3466:
ingo@3466:
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:
ingo@3466: String id = getID();
ingo@3466: CallMeta meta = context.getMeta();
ingo@3462:
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@3461: if (res.getReport().hasProblems()) {
sascha@3461: facets.add(new ReportFacet());
sascha@3461: }
sascha@3461:
ingo@3460: FixRealizingResult fixRes = (FixRealizingResult) res.getData();
ingo@3460: WQKms [] wqkms = fixRes != null ? fixRes.getWQKms() : new WQKms[0];
ingo@3460:
ingo@3460: for (int i = 0; i < wqkms.length; i++) {
ingo@3460: String nameW = null;
ingo@3460: String nameQ = null;
ingo@3460:
ingo@3460: if (access.isQ()) {
ingo@3460: nameQ = wqkms[i].getName();
ingo@3460: nameW = "W(" + nameQ + ")";
ingo@3460: }
ingo@3460: else {
ingo@3460: nameW = wqkms[i].getName();
ingo@3460: nameQ = "Q(" + nameW + ")";
ingo@3460: }
ingo@3460:
sascha@3461: Facet w = new FixWaterlevelFacet(
ingo@3460: i, LONGITUDINAL_W, nameW);
ingo@3460:
sascha@3461: Facet q = new FixWaterlevelFacet(
ingo@3460: i, LONGITUDINAL_Q, nameQ);
ingo@3460:
ingo@3460: facets.add(w);
ingo@3460: facets.add(q);
ingo@3460:
ingo@3460: if (wqkms[i] instanceof WQCKms) {
ingo@3460: String nameC = nameW.replace(
ingo@3460: "benutzerdefiniert",
ingo@3460: "benutzerdefiniert [korrigiert]");
ingo@3460:
sascha@3461: Facet c = new FixWaterlevelFacet(
ingo@3460: i, DISCHARGE_LONGITUDINAL_C, nameC);
ingo@3460:
ingo@3460: facets.add(c);
ingo@3460: }
sascha@3414: }
sascha@3414:
ingo@3460: if (wqkms.length > 0) {
ingo@3466: facets.add(
ingo@3466: new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
ingo@3466:
ingo@3466: facets.add(
ingo@3466: new DataFacet(WST, "WST data", ComputeType.ADVANCE, hash, id));
ingo@3466:
ingo@3466: facets.add(
ingo@3466: new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id));
ingo@3460: }
felix@3459:
ingo@3466: facets.add(new FixWQCurveFacet(
ingo@3466: 0, Resources.getMsg(meta, I18N_WQ_CURVE, I18N_WQ_CURVE)));
ingo@3466:
ingo@3466: facets.add(new FixReferenceEventsFacet(
ingo@3466: 0,
ingo@3466: FIX_REFERENCE_EVENTS_WQ,
ingo@3466: Resources.getMsg(meta, I18N_WQ_EVENTS, I18N_WQ_EVENTS)));
ingo@3466:
ingo@3466: facets.add(new FixOutlierFacet(
ingo@3466: 0,
ingo@3466: FIX_OUTLIER,
ingo@3466: Resources.getMsg(meta, I18N_WQ_OUTLIER, I18N_WQ_OUTLIER)));
ingo@3466:
sascha@3414: return res;
sascha@3414: }
sascha@3413: }
sascha@3413: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :