Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java @ 3318:dbe2f85bf160
merged flys-artifacts/2.8
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:35 +0200 |
parents | d35f28655fa6 |
children | e74e707ff650 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java Fri Sep 28 12:14:35 2012 +0200 @@ -0,0 +1,146 @@ +package de.intevation.flys.artifacts.states; + +import java.util.List; + +import org.apache.log4j.Logger; + +import org.json.JSONArray; +import org.json.JSONException; + +import de.intevation.artifacts.CallMeta; +import de.intevation.artifacts.CallContext; + +import de.intevation.artifactdatabase.state.Facet; + +import de.intevation.flys.artifacts.FLYSArtifact; +import de.intevation.flys.artifacts.ManualPointsArtifact; + +import de.intevation.flys.artifacts.model.CrossSectionWaterLineFacet; +import de.intevation.flys.artifacts.model.FacetTypes; +import de.intevation.flys.artifacts.model.ManualPointsFacet; + +import de.intevation.flys.artifacts.resources.Resources; + +/** + * The only state for an ManualPointArtifact. + */ +public class ManualPointsSingleState +extends DefaultState +implements FacetTypes +{ + /** Developer-centric description of facet. */ + public static final String I18N_DESCRIPTION + = "facet.longitudinal_section.manualpoint"; + + /** Part of data key. */ + protected static final String DOT_DATA + = ".data"; + + /** Part of data key. */ + protected static final String DOT_LINES + = ".lines"; + + /** The logger that is used in this state. */ + private static final Logger logger = + Logger.getLogger(ManualPointsSingleState.class); + + + /** + * Add ManualPointsFacets to list of Facets. + * + * @param artifact Ignored. + * @param hash Ignored. + * @param meta CallMeta to be used for internationalization. + * @param facets List to add ManualPointsFacet to. + * + * @return null. + */ + public Object compute( + FLYSArtifact artifact, + String hash, + CallMeta meta, + List<Facet> facets + ) { + logger.debug("ManualPointsSingleState.compute()"); + ManualPointsArtifact points = (ManualPointsArtifact) artifact; + + // Add Facet per Diagram type if data given. + for (ChartType ct: ChartType.values()) { + // Handle points. + String pointData = points.getDataAsString(ct + "." + MANUALPOINTS + + DOT_DATA); + if (pointData != null && !pointData.equals("") + && !pointData.equals("[]")) { + String fName = ct + "." + MANUALPOINTS; + ManualPointsFacet facet = new ManualPointsFacet( + 0, + fName, + Resources.getMsg(meta, "manualpoints", "Manual Points")); + + facets.add(facet); + } + else { + //logger.debug("No points for " + ct); + } + + // Handle lines. + String linesData = points.getDataAsString(ct + "." + MANUALPOINTS + + DOT_LINES); + if (linesData != null && !linesData.equals("") + && !linesData.equals("[]")) { + try { + JSONArray lines = new JSONArray((String) linesData); + for (int i = 0, P = lines.length(); i < P; i++) { + JSONArray array = lines.getJSONArray(i); + double y = array.getDouble(0); + String name = array.getString(1); + String fName = ct + "." + MANUALLINE; + logger.debug("have facet: " + y + " / " + name + " -> " + fName); + CrossSectionWaterLineFacet facet = new CrossSectionWaterLineFacet( + i, + fName, + name); + + facets.add(facet); + } + } + catch(JSONException e){ + logger.error("Could not decode json."); + } + + } + else { + //logger.debug("No points for " + ct); + } + } + + return null; + } + + + /** Call compute. */ + @Override + public Object computeInit( + FLYSArtifact artifact, + String hash, + Object context, + CallMeta meta, + List<Facet> facets + ) { + return compute(artifact, hash, meta, facets); + } + + + /** Call compute. */ + @Override + public Object computeFeed( + FLYSArtifact artifact, + String hash, + CallContext context, + List<Facet> facets, + Object old + ) { + return compute(artifact, hash, context.getMeta(), facets); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :