Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java @ 3224:075f1ba25758
issue654
flys-artifacts/trunk@4850 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Mon, 02 Jul 2012 13:46:12 +0000 |
parents | d35f28655fa6 |
children | e74e707ff650 |
line wrap: on
line source
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 :