comparison 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
comparison
equal deleted inserted replaced
3197:3e7911a02645 3198:d35f28655fa6
1 package de.intevation.flys.artifacts.states; 1 package de.intevation.flys.artifacts.states;
2 2
3 import java.util.List; 3 import java.util.List;
4 4
5 import org.apache.log4j.Logger; 5 import org.apache.log4j.Logger;
6
7 import org.json.JSONArray;
8 import org.json.JSONException;
6 9
7 import de.intevation.artifacts.CallMeta; 10 import de.intevation.artifacts.CallMeta;
8 import de.intevation.artifacts.CallContext; 11 import de.intevation.artifacts.CallContext;
9 12
10 import de.intevation.artifactdatabase.state.Facet; 13 import de.intevation.artifactdatabase.state.Facet;
11 14
12 import de.intevation.flys.artifacts.FLYSArtifact; 15 import de.intevation.flys.artifacts.FLYSArtifact;
13 import de.intevation.flys.artifacts.ManualPointsArtifact; 16 import de.intevation.flys.artifacts.ManualPointsArtifact;
14 17
18 import de.intevation.flys.artifacts.model.CrossSectionWaterLineFacet;
19 import de.intevation.flys.artifacts.model.FacetTypes;
15 import de.intevation.flys.artifacts.model.ManualPointsFacet; 20 import de.intevation.flys.artifacts.model.ManualPointsFacet;
16 import de.intevation.flys.artifacts.model.FacetTypes;
17 21
18 import de.intevation.flys.artifacts.resources.Resources; 22 import de.intevation.flys.artifacts.resources.Resources;
19
20 23
21 /** 24 /**
22 * The only state for an ManualPointArtifact. 25 * The only state for an ManualPointArtifact.
23 */ 26 */
24 public class ManualPointsSingleState 27 public class ManualPointsSingleState
25 extends DefaultState 28 extends DefaultState
26 implements FacetTypes 29 implements FacetTypes
27 { 30 {
28 /** Developer-centric description of facet. */ 31 /** Developer-centric description of facet. */
29 public static final String I18N_DESCRIPTION = "facet.longitudinal_section.manualpoint"; 32 public static final String I18N_DESCRIPTION
33 = "facet.longitudinal_section.manualpoint";
34
35 /** Part of data key. */
36 protected static final String DOT_DATA
37 = ".data";
38
39 /** Part of data key. */
40 protected static final String DOT_LINES
41 = ".lines";
30 42
31 /** The logger that is used in this state. */ 43 /** The logger that is used in this state. */
32 private static final Logger logger = Logger.getLogger(ManualPointsSingleState.class); 44 private static final Logger logger =
45 Logger.getLogger(ManualPointsSingleState.class);
33 46
34 47
35 /** 48 /**
36 * Add an ManualPointsFacet to list of Facets. 49 * Add ManualPointsFacets to list of Facets.
37 * 50 *
38 * @param artifact Ignored. 51 * @param artifact Ignored.
39 * @param hash Ignored. 52 * @param hash Ignored.
40 * @param context Ignored.
41 * @param meta CallMeta to be used for internationalization. 53 * @param meta CallMeta to be used for internationalization.
42 * @param facets List to add ManualPointsFacet to. 54 * @param facets List to add ManualPointsFacet to.
43 * 55 *
44 * @return null. 56 * @return null.
45 */ 57 */
52 logger.debug("ManualPointsSingleState.compute()"); 64 logger.debug("ManualPointsSingleState.compute()");
53 ManualPointsArtifact points = (ManualPointsArtifact) artifact; 65 ManualPointsArtifact points = (ManualPointsArtifact) artifact;
54 66
55 // Add Facet per Diagram type if data given. 67 // Add Facet per Diagram type if data given.
56 for (ChartType ct: ChartType.values()) { 68 for (ChartType ct: ChartType.values()) {
57 String pointData = points.getDataAsString(ct + "." + MANUALPOINTS + ".data"); 69 // Handle points.
58 if (pointData != null && !pointData.equals("") && !pointData.equals("[]")) { 70 String pointData = points.getDataAsString(ct + "." + MANUALPOINTS +
71 DOT_DATA);
72 if (pointData != null && !pointData.equals("")
73 && !pointData.equals("[]")) {
59 String fName = ct + "." + MANUALPOINTS; 74 String fName = ct + "." + MANUALPOINTS;
60 ManualPointsFacet facet = new ManualPointsFacet( 75 ManualPointsFacet facet = new ManualPointsFacet(
61 0, 76 0,
62 fName, 77 fName,
63 Resources.getMsg(meta, "manualpoints", "Manual Points")); 78 Resources.getMsg(meta, "manualpoints", "Manual Points"));
65 facets.add(facet); 80 facets.add(facet);
66 } 81 }
67 else { 82 else {
68 //logger.debug("No points for " + ct); 83 //logger.debug("No points for " + ct);
69 } 84 }
85
86 // Handle lines.
87 String linesData = points.getDataAsString(ct + "." + MANUALPOINTS +
88 DOT_LINES);
89 if (linesData != null && !linesData.equals("")
90 && !linesData.equals("[]")) {
91 try {
92 JSONArray lines = new JSONArray((String) linesData);
93 for (int i = 0, P = lines.length(); i < P; i++) {
94 JSONArray array = lines.getJSONArray(i);
95 double y = array.getDouble(0);
96 String name = array.getString(1);
97 String fName = ct + "." + MANUALLINE;
98 logger.debug("have facet: " + y + " / " + name + " -> " + fName);
99 CrossSectionWaterLineFacet facet = new CrossSectionWaterLineFacet(
100 i,
101 fName,
102 name);
103
104 facets.add(facet);
105 }
106 }
107 catch(JSONException e){
108 logger.error("Could not decode json.");
109 }
110
111 }
112 else {
113 //logger.debug("No points for " + ct);
114 }
70 } 115 }
71 116
72 return null; 117 return null;
73 } 118 }
74 119
75 120
121 /** Call compute. */
76 @Override 122 @Override
77 public Object computeInit( 123 public Object computeInit(
78 FLYSArtifact artifact, 124 FLYSArtifact artifact,
79 String hash, 125 String hash,
80 Object context, 126 Object context,
83 ) { 129 ) {
84 return compute(artifact, hash, meta, facets); 130 return compute(artifact, hash, meta, facets);
85 } 131 }
86 132
87 133
134 /** Call compute. */
88 @Override 135 @Override
89 public Object computeFeed( 136 public Object computeFeed(
90 FLYSArtifact artifact, 137 FLYSArtifact artifact,
91 String hash, 138 String hash,
92 CallContext context, 139 CallContext context,

http://dive4elements.wald.intevation.org