teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5863: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5863: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.states.sq; rrenkert@5501: rrenkert@5501: import java.text.DateFormat; rrenkert@5501: import java.util.List; rrenkert@5501: rrenkert@5501: rrenkert@5501: import org.apache.log4j.Logger; rrenkert@5501: teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact; teichmann@5831: import org.dive4elements.river.artifacts.access.StaticSQRelationAccess; teichmann@5831: import org.dive4elements.river.artifacts.model.sq.StaticSQContainer; teichmann@5831: import org.dive4elements.river.artifacts.model.sq.StaticSQFactory; teichmann@5831: import org.dive4elements.river.artifacts.model.sq.StaticSQRelation; teichmann@5831: import org.dive4elements.river.artifacts.states.StaticState; rrenkert@5501: rrenkert@5501: rrenkert@5501: public class SQStaticState rrenkert@5501: extends StaticState rrenkert@5501: { rrenkert@5501: private static final Logger log = rrenkert@5501: Logger.getLogger(SQStaticState.class); rrenkert@5501: rrenkert@5501: public SQStaticState() { rrenkert@5501: super(); rrenkert@5501: } rrenkert@5501: rrenkert@5501: public SQStaticState(String name) { rrenkert@5501: super(name); rrenkert@5501: } rrenkert@5501: rrenkert@5501: @Override rrenkert@5501: public Object staticCompute( rrenkert@5501: List facets, teichmann@5867: D4EArtifact artifact rrenkert@5501: ) { rrenkert@5501: StaticSQRelationAccess access = new StaticSQRelationAccess(artifact); rrenkert@5501: rrenkert@5501: String river = access.getRiver(); rrenkert@5501: String measurementStation = access.getMeasurementStation(); rrenkert@5501: rrenkert@5501: int ms = -1; rrenkert@5501: try { teichmann@5506: ms = Integer.parseInt(measurementStation); rrenkert@5501: } rrenkert@5501: catch (NumberFormatException nfe) { rrenkert@5501: log.error("Unparseable measurement station: " + measurementStation); rrenkert@5501: return null; rrenkert@5501: } rrenkert@5501: rrenkert@5501: StaticSQContainer sqRelations = rrenkert@5501: StaticSQFactory.getSQRelations(river, ms); rrenkert@5501: teichmann@5506: for (StaticSQRelation.Parameter p: StaticSQRelation.Parameter.values()) { rrenkert@5501: rrenkert@5501: List relations = rrenkert@5501: sqRelations.getRelationsByParameter(p); teichmann@5506: teichmann@5506: if (!relations.isEmpty()) { rrenkert@5501: int count = 0; rrenkert@5501: rrenkert@5501: for (StaticSQRelation relation : relations) { rrenkert@5501: String name = "sq_" + p.toString().toLowerCase() + "_curve"; rrenkert@5501: DateFormat df = rrenkert@5501: DateFormat.getDateInstance(DateFormat.SHORT); rrenkert@5501: String desc = p.toString() + ": " + rrenkert@5501: df.format(relation.getStartTime()) + " - " + rrenkert@5501: df.format(relation.getStopTime()); rrenkert@5501: facets.add(new StaticSQRelationFacet( rrenkert@5501: count, rrenkert@5501: name, rrenkert@5501: desc, rrenkert@5501: relation)); rrenkert@5501: count++; rrenkert@5501: } rrenkert@5501: } rrenkert@5501: } rrenkert@5501: return null; rrenkert@5501: } rrenkert@5501: }