Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1&1 Internet AG, http://www.1and1.org
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2 of the License,
   * or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package net.sf.beezle.sushi.metadata;
 
 
 import java.io.Reader;
 import java.util.List;
 import java.util.Set;
 
 public abstract class Type {
     public static final String SCHEMA_HEAD = 
         "<?xml version='1.0' encoding='UTF-8'?>\n" + 
         "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>\n" +
         "  <xs:attributeGroup name='ids'>\n" +
         "    <xs:attribute name='id' type='xs:string'/>\n" +
         "    <xs:attribute name='idref' type='xs:string'/>\n" +
         "  </xs:attributeGroup>\n";
         
     protected final Schema schema;
     protected final Class<?> type;
     protected final String name;
 
     public Type(Schema schemaClass<?> typeString name) {
         if (type.isPrimitive()) {
             throw new IllegalArgumentException(type.getName());
         }
         if (type.isArray()) {
             throw new IllegalArgumentException(type.getName());
         }
         if (Collection.class.isAssignableFrom(type)) {
             throw new IllegalArgumentException(type.getName());
         }
         this. = schema;
         this. = type;
         this. = name;
     }
 
     public Schema getSchema() {
         return ;
     }
     
     public Class<?> getType() {
         return ;
     }
     
     public String getName() {
         return ;
     }
 
     
     public abstract Object newInstance();
 
     public <T> Instance<T> instance(T obj) {
         return new Instance<T>(thisobj);
     }
     
     //--
 
     public <T> Instance<T> loadXml(Node nodethrows IOExceptionLoaderException {
         Reader src;
         Instance<T> result;
         
         // TODO: use stream instead!?
         src = node.createReader();
         result = loadXml(node.getURI().toString(), src);
         src.close();
         return result;
     }
 
     public <T> Instance<T> loadXml(String systemIdReader srcthrows IOExceptionLoaderException {
         InputSource input;
         
         input = new InputSource(src);
         input.setSystemId(systemId);
        return loadXml(input);
    }
    public <T> Instance<T> loadXml(InputSource srcthrows IOExceptionLoaderException {
        Loader loader;
        T obj;
        
        loader = Loader.create(this);
        obj = (T) loader.run(src);
        return instance(obj);
    }
    public <T> Instance<T> loadProperties(Properties props) {
        return loadProperties(props"");
    }
    
    public <T> Instance<T> loadProperties(Properties propsString name) {
        T obj;
        
        obj = (T) new net.sf.beezle.sushi.metadata.store.Reader(new PropertyStore(props)).read(namethis);
        return instance(obj);
    }
    
    //--
    
    public List<Typeclosure() {
        List<Typeresult;
        ComplexType complex;
        Type type;
        
        result = new ArrayList<Type>();
        result.add(this);
        for (int i = 0; i < result.size(); i++) { // result grows!
            type = result.get(i);
            if (type instanceof ComplexType) {
                complex = (ComplexTypetype;
                for (Item<?> item : complex.items()) {
                    if (!result.contains(item.getType())) {
                        result.add(item.getType());
                    }
                }
            }
        }
        return result;
    }
    //-- xsd schema generation
    public String createSchema() {
        StringBuilder schema;
        Set<Typetypes;
        schema = new StringBuilder();
        schema.append();
        schema.append("  <xs:element name='").append(getName()).append("' type='").append(getSchemaTypeName()).append("'/>\n");
        types = new HashSet<Type>();
        addSchemaType(typesschema);
        schema.append("</xs:schema>");
        return schema.toString();
    }
    public abstract String getSchemaTypeName();
    public abstract void addSchemaType(Set<TypedoneStringBuilder dest);
    
New to GrepCode? Check out our FAQ X