Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.thaiopensource.datatype.xsd;
  
  
  
 
 public class DatatypeLibraryImpl implements DatatypeLibrary {
   private final Hashtable typeTable = new Hashtable();
   private final RegexEngine regexEngine;
 
   static private final String LONG_MAX = "9223372036854775807";
   static private final String LONG_MIN = "-9223372036854775808";
   static private final String INT_MAX = "2147483647";
   static private final String INT_MIN = "-2147483648";
   static private final String SHORT_MAX = "32767";
   static private final String SHORT_MIN = "-32768";
   static private final String BYTE_MAX = "127";
   static private final String BYTE_MIN = "-128";
 
   static private final String UNSIGNED_LONG_MAX = "18446744073709551615";
   static private final String UNSIGNED_INT_MAX = "4294967295";
   static private final String UNSIGNED_SHORT_MAX = "65535";
   static private final String UNSIGNED_BYTE_MAX = "255";
   // Follow RFC 3066 syntax.
   static private final String LANGUAGE_PATTERN = "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*";
 
   public DatatypeLibraryImpl() {
     this. = findRegexEngine();
     .put("string"new StringDatatype());
     .put("normalizedString"new CdataDatatype());
     .put("token"new TokenDatatype());
     .put("boolean"new BooleanDatatype());
 
     DatatypeBase decimalType = new DecimalDatatype();
     .put("decimal"decimalType);
     DatatypeBase integerType = new IntegerRestrictDatatype(decimalType);
     .put("integer"integerType);
     .put("nonPositiveInteger"restrictMax(integerType"0"));
     .put("negativeInteger"restrictMax(integerType"-1"));
     .put("long"restrictMax(restrictMin(integerType), ));
     .put("int"restrictMax(restrictMin(integerType), ));
     .put("short"restrictMax(restrictMin(integerType), ));
     .put("byte"restrictMax(restrictMin(integerType), ));
     DatatypeBase nonNegativeIntegerType = restrictMin(integerType"0");
     .put("nonNegativeInteger"nonNegativeIntegerType);
     .put("unsignedLong"restrictMax(nonNegativeIntegerType));
     .put("unsignedInt"restrictMax(nonNegativeIntegerType));
     .put("unsignedShort"restrictMax(nonNegativeIntegerType));
     .put("unsignedByte"restrictMax(nonNegativeIntegerType));
     .put("positiveInteger"restrictMin(integerType"1"));
     .put("double"new DoubleDatatype());
     .put("float"new FloatDatatype());
 
     .put("Name"new NameDatatype());
     .put("QName"new QNameDatatype());
 
     DatatypeBase ncNameType = new NCNameDatatype();
     .put("NCName"ncNameType);
 
     DatatypeBase nmtokenDatatype = new NmtokenDatatype();
     .put("NMTOKEN"nmtokenDatatype);
     .put("NMTOKENS"list(nmtokenDatatype));
 
     .put("ID"new IdDatatype());
     DatatypeBase idrefType = new IdrefDatatype();
     .put("IDREF"idrefType);
     .put("IDREFS"list(idrefType));
 
     .put("NOTATION"new QNameDatatype());
 
     .put("base64Binary"new Base64BinaryDatatype());
     .put("hexBinary"new HexBinaryDatatype());
     .put("anyURI"new AnyUriDatatype());
     .put("language"new RegexDatatype());
 
     .put("dateTime"new DateTimeDatatype("Y-M-DTt"));
     .put("time"new DateTimeDatatype("t"));
     .put("date"new DateTimeDatatype("Y-M-D"));
     .put("gYearMonth"new DateTimeDatatype("Y-M"));
     .put("gYear"new DateTimeDatatype("Y"));
     .put("gMonthDay"new DateTimeDatatype("--M-D"));
     .put("gDay"new DateTimeDatatype("---D"));
     .put("gMonth"new DateTimeDatatype("--M"));
 
     DatatypeBase entityType = new EntityDatatype();
     .put("ENTITY"entityType);
     .put("ENTITIES"list(entityType));
     // Partially implemented
     .put("duration"new DurationDatatype());
   }
 
    DatatypeBase base = (DatatypeBase).get(localName);
    if (base == null)
      throw new DatatypeException();
    if (base instanceof RegexDatatype) {
      try {
        ((RegexDatatype)base).compile(getRegexEngine());
      }
      catch (RegexSyntaxException e) {
        throw new DatatypeException(..message("regex_internal_error"localName));
      }
    }
    return new DatatypeBuilderImpl(thisbase);
  }
    if ( == null)
      throw new DatatypeException(..message("regex_impl_not_found"));
    return ;
  }
  private static DatatypeBase restrictMax(DatatypeBase baseString limit) {
    return new MaxInclusiveRestrictDatatype(basebase.getValue(limitnull));
  }
  private static DatatypeBase restrictMin(DatatypeBase baseString limit) {
    return new MinInclusiveRestrictDatatype(basebase.getValue(limitnull));
  }
  private static DatatypeBase list(DatatypeBase base) {
    return new MinLengthRestrictDatatype(new ListDatatype(base), 1);
  }
  private static RegexEngine findRegexEngine() {
    Enumeration e = new Service(RegexEngine.class).getProviders();
    if (!e.hasMoreElements())
      return null;
    return (RegexEngine)e.nextElement();
  }
  public Datatype createDatatype(String typethrows DatatypeException {
    return createDatatypeBuilder(type).createDatatype();
  }
  static public void main(String[] argsthrows DatatypeException {
    ..println(new DatatypeLibraryImpl().createDatatype(args[0]).isValid(args[1], null)
                       ? "valid"
                       : "invalid");
  }
New to GrepCode? Check out our FAQ X