Mercurial > dive4elements > gnv-client
diff 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 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java Sun Dec 27 05:25:40 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java Mon Dec 28 11:50:27 2009 +0000 @@ -11,6 +11,7 @@ import java.util.Properties; import java.util.HashMap; +import java.util.ArrayList; import org.apache.log4j.Logger; @@ -29,6 +30,7 @@ import de.intevation.gnv.artifacts.cache.CacheFactory; import de.intevation.gnv.raster.Palette; +import de.intevation.gnv.raster.PaletteManager; import de.intevation.artifacts.ArtifactContextFactory; @@ -160,7 +162,7 @@ ) { log.info("configure palettes"); - HashMap palettes = new HashMap(); + HashMap<Integer, PaletteManager> palettes = new HashMap(); Node node = Config.getNodeXPath(config, PALETTES_PATH); @@ -171,17 +173,33 @@ NodeList pals = Config.getNodeSetXPath(PALETTE_ITEMS); for (int i = 0, N = pals == null ? 0 : pals.getLength(); i < N; ++i) { Element pal = (Element)pals.item(i); - String name = pal.getAttribute("name"); - String description = pal.getAttribute("description"); - String filename = pal.getAttribute("file"); + String name = pal.getAttribute("name"); + String description = pal.getAttribute("description"); + String filename = pal.getAttribute("file"); + String parameterIds = pal.getAttribute("parameter-ids"); - if (name == null || name.length() == 0) { + if (name == null || (name = name.trim()).length() == 0) { log.error("Palette has no 'name' attribute."); } - else if (filename == null || filename.length() == 0) { - log.error("Palette has no 'file' attribute."); + else if (filename == null + || (filename = filename.trim()).length() == 0) { + log.error("Palette '" + name + "' has no 'file' attribute."); + } + else if (parameterIds == null + || (parameterIds = parameterIds.trim()).length() == 0) { + log.error("no parameter ids given for '" + name + "'"); } else { + ArrayList<Integer> ids = new ArrayList<Integer>(); + for (String idString: parameterIds.split("[\t ,]+")) { + try { + ids.add(Integer.valueOf(idString)); + } + catch (NumberFormatException nfe) { + log.error( + "parameter id '" + idString + "' is integer"); + } + } filename = Config.replaceConfigDir(filename); Document document = XMLUtils.parseDocument( new File(filename)); @@ -190,11 +208,16 @@ filename + "'"); } else { - Palette p = new Palette(document, description); - palettes.put(name, p); + PaletteManager manager = new PaletteManager( + name, + description, + new Palette(document)); + for (Integer id: ids) { + palettes.put(id, manager); + } } } - } + } // for all palettes } context.put(PALETTES, palettes);