Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java @ 438:7399bb8f83ea
Added manager to handle several levels of palette subdivsions.
Added parameter ids to identify the palette associated with a parameter
gnv-artifacts/trunk@486 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 28 Dec 2009 11:50:27 +0000 |
parents | 3a0c0ad113d9 |
children | 52e031261eaa |
comparison
equal
deleted
inserted
replaced
437:b624879d2902 | 438:7399bb8f83ea |
---|---|
9 import java.io.InputStream; | 9 import java.io.InputStream; |
10 import java.io.File; | 10 import java.io.File; |
11 | 11 |
12 import java.util.Properties; | 12 import java.util.Properties; |
13 import java.util.HashMap; | 13 import java.util.HashMap; |
14 import java.util.ArrayList; | |
14 | 15 |
15 import org.apache.log4j.Logger; | 16 import org.apache.log4j.Logger; |
16 | 17 |
17 import org.w3c.dom.Document; | 18 import org.w3c.dom.Document; |
18 import org.w3c.dom.Element; | 19 import org.w3c.dom.Element; |
27 import de.intevation.gnv.chart.XMLChartTheme; | 28 import de.intevation.gnv.chart.XMLChartTheme; |
28 | 29 |
29 import de.intevation.gnv.artifacts.cache.CacheFactory; | 30 import de.intevation.gnv.artifacts.cache.CacheFactory; |
30 | 31 |
31 import de.intevation.gnv.raster.Palette; | 32 import de.intevation.gnv.raster.Palette; |
33 import de.intevation.gnv.raster.PaletteManager; | |
32 | 34 |
33 import de.intevation.artifacts.ArtifactContextFactory; | 35 import de.intevation.artifacts.ArtifactContextFactory; |
34 | 36 |
35 import de.intevation.artifactdatabase.Config; | 37 import de.intevation.artifactdatabase.Config; |
36 import de.intevation.artifactdatabase.XMLUtils; | 38 import de.intevation.artifactdatabase.XMLUtils; |
158 Document config, | 160 Document config, |
159 GNVArtifactContext context | 161 GNVArtifactContext context |
160 ) { | 162 ) { |
161 log.info("configure palettes"); | 163 log.info("configure palettes"); |
162 | 164 |
163 HashMap palettes = new HashMap(); | 165 HashMap<Integer, PaletteManager> palettes = new HashMap(); |
164 | 166 |
165 Node node = Config.getNodeXPath(config, PALETTES_PATH); | 167 Node node = Config.getNodeXPath(config, PALETTES_PATH); |
166 | 168 |
167 if (node == null) { | 169 if (node == null) { |
168 log.error("No palettes found"); | 170 log.error("No palettes found"); |
169 } | 171 } |
170 else { | 172 else { |
171 NodeList pals = Config.getNodeSetXPath(PALETTE_ITEMS); | 173 NodeList pals = Config.getNodeSetXPath(PALETTE_ITEMS); |
172 for (int i = 0, N = pals == null ? 0 : pals.getLength(); i < N; ++i) { | 174 for (int i = 0, N = pals == null ? 0 : pals.getLength(); i < N; ++i) { |
173 Element pal = (Element)pals.item(i); | 175 Element pal = (Element)pals.item(i); |
174 String name = pal.getAttribute("name"); | 176 String name = pal.getAttribute("name"); |
175 String description = pal.getAttribute("description"); | 177 String description = pal.getAttribute("description"); |
176 String filename = pal.getAttribute("file"); | 178 String filename = pal.getAttribute("file"); |
177 | 179 String parameterIds = pal.getAttribute("parameter-ids"); |
178 if (name == null || name.length() == 0) { | 180 |
181 if (name == null || (name = name.trim()).length() == 0) { | |
179 log.error("Palette has no 'name' attribute."); | 182 log.error("Palette has no 'name' attribute."); |
180 } | 183 } |
181 else if (filename == null || filename.length() == 0) { | 184 else if (filename == null |
182 log.error("Palette has no 'file' attribute."); | 185 || (filename = filename.trim()).length() == 0) { |
186 log.error("Palette '" + name + "' has no 'file' attribute."); | |
187 } | |
188 else if (parameterIds == null | |
189 || (parameterIds = parameterIds.trim()).length() == 0) { | |
190 log.error("no parameter ids given for '" + name + "'"); | |
183 } | 191 } |
184 else { | 192 else { |
193 ArrayList<Integer> ids = new ArrayList<Integer>(); | |
194 for (String idString: parameterIds.split("[\t ,]+")) { | |
195 try { | |
196 ids.add(Integer.valueOf(idString)); | |
197 } | |
198 catch (NumberFormatException nfe) { | |
199 log.error( | |
200 "parameter id '" + idString + "' is integer"); | |
201 } | |
202 } | |
185 filename = Config.replaceConfigDir(filename); | 203 filename = Config.replaceConfigDir(filename); |
186 Document document = XMLUtils.parseDocument( | 204 Document document = XMLUtils.parseDocument( |
187 new File(filename)); | 205 new File(filename)); |
188 if (document == null) { | 206 if (document == null) { |
189 log.error("Cannot load palette file '" + | 207 log.error("Cannot load palette file '" + |
190 filename + "'"); | 208 filename + "'"); |
191 } | 209 } |
192 else { | 210 else { |
193 Palette p = new Palette(document, description); | 211 PaletteManager manager = new PaletteManager( |
194 palettes.put(name, p); | 212 name, |
213 description, | |
214 new Palette(document)); | |
215 for (Integer id: ids) { | |
216 palettes.put(id, manager); | |
217 } | |
195 } | 218 } |
196 } | 219 } |
197 } | 220 } // for all palettes |
198 } | 221 } |
199 | 222 |
200 context.put(PALETTES, palettes); | 223 context.put(PALETTES, palettes); |
201 } | 224 } |
202 | 225 |