ingo@100: /* ingo@100: * Copyright (c) 2010 by Intevation GmbH ingo@100: * ingo@100: * This program is free software under the LGPL (>=v2.1) ingo@100: * Read the file LGPL.txt coming with the software for details ingo@100: * or visit http://www.gnu.org/licenses/ if it does not exist. ingo@100: */ ingo@100: sascha@24: package de.intevation.artifacts; sascha@24: sascha@93: import java.util.Iterator; sascha@298: import java.util.Map; sascha@298: import java.util.HashMap; sascha@298: import java.util.ArrayList; sascha@93: sascha@24: import javax.xml.XMLConstants; sascha@24: sascha@24: import javax.xml.namespace.NamespaceContext; sascha@24: sascha@24: /** sascha@78: * The namespace used in artifact documents. sascha@77: * @author Sascha L. Teichmann sascha@24: */ sascha@24: public class ArtifactNamespaceContext sascha@24: implements NamespaceContext sascha@24: { sascha@24: /** sascha@24: * The URI of the namespace of the artifacts. sascha@24: */ sascha@94: public final static String NAMESPACE_URI = sascha@94: "http://www.intevation.de/2009/artifacts"; sascha@47: sascha@24: /** sascha@24: * The XML prefix for the artifacts namespace. sascha@24: */ sascha@24: public final static String NAMESPACE_PREFIX = "art"; sascha@24: sascha@78: /** sascha@78: * Final instance to be easily used to avoid creation sascha@78: * of instances. sascha@78: */ sascha@26: public static final ArtifactNamespaceContext INSTANCE = sascha@26: new ArtifactNamespaceContext(); sascha@26: sascha@298: protected Map map; sascha@298: sascha@78: /** sascha@78: * The default constructor. sascha@78: */ sascha@24: public ArtifactNamespaceContext() { sascha@298: map = new HashMap(); sascha@298: map.put( sascha@298: XMLConstants.XML_NS_PREFIX, XMLConstants.XML_NS_URI); sascha@298: map.put( sascha@298: XMLConstants.DEFAULT_NS_PREFIX, XMLConstants.DEFAULT_NS_PREFIX); sascha@298: map.put( sascha@298: XMLConstants.XMLNS_ATTRIBUTE, XMLConstants.XMLNS_ATTRIBUTE_NS_URI); sascha@298: map.put( sascha@298: NAMESPACE_PREFIX, NAMESPACE_URI); sascha@298: } sascha@298: sascha@298: public void add(String prefix, String uri) { sascha@298: map.put(prefix, uri); sascha@24: } sascha@24: sascha@78: /** sascha@78: * @see javax.xml.namespace.NamespaceContext#getNamespaceURI(String) sascha@78: * @param prefix The prefix sascha@78: * @return The corresponing URI sascha@78: */ sascha@301: @Override sascha@24: public String getNamespaceURI(String prefix) { sascha@24: sascha@24: if (prefix == null) { sascha@298: throw new IllegalArgumentException("Null prefix"); sascha@24: } sascha@24: sascha@298: String namespace = map.get(prefix); sascha@24: sascha@298: return namespace != null ? namespace : XMLConstants.NULL_NS_URI; sascha@24: } sascha@24: sascha@78: /** sascha@78: * @see javax.xml.namespace.NamespaceContext#getPrefix(String) sascha@78: * @param uri The URI sascha@78: */ sascha@301: @Override sascha@24: public String getPrefix(String uri) { sascha@394: sascha@298: if (uri == null) { sascha@298: throw new IllegalArgumentException("Null uri"); sascha@298: } sascha@298: sascha@298: for (Map.Entry entry: map.entrySet()) { sascha@298: if (entry.getValue().equals(uri)) { sascha@298: return entry.getKey(); sascha@298: } sascha@298: } sascha@298: sascha@298: return XMLConstants.DEFAULT_NS_PREFIX; sascha@24: } sascha@24: sascha@78: /** sascha@78: * @see javax.xml.namespace.NamespaceContext#getPrefixes(java.lang.String) sascha@78: * @param uri The URI sascha@78: */ sascha@301: @Override sascha@24: public Iterator getPrefixes(String uri) { sascha@298: ArrayList results = new ArrayList(); sascha@298: for (Map.Entry entry: map.entrySet()) { sascha@298: if (entry.getValue().equals(uri)) { sascha@298: results.add(entry.getKey()); sascha@298: } sascha@298: } sascha@298: return results.iterator(); sascha@24: } sascha@24: } sascha@78: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :