Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/server/CollectionHelper.java @ 560:5274b9317e40
#139 Fixed NPE while initialising user defined values in the adapted wq panel.
flys-client/trunk@2092 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 09 Jun 2011 06:05:44 +0000 |
parents | 26e38b79658d |
children | a0884f486711 |
line wrap: on
line source
package de.intevation.flys.client.server; import java.util.List; import java.util.Map; import org.w3c.dom.Document; import org.w3c.dom.Element; import de.intevation.artifacts.common.ArtifactNamespaceContext; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; import de.intevation.flys.client.shared.model.Collection; import de.intevation.flys.client.shared.model.OutputMode; import de.intevation.flys.client.shared.model.Theme; import de.intevation.flys.client.shared.model.ThemeList; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class CollectionHelper { public static Document createAttribute(Collection collection) { System.out.println("CollectionHelper.createAttribute"); Document doc = XMLUtils.newDocument(); ElementCreator cr = new ElementCreator( doc, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); Element attr = cr.create("attribute"); doc.appendChild(attr); Map<String, OutputMode> tmpOuts = collection.getOutputModes(); Element outs = createOutputElements(cr, collection, tmpOuts); if (outs != null) { attr.appendChild(outs); } return doc; } /** * Creates a whole block with art:output nodes. * * @param cr The ElementCreator used to create new elements. * @param c The collection. * @param modes The OutputModes that should be included. * * @return an element with output modes. */ protected static Element createOutputElements( ElementCreator cr, Collection c, Map<String, OutputMode> mmodes) { System.out.println("CollectionHelper.createOutputElements"); java.util.Collection<OutputMode> modes = mmodes != null ? mmodes.values() : null; if (modes == null || modes.size() == 0) { System.err.println("Collection has no modes: " + c.identifier()); return null; } Element outs = cr.create("outputs"); for (OutputMode mode: modes) { Element out = createOutputElement(cr, c, mode); if (out != null) { outs.appendChild(out); } } return outs; } /** * Create a node art:output that further consist of art:theme nodes. * * @param cr The ElementCreator used to create new elements. * @param c The collection. * @param mode The OutputMode. * * @return an element that represents an output mode with its themes. */ protected static Element createOutputElement( ElementCreator cr, Collection collection, OutputMode mode) { System.out.println("CollectionHelper.createOutputElement"); Element out = cr.create("output"); cr.addAttr(out, "name", mode.getName(), false); ThemeList themeList = collection.getThemeList(mode.getName()); List<Theme> themes = themeList != null ? themeList.getThemes() : null; if (themes == null || themes.size() == 0) { System.err.println("No themes for output mode: " + mode.getName()); return null; } for (Theme theme: themes) { Element t = createThemeElement(cr, collection, theme); if (t != null) { out.appendChild(t); } } return out; } /** * Creates a theme node art:theme that represents a curve in a chart or map. * * @param cr The ElementCreator used to create new elements. * @param collection The collection. * @param theme The theme whose attributes should be written to an element. * * @return an element that contains the informtion of the given theme. */ protected static Element createThemeElement( ElementCreator cr, Collection collection, Theme theme) { if (theme == null) { return null; } Element t = cr.create("theme"); cr.addAttr(t, "active", theme.isActive() ? "1" : "0", true); cr.addAttr(t, "artifact", theme.getArtifact(), true); cr.addAttr(t, "facet", theme.getFacet(), true); cr.addAttr(t, "pos", Integer.toString(theme.getPosition()), true); return t; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :