001    package com.thaiopensource.validate.rng;
002    
003    import com.thaiopensource.util.PropertyId;
004    import com.thaiopensource.util.PropertyMap;
005    import com.thaiopensource.util.PropertyMapBuilder;
006    import com.thaiopensource.validate.FlagPropertyId;
007    import com.thaiopensource.validate.Option;
008    import com.thaiopensource.validate.FlagOption;
009    import com.thaiopensource.validate.SchemaReader;
010    import org.relaxng.datatype.DatatypeLibraryFactory;
011    
012    public class RngProperty {
013    
014      private RngProperty() { }
015    
016      public static class DatatypeLibraryFactoryPropertyId extends PropertyId {
017        public DatatypeLibraryFactoryPropertyId(String name) {
018          super(name, DatatypeLibraryFactory.class);
019        }
020    
021        public DatatypeLibraryFactory get(PropertyMap properties) {
022          return (DatatypeLibraryFactory)properties.get(this);
023        }
024    
025        public DatatypeLibraryFactory put(PropertyMapBuilder builder, DatatypeLibraryFactory value) {
026          return (DatatypeLibraryFactory)builder.put(this, value);
027        }
028      }
029    
030      public static final DatatypeLibraryFactoryPropertyId DATATYPE_LIBRARY_FACTORY
031              = new DatatypeLibraryFactoryPropertyId("DATATYPE_LIBRARY_FACTORY");
032      public static final FlagPropertyId CHECK_ID_IDREF = new FlagPropertyId("CHECK_ID_IDREF");
033      public static final FlagPropertyId FEASIBLE = new FlagPropertyId("FEASIBLE");
034    
035      public static Option getOption(String uri) {
036        if (!uri.startsWith(SchemaReader.BASE_URI))
037          return null;
038        uri = uri.substring(SchemaReader.BASE_URI.length());
039        if (uri.equals("feasible"))
040          return new FlagOption(FEASIBLE);
041        if (uri.equals("check-id-idref"))
042          return new FlagOption(CHECK_ID_IDREF);
043        return null;
044      }
045    }