Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java @ 3198:d35f28655fa6
Create and handle new manual line type facets.
flys-artifacts/trunk@4814 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 27 Jun 2012 15:22:01 +0000 |
parents | 5642a83420f2 |
children | e74e707ff650 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java Wed Jun 27 15:11:23 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ManualPointsSingleState.java Wed Jun 27 15:22:01 2012 +0000 @@ -4,6 +4,9 @@ import org.apache.log4j.Logger; +import org.json.JSONArray; +import org.json.JSONException; + import de.intevation.artifacts.CallMeta; import de.intevation.artifacts.CallContext; @@ -12,12 +15,12 @@ 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.model.FacetTypes; import de.intevation.flys.artifacts.resources.Resources; - /** * The only state for an ManualPointArtifact. */ @@ -26,18 +29,27 @@ implements FacetTypes { /** Developer-centric description of facet. */ - public static final String I18N_DESCRIPTION = "facet.longitudinal_section.manualpoint"; + 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); + private static final Logger logger = + Logger.getLogger(ManualPointsSingleState.class); /** - * Add an ManualPointsFacet to list of Facets. + * Add ManualPointsFacets to list of Facets. * * @param artifact Ignored. * @param hash Ignored. - * @param context Ignored. * @param meta CallMeta to be used for internationalization. * @param facets List to add ManualPointsFacet to. * @@ -54,8 +66,11 @@ // Add Facet per Diagram type if data given. for (ChartType ct: ChartType.values()) { - String pointData = points.getDataAsString(ct + "." + MANUALPOINTS + ".data"); - if (pointData != null && !pointData.equals("") && !pointData.equals("[]")) { + // 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, @@ -67,12 +82,43 @@ 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, @@ -85,6 +131,7 @@ } + /** Call compute. */ @Override public Object computeFeed( FLYSArtifact artifact,