a9f605827b48f5e01b3dd14c1d47f7888fc3eff7
[mir.git] / source / mir / util / xml / XMLName.java
1 package mir.util.xml;\r
2 \r
3 /**\r
4  * Class to encapsulate an XML-style name (either for tagnames,\r
5  * or attribute names).\r
6  *\r
7  * <p>\r
8  * Usage requirements:\r
9  * <ul>\r
10  *   <li> Namespace aware parsers must supply a local name\r
11  *        and a namespace URI\r
12  *   <li> Non-namespace aware parsers should supply a local name,\r
13  *        and, if present and applicable, also a prefix\r
14  * </ul>\r
15  */\r
16 \r
17 public class XMLName {\r
18   private String namespaceURI;\r
19   private String localName;\r
20   private String prefix;\r
21 \r
22   public XMLName(String aLocalName) {\r
23     this(null, null, aLocalName);\r
24   }\r
25 \r
26   public XMLName(String aNamespaceURI, String aPrefix, String aLocalName) {\r
27     localName="";\r
28     prefix="";\r
29     namespaceURI="";\r
30 \r
31     if (aLocalName!=null)\r
32       localName = aLocalName;\r
33     if (aPrefix!=null)\r
34       prefix = aPrefix;\r
35     if (aNamespaceURI!=null)\r
36       namespaceURI = aNamespaceURI;\r
37   }\r
38 \r
39   public XMLName(String aNamespaceURI, String aLocalName) {\r
40     this (aNamespaceURI, null, aLocalName);\r
41   }\r
42 \r
43   /**\r
44    * Returns the namespace URI if available\r
45    */\r
46   public String getNamespaceURI() {\r
47     return namespaceURI;\r
48   }\r
49 \r
50   /**\r
51    * Returns the name of the tag, stripped from prefix\r
52    */\r
53   public String getLocalName() {\r
54     return localName;\r
55   }\r
56 \r
57   /**\r
58    * Returns the prefix of the tag, if present\r
59    */\r
60   public String getPrefix() {\r
61     return prefix;\r
62   }\r
63 \r
64   public int hashCode() {\r
65     if (namespaceURI == null)\r
66       return localName.hashCode() + 3*prefix.hashCode();\r
67     else\r
68       return localName.hashCode() + 3*namespaceURI.hashCode();\r
69   }\r
70 \r
71   public String toString() {\r
72     return ((namespaceURI.length()>0)? "["+namespaceURI+"]":"")+((prefix.length()>0)?prefix+":":"")+localName;\r
73   }\r
74 \r
75   public boolean equals(Object anObject) {\r
76     if (anObject instanceof mir.util.xml.XMLName) {\r
77       if (namespaceURI==null)\r
78         return (((mir.util.xml.XMLName) anObject).namespaceURI == null) &&\r
79                prefix.equals(((mir.util.xml.XMLName) anObject).prefix) &&\r
80                localName.equals(((mir.util.xml.XMLName) anObject).localName);\r
81       else\r
82         return namespaceURI.equals(((mir.util.xml.XMLName) anObject).namespaceURI) &&\r
83                localName.equals(((mir.util.xml.XMLName) anObject).localName);\r
84     }\r
85     else\r
86       return false;\r
87   }\r
88 }\r