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

http://dive4elements.wald.intevation.org