Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/CrossSectionArtifact.java @ 1964:85e442933e6d
New CrossSectionArtifact.
flys-artifacts/trunk@3374 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 09 Dec 2011 13:58:29 +0000 |
parents | |
children | 27bb2e24f7f8 |
comparison
equal
deleted
inserted
replaced
1963:6c24ffe946a5 | 1964:85e442933e6d |
---|---|
1 package de.intevation.flys.artifacts; | |
2 | |
3 import java.util.ArrayList; | |
4 import java.util.List; | |
5 | |
6 import org.apache.log4j.Logger; | |
7 | |
8 import org.w3c.dom.Document; | |
9 | |
10 import de.intevation.artifacts.Artifact; | |
11 import de.intevation.artifacts.ArtifactFactory; | |
12 import de.intevation.artifacts.CallMeta; | |
13 | |
14 import de.intevation.flys.artifacts.model.CrossSectionFacet; | |
15 | |
16 import de.intevation.artifacts.common.ArtifactNamespaceContext; | |
17 import de.intevation.artifacts.common.utils.XMLUtils; | |
18 | |
19 import de.intevation.flys.artifacts.states.StaticState; | |
20 | |
21 import de.intevation.artifactdatabase.data.DefaultStateData; | |
22 import de.intevation.artifactdatabase.state.DefaultOutput; | |
23 import de.intevation.artifactdatabase.state.Facet; | |
24 import de.intevation.artifactdatabase.state.State; | |
25 | |
26 import de.intevation.flys.artifacts.states.WMSBackgroundState; | |
27 | |
28 | |
29 public class CrossSectionArtifact extends StaticFLYSArtifact { | |
30 | |
31 /** Access ids of doc. */ | |
32 public static final String XPATH_IDS = "/art:action/art:ids/@value"; | |
33 | |
34 /** Name of Artifact. */ | |
35 public static final String CS_ARTIFACT_NAME = "cross_section"; | |
36 | |
37 /** Name of state. */ | |
38 public static final String STATIC_STATE_NAME = "state.cross_section"; | |
39 | |
40 /** Own logger. */ | |
41 private static final Logger logger = | |
42 Logger.getLogger(CrossSectionArtifact.class); | |
43 | |
44 | |
45 /** Return given name. */ | |
46 @Override | |
47 public String getName() { | |
48 return CS_ARTIFACT_NAME; | |
49 } | |
50 | |
51 | |
52 /** Store ids, create a (broken) CrossSectionFacet. */ | |
53 @Override | |
54 public void setup( | |
55 String identifier, | |
56 ArtifactFactory factory, | |
57 Object context, | |
58 CallMeta callMeta, | |
59 Document data) | |
60 { | |
61 logger.info("CrossSectionArtifact.setup"); | |
62 | |
63 super.setup(identifier, factory, context, callMeta, data); | |
64 | |
65 String ids = XMLUtils.xpathString( | |
66 data, XPATH_IDS, ArtifactNamespaceContext.INSTANCE); | |
67 | |
68 if (ids != null && ids.length() > 0) { | |
69 addStringData("ids", ids); | |
70 } | |
71 else { | |
72 throw new IllegalArgumentException("No attribute 'ids' found!"); | |
73 } | |
74 | |
75 List<Facet> fs = new ArrayList<Facet>(); | |
76 fs.add(new CrossSectionFacet(0, "TODO GET NAME FROM DB")); | |
77 | |
78 StaticState state = (StaticState) getCurrentState(context); | |
79 state.computeInit(this, hash(), context, callMeta, fs); | |
80 | |
81 if (!fs.isEmpty()) { | |
82 facets.put(getCurrentStateId(), fs); | |
83 } | |
84 } | |
85 | |
86 | |
87 /** Do not copy data from daddyfact. */ | |
88 @Override | |
89 protected void initialize( | |
90 Artifact artifact, | |
91 Object context, | |
92 CallMeta callMeta) | |
93 { | |
94 // do nothing | |
95 } | |
96 | |
97 | |
98 /** | |
99 * Create and return a new StaticState with charting output. | |
100 */ | |
101 @Override | |
102 public State getCurrentState(Object cc) { | |
103 State state = new StaticState(STATIC_STATE_NAME); | |
104 | |
105 List<Facet> fs = facets.get(getCurrentStateId()); | |
106 | |
107 DefaultOutput o = new DefaultOutput( | |
108 "cross_section", | |
109 "cross_section", | |
110 "image/png", | |
111 fs, | |
112 "chart"); | |
113 | |
114 state.getOutputs().add(o); | |
115 | |
116 return state; | |
117 } | |
118 | |
119 | |
120 /** | |
121 * Get a list containing the one and only State. | |
122 * @param context ignored. | |
123 * @return list with one and only state. | |
124 */ | |
125 @Override | |
126 protected List<State> getStates(Object context) { | |
127 ArrayList<State> states = new ArrayList<State>(); | |
128 states.add(getCurrentState(context)); | |
129 | |
130 return states; | |
131 } | |
132 } | |
133 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |