Package org.geotools.maven.xmlcodegen

Source Code of org.geotools.maven.xmlcodegen.SchemaLocationResolverGenerator

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library 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;
*    version 2.1 of the License.
*
*    This library 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.
*/
package org.geotools.maven.xmlcodegen;

import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;

import org.eclipse.xsd.XSDInclude;
import org.eclipse.xsd.XSDSchema;
import org.geotools.xml.Schemas;


/**
* Generates an instance of {@link org.eclipse.xsd.util.XSDSchemaLocationResolver} for
* a particular schema.
* <p>
* The schema supplied, and any included schemas ( not imported ), are added to
* the set of schemas that the resulting class can resolve.
* </p>
*
* @author Justin Deoliveira, The Open Planning Project, jdeolive@openplans.org
*
*/
public class SchemaLocationResolverGenerator extends AbstractGenerator {
    public void generate(XSDSchema schema)  {
        ArrayList includes = new ArrayList();
        ArrayList namespaces = new ArrayList();

        File file = null;
        try {
          file = findSchemaFile( schema.getSchemaLocation() )
        }
        catch( Exception e ) {
          logger.log( Level.SEVERE, "", e );
        }
       
        if ( file != null ) {
          includes.add(file);
          namespaces.add(schema.getTargetNamespace());
        }
        else {
          logger.log( Level.SEVERE, "Could not find: " + schema.getSchemaLocation() + " to copy." );
        }
       
        List included = Schemas.getIncludes(schema);

        for (Iterator i = included.iterator(); i.hasNext();) {
            XSDInclude include = (XSDInclude) i.next();
           
            file = null;
            try {
              file = findSchemaFile( include.getSchemaLocation() );
            }
            catch( Exception e ) {
              logger.log( Level.SEVERE, "", e );
            }
           
      if ( file != null ) {
        includes.add(file);
        if( include.getSchema() != null ) {
          namespaces.add(include.getSchema().getTargetNamespace())
        }
        else {
          namespaces.add( schema.getTargetNamespace() );
        }
      }
      else {
        logger.log( Level.SEVERE, "Could not find: " + include.getSchemaLocation() + " to copy." );
      }
     
        }

        try {
//      String result = execute("SchemaLocationResolverTemplate",
//              new Object[] { schema, includes, namespaces });
//      String prefix = Schemas.getTargetPrefix(schema).toUpperCase();
//      write(result, prefix + "SchemaLocationResolver");

      //copy over all the schemas
      for (Iterator i = includes.iterator(); i.hasNext();) {
          File include = (File) i.next();
          copy(include, resourceLocation);
      }
    }
        catch( Exception e ) {
          logger.log( Level.SEVERE, "Error generating resolver", e );
        }
    }

}
TOP

Related Classes of org.geotools.maven.xmlcodegen.SchemaLocationResolverGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.