Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQStaticState.java @ 7236:a9bd4a23a852
(issue1474) Add datacage loading for SQ Relations
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 02 Oct 2013 17:04:23 +0200 |
parents | af13ceeba52a |
children | a56fe3bc6700 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQStaticState.java Tue Oct 01 17:10:55 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQStaticState.java Wed Oct 02 17:04:23 2013 +0200 @@ -10,11 +10,12 @@ import java.text.DateFormat; import java.util.List; - +import java.text.SimpleDateFormat; import org.apache.log4j.Logger; import org.dive4elements.artifactdatabase.state.Facet; +import org.dive4elements.artifacts.CallMeta; import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.access.StaticSQRelationAccess; import org.dive4elements.river.artifacts.model.sq.StaticSQContainer; @@ -22,13 +23,18 @@ import org.dive4elements.river.artifacts.model.sq.StaticSQRelation; import org.dive4elements.river.artifacts.states.StaticState; +import org.dive4elements.river.artifacts.resources.Resources; public class SQStaticState extends StaticState { + private static final Logger log = Logger.getLogger(SQStaticState.class); + private static final String FACET_DESCRIPTION = + "facet.sq_relation.static_data"; + public SQStaticState() { super(); } @@ -38,26 +44,51 @@ } @Override - public Object staticCompute( - List<Facet> facets, - D4EArtifact artifact + public Object computeInit( + D4EArtifact artifact, + String hash, + Object context, + CallMeta meta, + List<Facet> facets ) { - StaticSQRelationAccess access = new StaticSQRelationAccess(artifact); + StaticSQContainer sqRelations; - String river = access.getRiver(); - String measurementStation = access.getMeasurementStation(); + String id_string = artifact.getDataAsString("ids"); - int ms = -1; - try { - ms = Integer.parseInt(measurementStation); - } - catch (NumberFormatException nfe) { - log.error("Unparseable measurement station: " + measurementStation); - return null; + int static_id = -1; + String static_desc = null; + + if (id_string != null && !id_string.isEmpty()) { + String[] id_parts = id_string.split(";"); + static_id = Integer.parseInt(id_parts[0]); + if (id_parts.length > 1) { + static_desc = id_parts[1]; + } } - StaticSQContainer sqRelations = - StaticSQFactory.getSQRelations(river, ms); + if (static_id != -1) { + // If the next line fails a traceback is the best debug output anyhow + sqRelations = StaticSQFactory.getDistinctRelation(static_id); + log.debug("Got a distinct relation" + sqRelations); + } else { + StaticSQRelationAccess access = new StaticSQRelationAccess(artifact); + String river = access.getRiver(); + String measurementStation = access.getMeasurementStation(); + + int ms = -1; + try { + ms = Integer.parseInt(measurementStation); + } + catch (NumberFormatException nfe) { + log.error("Unparseable measurement station: " + measurementStation); + return null; + } + log.debug("Parsed measurement station: " + ms); + + sqRelations = StaticSQFactory.getSQRelations(river, ms); + } + + DateFormat df = new SimpleDateFormat("yyyy"); for (StaticSQRelation.Parameter p: StaticSQRelation.Parameter.values()) { @@ -69,11 +100,14 @@ for (StaticSQRelation relation : relations) { String name = "sq_" + p.toString().toLowerCase() + "_curve"; - DateFormat df = - DateFormat.getDateInstance(DateFormat.SHORT); - String desc = p.toString() + ": " + - df.format(relation.getStartTime()) + " - " + - df.format(relation.getStopTime()); + String desc = static_desc == null ? + Resources.getMsg(meta, + FACET_DESCRIPTION, + FACET_DESCRIPTION, + new Object[] { + df.format(relation.getStartTime()), + df.format(relation.getStopTime())}) : + static_desc; facets.add(new StaticSQRelationFacet( count, name,