rebuilding head
[mir.git] / source / mir / util / xml / XMLName.java
diff --git a/source/mir/util/xml/XMLName.java b/source/mir/util/xml/XMLName.java
new file mode 100755 (executable)
index 0000000..a9f6058
--- /dev/null
@@ -0,0 +1,88 @@
+package mir.util.xml;\r
+\r
+/**\r
+ * Class to encapsulate an XML-style name (either for tagnames,\r
+ * or attribute names).\r
+ *\r
+ * <p>\r
+ * Usage requirements:\r
+ * <ul>\r
+ *   <li> Namespace aware parsers must supply a local name\r
+ *        and a namespace URI\r
+ *   <li> Non-namespace aware parsers should supply a local name,\r
+ *        and, if present and applicable, also a prefix\r
+ * </ul>\r
+ */\r
+\r
+public class XMLName {\r
+  private String namespaceURI;\r
+  private String localName;\r
+  private String prefix;\r
+\r
+  public XMLName(String aLocalName) {\r
+    this(null, null, aLocalName);\r
+  }\r
+\r
+  public XMLName(String aNamespaceURI, String aPrefix, String aLocalName) {\r
+    localName="";\r
+    prefix="";\r
+    namespaceURI="";\r
+\r
+    if (aLocalName!=null)\r
+      localName = aLocalName;\r
+    if (aPrefix!=null)\r
+      prefix = aPrefix;\r
+    if (aNamespaceURI!=null)\r
+      namespaceURI = aNamespaceURI;\r
+  }\r
+\r
+  public XMLName(String aNamespaceURI, String aLocalName) {\r
+    this (aNamespaceURI, null, aLocalName);\r
+  }\r
+\r
+  /**\r
+   * Returns the namespace URI if available\r
+   */\r
+  public String getNamespaceURI() {\r
+    return namespaceURI;\r
+  }\r
+\r
+  /**\r
+   * Returns the name of the tag, stripped from prefix\r
+   */\r
+  public String getLocalName() {\r
+    return localName;\r
+  }\r
+\r
+  /**\r
+   * Returns the prefix of the tag, if present\r
+   */\r
+  public String getPrefix() {\r
+    return prefix;\r
+  }\r
+\r
+  public int hashCode() {\r
+    if (namespaceURI == null)\r
+      return localName.hashCode() + 3*prefix.hashCode();\r
+    else\r
+      return localName.hashCode() + 3*namespaceURI.hashCode();\r
+  }\r
+\r
+  public String toString() {\r
+    return ((namespaceURI.length()>0)? "["+namespaceURI+"]":"")+((prefix.length()>0)?prefix+":":"")+localName;\r
+  }\r
+\r
+  public boolean equals(Object anObject) {\r
+    if (anObject instanceof mir.util.xml.XMLName) {\r
+      if (namespaceURI==null)\r
+        return (((mir.util.xml.XMLName) anObject).namespaceURI == null) &&\r
+               prefix.equals(((mir.util.xml.XMLName) anObject).prefix) &&\r
+               localName.equals(((mir.util.xml.XMLName) anObject).localName);\r
+      else\r
+        return namespaceURI.equals(((mir.util.xml.XMLName) anObject).namespaceURI) &&\r
+               localName.equals(((mir.util.xml.XMLName) anObject).localName);\r
+    }\r
+    else\r
+      return false;\r
+  }\r
+}\r