Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ScenarioSelect.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 | c11da3540b70 |
children | 8e66293c5369 |
comparison
equal
deleted
inserted
replaced
2987:98c7a46ec5ae | 3318:dbe2f85bf160 |
---|---|
1 package de.intevation.flys.artifacts.states; | |
2 | |
3 import java.io.File; | |
4 | |
5 import org.apache.log4j.Logger; | |
6 | |
7 import org.w3c.dom.Element; | |
8 | |
9 import de.intevation.artifacts.Artifact; | |
10 import de.intevation.artifacts.CallContext; | |
11 import de.intevation.artifacts.CallMeta; | |
12 | |
13 import de.intevation.artifacts.common.utils.XMLUtils; | |
14 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; | |
15 import de.intevation.artifacts.common.utils.FileTools; | |
16 | |
17 import de.intevation.artifactdatabase.ProtocolUtils; | |
18 | |
19 import de.intevation.flys.artifacts.FLYSArtifact; | |
20 import de.intevation.flys.artifacts.resources.Resources; | |
21 import de.intevation.flys.utils.FLYSUtils; | |
22 | |
23 /** | |
24 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | |
25 */ | |
26 public class ScenarioSelect extends DefaultState { | |
27 | |
28 /** The logger that is used in this class.*/ | |
29 private static Logger logger = Logger.getLogger(ScenarioSelect.class); | |
30 | |
31 | |
32 public static final String FIELD_MODE = "scenario"; | |
33 public static final String FIELD_BARRIERS = "uesk.barriers"; | |
34 | |
35 public static final String SCENARIO_CURRENT = "scenario.current"; | |
36 public static final String SCENARIO_POTENTIEL = "scenario.potentiel"; | |
37 public static final String SCENARIO_SCENRAIO = "scenario.scenario"; | |
38 | |
39 public static final String[] SCENARIOS = { | |
40 SCENARIO_CURRENT, | |
41 SCENARIO_POTENTIEL, | |
42 SCENARIO_SCENRAIO }; | |
43 | |
44 | |
45 | |
46 @Override | |
47 protected String getUIProvider() { | |
48 return "map_digitize"; | |
49 } | |
50 | |
51 | |
52 @Override | |
53 protected void appendStaticData( | |
54 FLYSArtifact flys, | |
55 CallContext cc, | |
56 ElementCreator creator, | |
57 Element ui, | |
58 String name | |
59 ) { | |
60 if (name != null && name.equals(FIELD_BARRIERS)) { | |
61 return; | |
62 } | |
63 else { | |
64 super.appendStaticData(flys, cc, creator, ui, name); | |
65 } | |
66 } | |
67 | |
68 | |
69 @Override | |
70 protected Element[] createItems( | |
71 XMLUtils.ElementCreator cr, | |
72 Artifact artifact, | |
73 String name, | |
74 CallContext context) | |
75 { | |
76 CallMeta meta = context.getMeta(); | |
77 | |
78 if (name.equals(FIELD_MODE)) { | |
79 Element[] scenarios = new Element[SCENARIOS.length]; | |
80 | |
81 int i = 0; | |
82 | |
83 for (String scenario: SCENARIOS) { | |
84 scenarios[i++] = createItem( | |
85 cr, new String[] { | |
86 Resources.getMsg(meta, scenario, scenario), | |
87 scenario | |
88 }); | |
89 } | |
90 | |
91 return scenarios; | |
92 } | |
93 else { | |
94 FLYSArtifact flys = (FLYSArtifact) artifact; | |
95 String data = flys.getDataAsString(name); | |
96 | |
97 return new Element[] { createItem( | |
98 cr, | |
99 new String[] { | |
100 Resources.getMsg(meta, name, name), | |
101 data | |
102 } | |
103 )}; | |
104 } | |
105 } | |
106 | |
107 | |
108 protected Element createItem(XMLUtils.ElementCreator cr, Object obj) { | |
109 Element item = ProtocolUtils.createArtNode(cr, "item", null, null); | |
110 Element label = ProtocolUtils.createArtNode(cr, "label", null, null); | |
111 Element value = ProtocolUtils.createArtNode(cr, "value", null, null); | |
112 | |
113 String[] arr = (String[]) obj; | |
114 | |
115 label.setTextContent(arr[0]); | |
116 value.setTextContent(arr[1]); | |
117 | |
118 item.appendChild(label); | |
119 item.appendChild(value); | |
120 | |
121 return item; | |
122 } | |
123 | |
124 | |
125 | |
126 @Override | |
127 public void endOfLife(Artifact artifact, Object callContext) { | |
128 super.endOfLife(artifact, callContext); | |
129 logger.info("ScenarioSelect.endOfLife: " + artifact.identifier()); | |
130 | |
131 FLYSArtifact flys = (FLYSArtifact) artifact; | |
132 removeDirectory(flys); | |
133 } | |
134 | |
135 | |
136 /** | |
137 * Removes the directory and all its content where the required data and the | |
138 * results of WSPLGEN are stored. Should be called in endOfLife(). | |
139 */ | |
140 protected void removeDirectory(FLYSArtifact artifact) { | |
141 String shapePath = FLYSUtils.getXPathString( | |
142 FLYSUtils.XPATH_SHAPEFILE_DIR); | |
143 | |
144 File artifactDir = new File(shapePath, artifact.identifier()); | |
145 | |
146 if (artifactDir.exists()) { | |
147 logger.info("Delete directory: " + artifactDir.getAbsolutePath()); | |
148 boolean success = FileTools.deleteRecursive(artifactDir); | |
149 } | |
150 else { | |
151 logger.debug("There is no directory to remove."); | |
152 } | |
153 } | |
154 | |
155 | |
156 } | |
157 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |