1 17 package org.eclipse.emf.ecore.xml.type.impl; 18 19 import java.math.BigDecimal ; 20 import java.math.BigInteger ; 21 import java.text.DateFormat ; 22 import java.text.FieldPosition ; 23 import java.text.ParseException ; 24 import java.text.SimpleDateFormat ; 25 import java.util.ArrayList ; 26 import java.util.Date ; 27 import java.util.Iterator ; 28 import java.util.List ; 29 import java.util.StringTokenizer ; 30 31 import org.eclipse.emf.ecore.EClass; 32 import org.eclipse.emf.ecore.EDataType; 33 import org.eclipse.emf.ecore.EObject; 34 import org.eclipse.emf.ecore.impl.EFactoryImpl; 35 import org.eclipse.emf.ecore.xml.type.*; 36 import org.eclipse.emf.ecore.xml.type.internal.QName; 37 import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar; 38 import org.eclipse.emf.ecore.xml.type.internal.XMLDuration; 39 import org.eclipse.emf.ecore.xml.type.internal.DataValue.Base64; 40 import org.eclipse.emf.ecore.xml.type.internal.DataValue.HexBin; 41 import org.eclipse.emf.ecore.xml.type.internal.DataValue.XMLChar; 42 43 49 public class XMLTypeFactoryImpl extends EFactoryImpl implements XMLTypeFactory 50 { 51 52 protected static final DateFormat [] EDATE_FORMATS = 53 { 54 new SafeSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"), 55 new SafeSimpleDateFormat("yyyy-MM-ddZ") 56 }; 57 58 64 public XMLTypeFactoryImpl() 65 { 66 super(); 67 } 68 69 74 public EObject create(EClass eClass) 75 { 76 switch (eClass.getClassifierID()) 77 { 78 case XMLTypePackage.ANY_TYPE: return createAnyType(); 79 case XMLTypePackage.SIMPLE_ANY_TYPE: return createSimpleAnyType(); 80 case XMLTypePackage.XML_TYPE_DOCUMENT_ROOT: return createXMLTypeDocumentRoot(); 81 default: 82 throw new IllegalArgumentException ("The class '" + eClass.getName() + "' is not a valid classifier"); 83 } 84 } 85 86 91 public Object createFromString(EDataType eDataType, String initialValue) 92 { 93 switch (eDataType.getClassifierID()) 94 { 95 case XMLTypePackage.ANY_SIMPLE_TYPE: 96 return createAnySimpleTypeFromString(eDataType, initialValue); 97 case XMLTypePackage.ANY_URI: 98 return createAnyURIFromString(eDataType, initialValue); 99 case XMLTypePackage.BASE64_BINARY: 100 return createBase64BinaryFromString(eDataType, initialValue); 101 case XMLTypePackage.BOOLEAN: 102 return createBooleanFromString(eDataType, initialValue); 103 case XMLTypePackage.BOOLEAN_OBJECT: 104 return createBooleanObjectFromString(eDataType, initialValue); 105 case XMLTypePackage.BYTE: 106 return createByteFromString(eDataType, initialValue); 107 case XMLTypePackage.BYTE_OBJECT: 108 return createByteObjectFromString(eDataType, initialValue); 109 case XMLTypePackage.DATE: 110 return createDateFromString(eDataType, initialValue); 111 case XMLTypePackage.DATE_TIME: 112 return createDateTimeFromString(eDataType, initialValue); 113 case XMLTypePackage.DECIMAL: 114 return createDecimalFromString(eDataType, initialValue); 115 case XMLTypePackage.DOUBLE: 116 return createDoubleFromString(eDataType, initialValue); 117 case XMLTypePackage.DOUBLE_OBJECT: 118 return createDoubleObjectFromString(eDataType, initialValue); 119 case XMLTypePackage.DURATION: 120 return createDurationFromString(eDataType, initialValue); 121 case XMLTypePackage.ENTITIES: 122 return createENTITIESFromString(eDataType, initialValue); 123 case XMLTypePackage.ENTITIES_BASE: 124 return createENTITIESBaseFromString(eDataType, initialValue); 125 case XMLTypePackage.ENTITY: 126 return createENTITYFromString(eDataType, initialValue); 127 case XMLTypePackage.FLOAT: 128 return createFloatFromString(eDataType, initialValue); 129 case XMLTypePackage.FLOAT_OBJECT: 130 return createFloatObjectFromString(eDataType, initialValue); 131 case XMLTypePackage.GDAY: 132 return createGDayFromString(eDataType, initialValue); 133 case XMLTypePackage.GMONTH: 134 return createGMonthFromString(eDataType, initialValue); 135 case XMLTypePackage.GMONTH_DAY: 136 return createGMonthDayFromString(eDataType, initialValue); 137 case XMLTypePackage.GYEAR: 138 return createGYearFromString(eDataType, initialValue); 139 case XMLTypePackage.GYEAR_MONTH: 140 return createGYearMonthFromString(eDataType, initialValue); 141 case XMLTypePackage.HEX_BINARY: 142 return createHexBinaryFromString(eDataType, initialValue); 143 case XMLTypePackage.ID: 144 return createIDFromString(eDataType, initialValue); 145 case XMLTypePackage.IDREF: 146 return createIDREFFromString(eDataType, initialValue); 147 case XMLTypePackage.IDREFS: 148 return createIDREFSFromString(eDataType, initialValue); 149 case XMLTypePackage.IDREFS_BASE: 150 return createIDREFSBaseFromString(eDataType, initialValue); 151 case XMLTypePackage.INT: 152 return createIntFromString(eDataType, initialValue); 153 case XMLTypePackage.INTEGER: 154 return createIntegerFromString(eDataType, initialValue); 155 case XMLTypePackage.INT_OBJECT: 156 return createIntObjectFromString(eDataType, initialValue); 157 case XMLTypePackage.LANGUAGE: 158 return createLanguageFromString(eDataType, initialValue); 159 case XMLTypePackage.LONG: 160 return createLongFromString(eDataType, initialValue); 161 case XMLTypePackage.LONG_OBJECT: 162 return createLongObjectFromString(eDataType, initialValue); 163 case XMLTypePackage.NAME: 164 return createNameFromString(eDataType, initialValue); 165 case XMLTypePackage.NC_NAME: 166 return createNCNameFromString(eDataType, initialValue); 167 case XMLTypePackage.NEGATIVE_INTEGER: 168 return createNegativeIntegerFromString(eDataType, initialValue); 169 case XMLTypePackage.NMTOKEN: 170 return createNMTOKENFromString(eDataType, initialValue); 171 case XMLTypePackage.NMTOKENS: 172 return createNMTOKENSFromString(eDataType, initialValue); 173 case XMLTypePackage.NMTOKENS_BASE: 174 return createNMTOKENSBaseFromString(eDataType, initialValue); 175 case XMLTypePackage.NON_NEGATIVE_INTEGER: 176 return createNonNegativeIntegerFromString(eDataType, initialValue); 177 case XMLTypePackage.NON_POSITIVE_INTEGER: 178 return createNonPositiveIntegerFromString(eDataType, initialValue); 179 case XMLTypePackage.NORMALIZED_STRING: 180 return createNormalizedStringFromString(eDataType, initialValue); 181 case XMLTypePackage.NOTATION: 182 return createNOTATIONFromString(eDataType, initialValue); 183 case XMLTypePackage.POSITIVE_INTEGER: 184 return createPositiveIntegerFromString(eDataType, initialValue); 185 case XMLTypePackage.QNAME: 186 return createQNameFromString(eDataType, initialValue); 187 case XMLTypePackage.SHORT: 188 return createShortFromString(eDataType, initialValue); 189 case XMLTypePackage.SHORT_OBJECT: 190 return createShortObjectFromString(eDataType, initialValue); 191 case XMLTypePackage.STRING: 192 return createStringFromString(eDataType, initialValue); 193 case XMLTypePackage.TIME: 194 return createTimeFromString(eDataType, initialValue); 195 case XMLTypePackage.TOKEN: 196 return createTokenFromString(eDataType, initialValue); 197 case XMLTypePackage.UNSIGNED_BYTE: 198 return createUnsignedByteFromString(eDataType, initialValue); 199 case XMLTypePackage.UNSIGNED_BYTE_OBJECT: 200 return createUnsignedByteObjectFromString(eDataType, initialValue); 201 case XMLTypePackage.UNSIGNED_INT: 202 return createUnsignedIntFromString(eDataType, initialValue); 203 case XMLTypePackage.UNSIGNED_INT_OBJECT: 204 return createUnsignedIntObjectFromString(eDataType, initialValue); 205 case XMLTypePackage.UNSIGNED_LONG: 206 return createUnsignedLongFromString(eDataType, initialValue); 207 case XMLTypePackage.UNSIGNED_SHORT: 208 return createUnsignedShortFromString(eDataType, initialValue); 209 case XMLTypePackage.UNSIGNED_SHORT_OBJECT: 210 return createUnsignedShortObjectFromString(eDataType, initialValue); 211 default: 212 throw new IllegalArgumentException ("The datatype '" + eDataType.getName() + "' is not a valid classifier"); 213 } 214 } 215 216 221 public String convertToString(EDataType eDataType, Object instanceValue) 222 { 223 switch (eDataType.getClassifierID()) 224 { 225 case XMLTypePackage.ANY_SIMPLE_TYPE: 226 return convertAnySimpleTypeToString(eDataType, instanceValue); 227 case XMLTypePackage.ANY_URI: 228 return convertAnyURIToString(eDataType, instanceValue); 229 case XMLTypePackage.BASE64_BINARY: 230 return convertBase64BinaryToString(eDataType, instanceValue); 231 case XMLTypePackage.BOOLEAN: 232 return convertBooleanToString(eDataType, instanceValue); 233 case XMLTypePackage.BOOLEAN_OBJECT: 234 return convertBooleanObjectToString(eDataType, instanceValue); 235 case XMLTypePackage.BYTE: 236 return convertByteToString(eDataType, instanceValue); 237 case XMLTypePackage.BYTE_OBJECT: 238 return convertByteObjectToString(eDataType, instanceValue); 239 case XMLTypePackage.DATE: 240 return convertDateToString(eDataType, instanceValue); 241 case XMLTypePackage.DATE_TIME: 242 return convertDateTimeToString(eDataType, instanceValue); 243 case XMLTypePackage.DECIMAL: 244 return convertDecimalToString(eDataType, instanceValue); 245 case XMLTypePackage.DOUBLE: 246 return convertDoubleToString(eDataType, instanceValue); 247 case XMLTypePackage.DOUBLE_OBJECT: 248 return convertDoubleObjectToString(eDataType, instanceValue); 249 case XMLTypePackage.DURATION: 250 return convertDurationToString(eDataType, instanceValue); 251 case XMLTypePackage.ENTITIES: 252 return convertENTITIESToString(eDataType, instanceValue); 253 case XMLTypePackage.ENTITIES_BASE: 254 return convertENTITIESBaseToString(eDataType, instanceValue); 255 case XMLTypePackage.ENTITY: 256 return convertENTITYToString(eDataType, instanceValue); 257 case XMLTypePackage.FLOAT: 258 return convertFloatToString(eDataType, instanceValue); 259 case XMLTypePackage.FLOAT_OBJECT: 260 return convertFloatObjectToString(eDataType, instanceValue); 261 case XMLTypePackage.GDAY: 262 return convertGDayToString(eDataType, instanceValue); 263 case XMLTypePackage.GMONTH: 264 return convertGMonthToString(eDataType, instanceValue); 265 case XMLTypePackage.GMONTH_DAY: 266 return convertGMonthDayToString(eDataType, instanceValue); 267 case XMLTypePackage.GYEAR: 268 return convertGYearToString(eDataType, instanceValue); 269 case XMLTypePackage.GYEAR_MONTH: 270 return convertGYearMonthToString(eDataType, instanceValue); 271 case XMLTypePackage.HEX_BINARY: 272 return convertHexBinaryToString(eDataType, instanceValue); 273 case XMLTypePackage.ID: 274 return convertIDToString(eDataType, instanceValue); 275 case XMLTypePackage.IDREF: 276 return convertIDREFToString(eDataType, instanceValue); 277 case XMLTypePackage.IDREFS: 278 return convertIDREFSToString(eDataType, instanceValue); 279 case XMLTypePackage.IDREFS_BASE: 280 return convertIDREFSBaseToString(eDataType, instanceValue); 281 case XMLTypePackage.INT: 282 return convertIntToString(eDataType, instanceValue); 283 case XMLTypePackage.INTEGER: 284 return convertIntegerToString(eDataType, instanceValue); 285 case XMLTypePackage.INT_OBJECT: 286 return convertIntObjectToString(eDataType, instanceValue); 287 case XMLTypePackage.LANGUAGE: 288 return convertLanguageToString(eDataType, instanceValue); 289 case XMLTypePackage.LONG: 290 return convertLongToString(eDataType, instanceValue); 291 case XMLTypePackage.LONG_OBJECT: 292 return convertLongObjectToString(eDataType, instanceValue); 293 case XMLTypePackage.NAME: 294 return convertNameToString(eDataType, instanceValue); 295 case XMLTypePackage.NC_NAME: 296 return convertNCNameToString(eDataType, instanceValue); 297 case XMLTypePackage.NEGATIVE_INTEGER: 298 return convertNegativeIntegerToString(eDataType, instanceValue); 299 case XMLTypePackage.NMTOKEN: 300 return convertNMTOKENToString(eDataType, instanceValue); 301 case XMLTypePackage.NMTOKENS: 302 return convertNMTOKENSToString(eDataType, instanceValue); 303 case XMLTypePackage.NMTOKENS_BASE: 304 return convertNMTOKENSBaseToString(eDataType, instanceValue); 305 case XMLTypePackage.NON_NEGATIVE_INTEGER: 306 return convertNonNegativeIntegerToString(eDataType, instanceValue); 307 case XMLTypePackage.NON_POSITIVE_INTEGER: 308 return convertNonPositiveIntegerToString(eDataType, instanceValue); 309 case XMLTypePackage.NORMALIZED_STRING: 310 return convertNormalizedStringToString(eDataType, instanceValue); 311 case XMLTypePackage.NOTATION: 312 return convertNOTATIONToString(eDataType, instanceValue); 313 case XMLTypePackage.POSITIVE_INTEGER: 314 return convertPositiveIntegerToString(eDataType, instanceValue); 315 case XMLTypePackage.QNAME: 316 return convertQNameToString(eDataType, instanceValue); 317 case XMLTypePackage.SHORT: 318 return convertShortToString(eDataType, instanceValue); 319 case XMLTypePackage.SHORT_OBJECT: 320 return convertShortObjectToString(eDataType, instanceValue); 321 case XMLTypePackage.STRING: 322 return convertStringToString(eDataType, instanceValue); 323 case XMLTypePackage.TIME: 324 return convertTimeToString(eDataType, instanceValue); 325 case XMLTypePackage.TOKEN: 326 return convertTokenToString(eDataType, instanceValue); 327 case XMLTypePackage.UNSIGNED_BYTE: 328 return convertUnsignedByteToString(eDataType, instanceValue); 329 case XMLTypePackage.UNSIGNED_BYTE_OBJECT: 330 return convertUnsignedByteObjectToString(eDataType, instanceValue); 331 case XMLTypePackage.UNSIGNED_INT: 332 return convertUnsignedIntToString(eDataType, instanceValue); 333 case XMLTypePackage.UNSIGNED_INT_OBJECT: 334 return convertUnsignedIntObjectToString(eDataType, instanceValue); 335 case XMLTypePackage.UNSIGNED_LONG: 336 return convertUnsignedLongToString(eDataType, instanceValue); 337 case XMLTypePackage.UNSIGNED_SHORT: 338 return convertUnsignedShortToString(eDataType, instanceValue); 339 case XMLTypePackage.UNSIGNED_SHORT_OBJECT: 340 return convertUnsignedShortObjectToString(eDataType, instanceValue); 341 default: 342 throw new IllegalArgumentException ("The datatype '" + eDataType.getName() + "' is not a valid classifier"); 343 } 344 } 345 346 351 public AnyType createAnyType() 352 { 353 AnyTypeImpl anyType = new AnyTypeImpl(); 354 return anyType; 355 } 356 357 362 public SimpleAnyType createSimpleAnyType() 363 { 364 SimpleAnyTypeImpl simpleAnyType = new SimpleAnyTypeImpl(); 365 return simpleAnyType; 366 } 367 368 373 public XMLTypeDocumentRoot createXMLTypeDocumentRoot() 374 { 375 XMLTypeDocumentRootImpl xmlTypeDocumentRoot = new XMLTypeDocumentRootImpl(); 376 return xmlTypeDocumentRoot; 377 } 378 379 384 public Object createAnySimpleTypeFromString(EDataType eDataType, String initialValue) 385 { 386 return initialValue; 387 } 388 389 394 public String convertAnySimpleTypeToString(EDataType eDataType, Object instanceValue) 395 { 396 return instanceValue == null ? null : instanceValue.toString(); 397 } 398 399 404 public String createAnyURIFromString(EDataType eDataType, String initialValue) 405 { 406 411 428 return initialValue; 429 } 430 431 436 public String convertAnyURIToString(EDataType eDataType, Object instanceValue) 437 { 438 return (String )instanceValue; 439 } 440 441 446 public byte[] createBase64BinaryFromString(EDataType eDataType, String initialValue) 447 { 448 if (initialValue == null) return null; 449 byte[] value = Base64.decode(collapseWhiteSpace(initialValue)); 450 if (value == null) 451 { 452 throw new InvalidDatatypeValueException("Invalid base64Binary value: '"+initialValue+"'"); 453 } 454 return value; 455 } 456 457 462 public String convertBase64BinaryToString(EDataType eDataType, Object instanceValue) 463 { 464 return instanceValue == null ? null : Base64.encode((byte[])instanceValue); 465 } 466 467 472 public Boolean createBooleanFromString(EDataType eDataType, String initialValue) 473 { 474 return initialValue == null ? null : booleanValueOf(initialValue); 475 } 476 477 482 public String convertBooleanToString(EDataType eDataType, Object instanceValue) 483 { 484 return instanceValue == null ? null : instanceValue.toString(); 485 } 486 487 492 public Boolean createBooleanObjectFromString(EDataType eDataType, String initialValue) 493 { 494 return initialValue == null ? null : booleanValueOf(initialValue); 495 } 496 497 502 public String convertBooleanObjectToString(EDataType eDataType, Object instanceValue) 503 { 504 return instanceValue == null ? null : instanceValue.toString(); 505 } 506 507 512 public BigDecimal createDecimalFromString(EDataType eDataType, String initialValue) 513 { 514 return initialValue == null ? null : new BigDecimal (collapseWhiteSpace(initialValue)); 515 } 516 517 522 public String convertDecimalToString(EDataType eDataType, Object instanceValue) 523 { 524 return instanceValue == null ? null : instanceValue.toString(); 525 } 526 527 532 public BigInteger createIntegerFromString(EDataType eDataType, String initialValue) 533 { 534 return initialValue == null ? null : new BigInteger (collapseWhiteSpace(initialValue)); 535 } 536 537 542 public String convertIntegerToString(EDataType eDataType, Object instanceValue) 543 { 544 return instanceValue == null ? null : instanceValue.toString(); 545 } 546 547 552 public Integer createIntObjectFromString(EDataType eDataType, String initialValue) 553 { 554 return initialValue == null ? null : Integer.valueOf(collapseWhiteSpace(initialValue)); 555 } 556 557 562 public String convertIntObjectToString(EDataType eDataType, Object instanceValue) 563 { 564 return instanceValue == null ? null : instanceValue.toString(); 565 } 566 567 572 public Long createLongFromString(EDataType eDataType, String initialValue) 573 { 574 return initialValue == null ? null : Long.valueOf(collapseWhiteSpace(initialValue)); 575 } 576 577 582 public String convertLongToString(EDataType eDataType, Object instanceValue) 583 { 584 return instanceValue == null ? null : instanceValue.toString(); 585 } 586 587 592 public Long createLongObjectFromString(EDataType eDataType, String initialValue) 593 { 594 return initialValue == null ? null : Long.valueOf(collapseWhiteSpace(initialValue)); 595 } 596 597 602 public String convertLongObjectToString(EDataType eDataType, Object instanceValue) 603 { 604 return instanceValue == null ? null : instanceValue.toString(); 605 } 606 607 612 public Integer createIntFromString(EDataType eDataType, String initialValue) 613 { 614 return initialValue == null ? null : Integer.valueOf(collapseWhiteSpace(initialValue)); 615 } 616 617 622 public String convertIntToString(EDataType eDataType, Object instanceValue) 623 { 624 return instanceValue == null ? null : instanceValue.toString(); 625 } 626 627 632 public Short createShortFromString(EDataType eDataType, String initialValue) 633 { 634 return initialValue == null ? null : Short.valueOf(collapseWhiteSpace(initialValue)); 635 } 636 637 642 public String convertShortToString(EDataType eDataType, Object instanceValue) 643 { 644 return instanceValue == null ? null : instanceValue.toString(); 645 } 646 647 652 public Short createShortObjectFromString(EDataType eDataType, String initialValue) 653 { 654 return initialValue == null ? null : Short.valueOf(collapseWhiteSpace(initialValue)); 655 } 656 657 662 public String convertShortObjectToString(EDataType eDataType, Object instanceValue) 663 { 664 return instanceValue == null ? null : instanceValue.toString(); 665 } 666 667 672 public Byte createByteFromString(EDataType eDataType, String initialValue) 673 { 674 return initialValue == null ? null : Byte.valueOf(collapseWhiteSpace(initialValue)); 675 } 676 677 682 public String convertByteToString(EDataType eDataType, Object instanceValue) 683 { 684 return instanceValue == null ? null : instanceValue.toString(); 685 } 686 687 692 public Byte createByteObjectFromString(EDataType eDataType, String initialValue) 693 { 694 return initialValue == null ? null : Byte.valueOf(collapseWhiteSpace(initialValue)); 695 } 696 697 702 public String convertByteObjectToString(EDataType eDataType, Object instanceValue) 703 { 704 return instanceValue == null ? null : instanceValue.toString(); 705 } 706 707 712 public Object createDateFromString(EDataType eDataType, String initialValue) 713 { 714 return initialValue == null ? null : new XMLCalendar(collapseWhiteSpace(initialValue), XMLCalendar.DATE); 715 716 } 717 718 723 public String convertDateToString(EDataType eDataType, Object instanceValue) 724 { 725 if (instanceValue == null) 726 { 727 return null; 728 } 729 if (instanceValue instanceof Date ) 730 { 731 return EDATE_FORMATS[1].format((Date )instanceValue); 732 } 733 return instanceValue.toString(); 734 } 735 736 741 public Object createDateTimeFromString(EDataType eDataType, String initialValue) 742 { 743 return initialValue == null ? null : new XMLCalendar(collapseWhiteSpace(initialValue), XMLCalendar.DATETIME); 744 } 745 746 751 public String convertDateTimeToString(EDataType eDataType, Object instanceValue) 752 { 753 if (instanceValue == null) 754 { 755 return null; 756 } 757 if (instanceValue instanceof Date ) 758 { 759 return EDATE_FORMATS[0].format((Date )instanceValue); 760 } 761 return instanceValue.toString(); 762 } 763 764 769 public String createStringFromString(EDataType eDataType, String initialValue) 770 { 771 return initialValue; 772 } 773 774 779 public String convertStringToString(EDataType eDataType, Object instanceValue) 780 { 781 return (String )instanceValue; 782 } 783 784 789 public Double createDoubleFromString(EDataType eDataType, String initialValue) 790 { 791 return initialValue == null ? null : Double.valueOf(collapseWhiteSpace(initialValue)); 792 } 793 794 799 public String convertDoubleToString(EDataType eDataType, Object instanceValue) 800 { 801 return instanceValue == null ? null : instanceValue.toString(); 802 } 803 804 809 public Double createDoubleObjectFromString(EDataType eDataType, String initialValue) 810 { 811 return initialValue == null ? null : Double.valueOf(collapseWhiteSpace(initialValue)); 812 } 813 814 819 public String convertDoubleObjectToString(EDataType eDataType, Object instanceValue) 820 { 821 return instanceValue == null ? null : instanceValue.toString(); 822 } 823 824 829 public Object createDurationFromString(EDataType eDataType, String initialValue) 830 { 831 return initialValue == null ? null : new XMLDuration(collapseWhiteSpace(initialValue)); 832 } 833 834 839 public String convertDurationToString(EDataType eDataType, Object instanceValue) 840 { 841 return instanceValue == null ? null : instanceValue.toString(); 842 } 843 844 849 public List createENTITIESBaseFromString(EDataType eDataType, String initialValue) 850 { 851 if (initialValue == null) return null; 852 List result = new ArrayList (); 853 for (StringTokenizer stringTokenizer = new StringTokenizer (initialValue); stringTokenizer.hasMoreTokens(); ) 854 { 855 String item = stringTokenizer.nextToken(); 856 result.add(XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getENTITY(), item)); 857 } 858 return result; 859 } 860 861 866 public String convertENTITIESBaseToString(EDataType eDataType, Object instanceValue) 867 { 868 if (instanceValue == null) return null; 869 List list = (List )instanceValue; 870 if (list.isEmpty()) return ""; 871 StringBuffer result = new StringBuffer (); 872 for (Iterator i = list.iterator(); i.hasNext(); ) 873 { 874 result.append(XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getENTITY(), i.next())); 875 result.append(' '); 876 } 877 return result.substring(0, result.length() - 1); 878 } 879 880 885 public String createNormalizedStringFromString(EDataType eDataType, String initialValue) 886 { 887 return replaceWhiteSpace(initialValue); 888 } 889 890 895 public String convertNormalizedStringToString(EDataType eDataType, Object instanceValue) 896 { 897 return (String )instanceValue; 898 } 899 900 905 public String createTokenFromString(EDataType eDataType, String initialValue) 906 { 907 return collapseWhiteSpace(initialValue); 908 } 909 910 915 public String convertTokenToString(EDataType eDataType, Object instanceValue) 916 { 917 return (String )instanceValue; 918 } 919 920 925 public String createNameFromString(EDataType eDataType, String initialValue) 926 { 927 return initialValue; 929 } 930 931 936 public String convertNameToString(EDataType eDataType, Object instanceValue) 937 { 938 return (String )instanceValue; 939 } 940 941 946 public String createNCNameFromString(EDataType eDataType, String initialValue) 947 { 948 return initialValue; 950 } 951 952 957 public String convertNCNameToString(EDataType eDataType, Object instanceValue) 958 { 959 return (String )instanceValue; 960 } 961 962 967 public String createENTITYFromString(EDataType eDataType, String initialValue) 968 { 969 return (String )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getNCName(), initialValue); 970 } 971 972 977 public String convertENTITYToString(EDataType eDataType, Object instanceValue) 978 { 979 return (String )instanceValue; 980 } 981 982 987 public List createENTITIESFromString(EDataType eDataType, String initialValue) 988 { 989 return (List )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getENTITIESBase(), initialValue); 990 } 991 992 997 public String convertENTITIESToString(EDataType eDataType, Object instanceValue) 998 { 999 return XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getENTITIESBase(), instanceValue); 1000 } 1001 1002 1007 public Float createFloatFromString(EDataType eDataType, String initialValue) 1008 { 1009 return initialValue == null ? null : Float.valueOf(collapseWhiteSpace(initialValue)); 1010 } 1011 1012 1017 public String convertFloatToString(EDataType eDataType, Object instanceValue) 1018 { 1019 return instanceValue == null ? null : instanceValue.toString(); 1020 } 1021 1022 1027 public Float createFloatObjectFromString(EDataType eDataType, String initialValue) 1028 { 1029 return initialValue == null ? null : Float.valueOf(collapseWhiteSpace(initialValue)); 1030 } 1031 1032 1037 public String convertFloatObjectToString(EDataType eDataType, Object instanceValue) 1038 { 1039 return instanceValue == null ? null : instanceValue.toString(); 1040 } 1041 1042 1047 public Object createGDayFromString(EDataType eDataType, String initialValue) 1048 { 1049 return initialValue == null ? null : new XMLCalendar(collapseWhiteSpace(initialValue), XMLCalendar.GDAY); 1050 1051 } 1052 1053 1058 public String convertGDayToString(EDataType eDataType, Object instanceValue) 1059 { 1060 return instanceValue == null ? null : instanceValue.toString(); 1061 } 1062 1063 1068 public Object createGMonthFromString(EDataType eDataType, String initialValue) 1069 { 1070 return initialValue == null ? null : new XMLCalendar(collapseWhiteSpace(initialValue), XMLCalendar.GMONTH); 1071} 1072 1073 1078 public String convertGMonthToString(EDataType eDataType, Object instanceValue) 1079 { 1080 return instanceValue == null ? null : instanceValue.toString(); 1081 } 1082 1083 1088 public Object createGMonthDayFromString(EDataType eDataType, String initialValue) 1089 { 1090 return initialValue == null ? null : new XMLCalendar(collapseWhiteSpace(initialValue), XMLCalendar.GMONTHDAY); 1091 } 1092 1093 1098 public String convertGMonthDayToString(EDataType eDataType, Object instanceValue) 1099 { 1100 return instanceValue == null ? null : instanceValue.toString(); 1101 } 1102 1103 1108 public Object createGYearFromString(EDataType eDataType, String initialValue) 1109 { 1110 return initialValue == null ? null : new XMLCalendar(collapseWhiteSpace(initialValue), XMLCalendar.GYEAR); 1111} 1112 1113 1118 public String convertGYearToString(EDataType eDataType, Object instanceValue) 1119 { 1120 return instanceValue == null ? null : instanceValue.toString(); 1121 } 1122 1123 1128 public Object createGYearMonthFromString(EDataType eDataType, String initialValue) 1129 { 1130 return initialValue == null ? null : new XMLCalendar(collapseWhiteSpace(initialValue), XMLCalendar.GYEARMONTH); 1131} 1132 1133 1138 public String convertGYearMonthToString(EDataType eDataType, Object instanceValue) 1139 { 1140 return instanceValue == null ? null : instanceValue.toString(); 1141 } 1142 1143 1148 public byte[] createHexBinaryFromString(EDataType eDataType, String initialValue) 1149 { 1150 if (initialValue == null) return null; 1151 byte[] value = HexBin.decode(collapseWhiteSpace(initialValue)); 1152 if (value == null) 1153 { 1154 throw new InvalidDatatypeValueException("Invalid hexBinary value: '"+initialValue+"'"); 1155 } 1156 return value; 1157 } 1158 1159 1164 public String convertHexBinaryToString(EDataType eDataType, Object instanceValue) 1165 { 1166 return instanceValue == null ? null : HexBin.encode((byte[])instanceValue); 1167 } 1168 1169 1174 public String createIDFromString(EDataType eDataType, String initialValue) 1175 { 1176 return (String )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getNCName(), initialValue); 1177 } 1178 1179 1184 public String convertIDToString(EDataType eDataType, Object instanceValue) 1185 { 1186 return (String )instanceValue; 1187 } 1188 1189 1194 public String createIDREFFromString(EDataType eDataType, String initialValue) 1195 { 1196 return (String )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getNCName(), initialValue); 1197 } 1198 1199 1204 public String convertIDREFToString(EDataType eDataType, Object instanceValue) 1205 { 1206 return (String )instanceValue; 1207 } 1208 1209 1214 public List createIDREFSBaseFromString(EDataType eDataType, String initialValue) 1215 { 1216 if (initialValue == null) return null; 1217 List result = new ArrayList (); 1218 for (StringTokenizer stringTokenizer = new StringTokenizer (initialValue); stringTokenizer.hasMoreTokens(); ) 1219 { 1220 String item = stringTokenizer.nextToken(); 1221 result.add(XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getIDREF(), item)); 1222 } 1223 return result; 1224 } 1225 1226 1231 public String convertIDREFSBaseToString(EDataType eDataType, Object instanceValue) 1232 { 1233 if (instanceValue == null) return null; 1234 List list = (List )instanceValue; 1235 if (list.isEmpty()) return ""; 1236 StringBuffer result = new StringBuffer (); 1237 for (Iterator i = list.iterator(); i.hasNext(); ) 1238 { 1239 result.append(XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getIDREF(), i.next())); 1240 result.append(' '); 1241 } 1242 return result.substring(0, result.length() - 1); 1243 } 1244 1245 1250 public List createIDREFSFromString(EDataType eDataType, String initialValue) 1251 { 1252 return (List )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getIDREFSBase(), initialValue); 1253 } 1254 1255 1260 public String convertIDREFSToString(EDataType eDataType, Object instanceValue) 1261 { 1262 return XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getIDREFSBase(), instanceValue); 1263 } 1264 1265 1270 public String createLanguageFromString(EDataType eDataType, String initialValue) 1271 { 1272 return collapseWhiteSpace(initialValue); 1273 } 1274 1275 1280 public String convertLanguageToString(EDataType eDataType, Object instanceValue) 1281 { 1282 return (String )instanceValue; 1283 } 1284 1285 1290 public BigInteger createNonPositiveIntegerFromString(EDataType eDataType, String initialValue) 1291 { 1292 return initialValue == null ? null : new BigInteger (collapseWhiteSpace(initialValue)); 1293 } 1294 1295 1300 public String convertNonPositiveIntegerToString(EDataType eDataType, Object instanceValue) 1301 { 1302 return instanceValue == null ? null : instanceValue.toString(); 1303 } 1304 1305 1310 public BigInteger createNegativeIntegerFromString(EDataType eDataType, String initialValue) 1311 { 1312 return (BigInteger )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getNonPositiveInteger(), initialValue); 1313 } 1314 1315 1320 public String convertNegativeIntegerToString(EDataType eDataType, Object instanceValue) 1321 { 1322 return XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getNonPositiveInteger(), instanceValue); 1323 } 1324 1325 1330 public String createNMTOKENFromString(EDataType eDataType, String initialValue) 1331 { 1332 if (initialValue == null) return null; 1333 if (!XMLChar.isValidNmtoken(initialValue)) 1334 { 1335 throw new InvalidDatatypeValueException("Invalid NMTOKEN value: '" + initialValue + "'"); 1336 } 1337 return initialValue; 1338 } 1339 1340 1345 public String convertNMTOKENToString(EDataType eDataType, Object instanceValue) 1346 { 1347 return (String )instanceValue; 1348 } 1349 1350 1355 public List createNMTOKENSBaseFromString(EDataType eDataType, String initialValue) 1356 { 1357 if (initialValue == null) return null; 1358 List result = new ArrayList (); 1359 for (StringTokenizer stringTokenizer = new StringTokenizer (initialValue); stringTokenizer.hasMoreTokens(); ) 1360 { 1361 String item = stringTokenizer.nextToken(); 1362 result.add(XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getNMTOKEN(), item)); 1363 } 1364 return result; 1365 } 1366 1367 1372 public String convertNMTOKENSBaseToString(EDataType eDataType, Object instanceValue) 1373 { 1374 if (instanceValue == null) return null; 1375 List list = (List )instanceValue; 1376 if (list.isEmpty()) return ""; 1377 StringBuffer result = new StringBuffer (); 1378 for (Iterator i = list.iterator(); i.hasNext(); ) 1379 { 1380 result.append(XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getNMTOKEN(), i.next())); 1381 result.append(' '); 1382 } 1383 return result.substring(0, result.length() - 1); 1384 } 1385 1386 1391 public List createNMTOKENSFromString(EDataType eDataType, String initialValue) 1392 { 1393 return (List )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getNMTOKENSBase(), initialValue); 1394 } 1395 1396 1401 public String convertNMTOKENSToString(EDataType eDataType, Object instanceValue) 1402 { 1403 return XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getNMTOKENSBase(), instanceValue); 1404 } 1405 1406 1411 public BigInteger createNonNegativeIntegerFromString(EDataType eDataType, String initialValue) 1412 { 1413 return initialValue == null ? null : new BigInteger (collapseWhiteSpace(initialValue)); 1414 } 1415 1416 1421 public String convertNonNegativeIntegerToString(EDataType eDataType, Object instanceValue) 1422 { 1423 return instanceValue == null ? null : instanceValue.toString(); 1424 } 1425 1426 1431 public Object createNOTATIONFromString(EDataType eDataType, String initialValue) 1432 { 1433 return initialValue == null ? null : new QName(collapseWhiteSpace(initialValue)); 1434 } 1435 1436 1441 public String convertNOTATIONToString(EDataType eDataType, Object instanceValue) 1442 { 1443 return instanceValue == null ? null : instanceValue.toString(); 1444 } 1445 1446 1451 public BigInteger createPositiveIntegerFromString(EDataType eDataType, String initialValue) 1452 { 1453 return (BigInteger )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getNonNegativeInteger(), initialValue); 1454 } 1455 1456 1461 public String convertPositiveIntegerToString(EDataType eDataType, Object instanceValue) 1462 { 1463 return XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getNonNegativeInteger(), instanceValue); 1464 } 1465 1466 1471 public Object createQNameFromString(EDataType eDataType, String initialValue) 1472 { 1473 return initialValue == null ? null : new QName(collapseWhiteSpace(initialValue)); 1474 } 1475 1476 1481 public String convertQNameToString(EDataType eDataType, Object instanceValue) 1482 { 1483 return instanceValue == null ? null : instanceValue.toString(); 1484 } 1485 1486 1491 public Object createTimeFromString(EDataType eDataType, String initialValue) 1492 { 1493 return initialValue == null ? null : new XMLCalendar(collapseWhiteSpace(initialValue), XMLCalendar.TIME); 1494} 1495 1496 1501 public String convertTimeToString(EDataType eDataType, Object instanceValue) 1502 { 1503 return instanceValue == null ? null : instanceValue.toString(); 1504 } 1505 1506 1511 public BigInteger createUnsignedLongFromString(EDataType eDataType, String initialValue) 1512 { 1513 return (BigInteger )XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getNonNegativeInteger(), initialValue); 1514 } 1515 1516 1521 public String convertUnsignedLongToString(EDataType eDataType, Object instanceValue) 1522 { 1523 return XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getNonNegativeInteger(), instanceValue); 1524 } 1525 1526 1531 public Long createUnsignedIntFromString(EDataType eDataType, String initialValue) 1532 { 1533 return initialValue == null ? null : Long.valueOf(collapseWhiteSpace(initialValue)); 1534 } 1535 1536 1541 public String convertUnsignedIntToString(EDataType eDataType, Object instanceValue) 1542 { 1543 return instanceValue == null ? null : instanceValue.toString(); 1544 } 1545 1546 1551 public Long createUnsignedIntObjectFromString(EDataType eDataType, String initialValue) 1552 { 1553 return initialValue == null ? null : Long.valueOf(collapseWhiteSpace(initialValue)); 1554 } 1555 1556 1561 public String convertUnsignedIntObjectToString(EDataType eDataType, Object instanceValue) 1562 { 1563 return instanceValue == null ? null : instanceValue.toString(); 1564 } 1565 1566 1571 public Integer createUnsignedShortFromString(EDataType eDataType, String initialValue) 1572 { 1573 return initialValue == null ? null : Integer.valueOf(collapseWhiteSpace(initialValue)); 1574 } 1575 1576 1581 public String convertUnsignedShortToString(EDataType eDataType, Object instanceValue) 1582 { 1583 return instanceValue == null ? null : instanceValue.toString(); 1584 } 1585 1586 1591 public Integer createUnsignedShortObjectFromString(EDataType eDataType, String initialValue) 1592 { 1593 return initialValue == null ? null : Integer.valueOf(collapseWhiteSpace(initialValue)); 1594 } 1595 1596 1601 public String convertUnsignedShortObjectToString(EDataType eDataType, Object instanceValue) 1602 { 1603 return instanceValue == null ? null : instanceValue.toString(); 1604 } 1605 1606 1611 public Short createUnsignedByteFromString(EDataType eDataType, String initialValue) 1612 { 1613 return initialValue == null ? null : new Short (initialValue); 1614 } 1615 1616 1621 public String convertUnsignedByteToString(EDataType eDataType, Object instanceValue) 1622 { 1623 return instanceValue == null ? null : instanceValue.toString(); 1624 } 1625 1626 1631 public Short createUnsignedByteObjectFromString(EDataType eDataType, String initialValue) 1632 { 1633 return initialValue == null ? null : new Short (initialValue); 1634 } 1635 1636 1641 public String convertUnsignedByteObjectToString(EDataType eDataType, Object instanceValue) 1642 { 1643 return instanceValue == null ? null : instanceValue.toString(); 1644 } 1645 1646 1651 public XMLTypePackage getXMLTypePackage() 1652 { 1653 return (XMLTypePackage)getEPackage(); 1654 } 1655 1656 1662 public static XMLTypePackage getPackage() 1663 { 1664 return XMLTypePackage.eINSTANCE; 1665 } 1666 1667 protected Boolean booleanValueOf(String initialValue) 1668 { 1669 initialValue = collapseWhiteSpace(initialValue); 1670 if ("true".equals(initialValue) || "1".equals(initialValue)) 1671 { 1672 return Boolean.TRUE; 1673 } 1674 else if ("false".equals(initialValue) || "0".equals(initialValue)) 1675 { 1676 return Boolean.FALSE; 1677 } 1678 throw new InvalidDatatypeValueException("Invalid boolean value: '" + initialValue + "'"); 1679 } 1680 1681 private static class SafeSimpleDateFormat extends SimpleDateFormat 1682 { 1683 public SafeSimpleDateFormat(String pattern) 1684 { 1685 super(pattern); 1686 } 1687 1688 public synchronized Date parse(String source) throws ParseException 1689 { 1690 return super.parse(source); 1691 } 1692 1693 public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos) 1694 { 1695 StringBuffer result = super.format(date, toAppendTo, pos); 1696 result.insert(result.length() - 2, ":"); 1697 return result; 1698 } 1699 } 1700 1701} | Popular Tags |