1 17 18 package org.eclipse.emf.ecore.xml.type.internal; 19 20 import org.eclipse.emf.ecore.xml.type.InvalidDatatypeValueException; 21 import org.eclipse.emf.ecore.xml.type.internal.DataValue.XMLChar; 22 23 33 public final class QName 34 { 35 36 private String prefix; 37 38 private String localPart; 39 40 private String namespaceURI; 41 42 47 public QName (String qname) 48 { 49 String rawname = qname; 50 int index = rawname.indexOf(":"); 51 52 String prefix = ""; 53 String localName = rawname; 54 if (index != -1) 55 { 56 prefix = rawname.substring(0, index); 57 localName = rawname.substring(index + 1); 58 } 59 if (prefix.length() > 0 && !XMLChar.isValidNCName(prefix)) 61 throw new InvalidDatatypeValueException("cvc-datatype-valid.1.2.1: invalid QName: "+qname); 62 63 if(!XMLChar.isValidNCName(localName)) 64 throw new InvalidDatatypeValueException("cvc-datatype-valid.1.2.1: invalid QName: "+qname); 65 66 setPrefix(prefix); 67 setLocalPart(localName); 68 setNamespaceURI(null); 69 } 70 71 72 public QName(String namespaceURI, String localPart, String prefix) 73 { 74 setNamespaceURI(namespaceURI); 75 setPrefix(prefix); 76 setLocalPart(localPart); 77 if (this.prefix.length() > 0 && !XMLChar.isValidNCName(this.prefix)) 78 throw new InvalidDatatypeValueException("cvc-datatype-valid.1.2.1: invalid QName: "+prefix); 79 80 if(!XMLChar.isValidNCName(this.localPart)) 81 throw new InvalidDatatypeValueException("cvc-datatype-valid.1.2.1: invalid QName: "+localPart); 82 } 83 84 85 public boolean equals(Object object) 86 { 87 if (object instanceof QName) 88 { 89 QName qname = (QName)object; 90 return namespaceURI.equals(qname.getNamespaceURI()) && localPart.equals(qname.getLocalPart()); 91 } 92 return false; 93 } 94 95 public int hashCode() 96 { 97 return namespaceURI.hashCode() + localPart.hashCode(); 98 } 99 100 101 public String toString() 102 { 103 return (prefix.length() >0) ? prefix + ":" + localPart : localPart; 104 } 105 106 109 public String getLocalPart() 110 { 111 return localPart; 112 } 113 114 117 public void setLocalPart(String localpart) 118 { 119 if (localpart == null || localpart.length() == 0) 120 { 121 throw new IllegalArgumentException ("QName localPart must have value."); 122 } 123 this.localPart = localpart; 124 } 125 126 129 public String getNamespaceURI() 130 { 131 return namespaceURI; 132 } 133 134 137 public void setNamespaceURI(String namespaceUri) 138 { 139 if (namespaceUri == null) 140 { 141 this.namespaceURI = ""; 142 } 143 else 144 { 145 this.namespaceURI = namespaceUri; 146 } 147 148 } 149 150 153 public String getPrefix() 154 { 155 return prefix; 156 } 157 158 161 public void setPrefix(String prefix) 162 { 163 if (prefix == null) 164 { 165 this.prefix = ""; 166 } 167 else 168 { 169 this.prefix = prefix; 170 } 171 } 172 } 173 | Popular Tags |