# HG changeset patch # User Ingo Weinzierl # Date 1301498348 0 # Node ID 4bb6bfaca393c9acc1aac9f446e8f1b97f692568 # Parent 41404961c804897811499d1107b9e5f746e67d7a The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output. artifacts/trunk@1627 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 41404961c804 -r 4bb6bfaca393 ChangeLog --- a/ChangeLog Wed Mar 30 14:45:15 2011 +0000 +++ b/ChangeLog Wed Mar 30 15:19:08 2011 +0000 @@ -1,3 +1,8 @@ +2011-03-30 Ingo Weinzierl + + * artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java: + The output nodes written to DESCRIBE document have facet nodes now. + 2011-03-30 Ingo Weinzierl * artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java, diff -r 41404961c804 -r 4bb6bfaca393 artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java --- a/artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java Wed Mar 30 14:45:15 2011 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java Wed Mar 30 15:19:08 2011 +0000 @@ -13,6 +13,7 @@ import de.intevation.artifacts.common.utils.XMLUtils; +import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifactdatabase.state.Output; import de.intevation.artifactdatabase.state.State; @@ -147,17 +148,60 @@ } + /** + * This method appends a node for each Output in the outputs list to + * out. Note: an output node includes its provided facets! + * + * @param creator The ElementCreator used to create new elements. + * @param out The parent node for new elements. + * @param outputs The list of reachable outputs. + */ public static void appendOutputModes( XMLUtils.ElementCreator creator, Element out, List outputs) { for (Output o: outputs) { - out.appendChild(createArtNode( + Element newOut = createArtNode( creator, "output", new String[] {"name", "description", "mime-type"}, - new String[] {o.getName(),o.getDescription(),o.getMimeType()})); + new String[] {o.getName(),o.getDescription(),o.getMimeType()}); + + Element facets = createArtNode(creator, "facets", null, null); + appendFacets(creator, facets, o.getFacets()); + + newOut.appendChild(facets); + out.appendChild(newOut); + } + } + + + /** + * This method appends a node for each Facet in the facets list to + * facet. + * + * @param creator The ElementCreator used to create new elements. + * @param facet The root node for new elements. + * @param facets The list of facets. + */ + public static void appendFacets( + XMLUtils.ElementCreator creator, + Element facet, + List facets) + { + if (facets == null || facets.size() == 0) { + return; + } + + for (Facet f: facets) { + Element newFacet = createArtNode( + creator, + "facet", + new String[] { "name", "description" }, + new String[] { f.getName(), f.getDescription() }); + + facet.appendChild(newFacet); } } }