Package org.geotools.xml

Source Code of org.geotools.xml.GMLParserTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2004-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.xml;

import java.io.File;
import java.net.URI;
import java.util.HashMap;
import java.util.logging.Level;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import junit.framework.TestCase;

import org.geotools.TestData;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.xml.gml.GMLFeatureCollection;
import org.geotools.xml.gml.GMLSchema;
import org.geotools.xml.schema.Schema;
import org.opengis.feature.simple.SimpleFeature;
import org.xml.sax.SAXException;


/**
* <p>
* DOCUMENT ME!
* </p>
* @
*
* @author dzwiers www.refractions.net
*
*
* @source $URL$
*/
public class GMLParserTest extends TestCase {
    public void testSchema(){
        Schema s = SchemaFactory.getInstance(GMLSchema.NAMESPACE);
        assertNotNull(s);
    }
   
    public void testParseEmptyCollectionFeatures() throws Exception {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            spf.setNamespaceAware(true);
            spf.setValidating(false);

            SAXParser parser = spf.newSAXParser();

            String path = "xml/fme/empty-collection/lakes.xml";
            File f = TestData.copy(this,path);
            TestData.copy(this,"xml/fme/empty-collection/lakes.xsd");
            URI u = f.toURI();

            XMLSAXHandler xmlContentHandler = new XMLSAXHandler(u,null);
            XMLSAXHandler.setLogLevel(Level.WARNING);
            XSISAXHandler.setLogLevel(Level.WARNING);
            XMLElementHandler.setLogLevel(Level.WARNING);
            XSIElementHandler.setLogLevel(Level.WARNING);

            parser.parse(f, xmlContentHandler);

            Object doc = xmlContentHandler.getDocument();
            assertNotNull("Document missing", doc);
           
            SimpleFeatureCollection collection=(SimpleFeatureCollection) doc;
            assertEquals(0, collection.size());
           
    }
    public void skippedtestOneFeature() throws Exception {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            spf.setNamespaceAware(true);
            spf.setValidating(false);

            SAXParser parser = spf.newSAXParser();

            String path = "xml/geoserver/oneFeature.xml";
            File f = TestData.copy(this,path);
            TestData.copy(this,"xml/geoserver/roadSchema.xsd");
            TestData.copy(this,"xml/wfs/WFS-basic.xsd");
            URI u = f.toURI();

            XMLSAXHandler xmlContentHandler = new XMLSAXHandler(u,null);
            XMLSAXHandler.setLogLevel(Level.FINEST);
            XSISAXHandler.setLogLevel(Level.FINEST);
            XMLElementHandler.setLogLevel(Level.FINEST);
            XSIElementHandler.setLogLevel(Level.FINEST);

            parser.parse(f, xmlContentHandler);

            Object doc = xmlContentHandler.getDocument();
            assertNotNull("Document missing", doc);
//            System.out.println(doc);
           
            checkFeatureCollection((SimpleFeatureCollection)doc);
           
    }
    public void skippedtestMoreFeatures(){
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            spf.setNamespaceAware(true);
            spf.setValidating(false);

            SAXParser parser = spf.newSAXParser();

            String path = "xml/geoserver/roads.xml";
            File f = TestData.copy(this,path);
            TestData.copy(this,"xml/geoserver/roadSchema.xsd");
            TestData.copy(this,"xml/wfs/WFS-basic.xsd");
            URI u = f.toURI();

            XMLSAXHandler xmlContentHandler = new XMLSAXHandler(u,null);
            XMLSAXHandler.setLogLevel(Level.WARNING);
            XSISAXHandler.setLogLevel(Level.WARNING);
            XMLElementHandler.setLogLevel(Level.WARNING);
            XSIElementHandler.setLogLevel(Level.WARNING);

            parser.parse(f, xmlContentHandler);

            Object doc = xmlContentHandler.getDocument();
            assertNotNull("Document missing", doc);
//            System.out.println(doc);
           
            checkFeatureCollection((SimpleFeatureCollection)doc);
           
        } catch (Throwable e) {
            e.printStackTrace();
            fail(e.toString());
        }
    }
   
    public void testPatternSchema(){
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            spf.setNamespaceAware(true);
            spf.setValidating(false);

            SAXParser parser = spf.newSAXParser();

            String path = "xml/patternfacet/states.xml";
            File f = TestData.copy(this,path);
            TestData.copy(this,"xml/patternfacet/states.xsd");
            TestData.copy(this,"xml/wfs/WFS-basic.xsd");
            URI u = f.toURI();

            XMLSAXHandler xmlContentHandler = new XMLSAXHandler(u,null);
            XMLSAXHandler.setLogLevel(Level.WARNING);
            XSISAXHandler.setLogLevel(Level.WARNING);
            XMLElementHandler.setLogLevel(Level.WARNING);
            XSIElementHandler.setLogLevel(Level.WARNING);

            parser.parse(f, xmlContentHandler);

            Object doc = xmlContentHandler.getDocument();
            assertNotNull("Document missing", doc);
           
            checkFeatureCollection((SimpleFeatureCollection)doc);
           
        } catch (Throwable e) {
            e.printStackTrace();
            fail(e.toString());
        }
    }
   
    public void testFMERoadsFeatures() {
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            spf.setNamespaceAware(true);
            spf.setValidating(false);

            SAXParser parser = spf.newSAXParser();

            String path = "xml/fme/roads/roads.xml";
            File f = TestData.copy(this,path);
            TestData.copy(this,"xml/fme/roads/roads.xsd");
            URI u = f.toURI();

            XMLSAXHandler xmlContentHandler = new XMLSAXHandler(u,null);
            XMLSAXHandler.setLogLevel(Level.WARNING);
            XSISAXHandler.setLogLevel(Level.WARNING);
            XMLElementHandler.setLogLevel(Level.WARNING);
            XSIElementHandler.setLogLevel(Level.WARNING);

            parser.parse(f, xmlContentHandler);

            Object doc = xmlContentHandler.getDocument();
            assertNotNull("Document missing", doc);
//            System.out.println(doc);

            checkFeatureCollection((SimpleFeatureCollection)doc);
           
        } catch (Throwable e) {
            e.printStackTrace();
            fail(e.toString());
        }
    }
   
    public void testFMELakesFeatures() {
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            spf.setNamespaceAware(true);
            spf.setValidating(false);

            SAXParser parser = spf.newSAXParser();

            String path = "xml/fme/lakes/lakes.xml";
            File f = TestData.copy(this,path);
            TestData.copy(this,"xml/fme/lakes/lakes.xsd");
            URI u = f.toURI();

            XMLSAXHandler xmlContentHandler = new XMLSAXHandler(u,null);
            XMLSAXHandler.setLogLevel(Level.WARNING);
            XSISAXHandler.setLogLevel(Level.WARNING);
            XMLElementHandler.setLogLevel(Level.WARNING);
            XSIElementHandler.setLogLevel(Level.WARNING);

            parser.parse(f, xmlContentHandler);

            Object doc = xmlContentHandler.getDocument();
            assertNotNull("Document missing", doc);
//            System.out.println(doc);
           
            checkFeatureCollection((SimpleFeatureCollection)doc);
           
        } catch (Throwable e) {
            e.printStackTrace();
            fail(e.toString());
        }
    }
   
    private void checkFeatureCollection(SimpleFeatureCollection doc){
              
        //remaining slot (s) should be feature(s)
        assertTrue("Requires atleast one feature",doc.size()>0)//bbox + feature
        SimpleFeatureIterator i = doc.features();
        int j = 1;
        while(i.hasNext()){
            SimpleFeature ft = i.next();
            assertNotNull("Feature #"+j+" is null",ft);
//            assertNotNull("Feature #"+j+" missing crs ",ft.getFeatureType().getDefaultGeometry().getCoordinateSystem());
//            System.out.println("Feature "+j+" : "+ft);
            j++;
        }
        System.out.println("Found "+j+" Features");
    }
    public void skippedtestOneFeatureWrite(){

        try {           
        String path = "xml/geoserver/oneFeature.xml";
        File f = TestData.copy(this,path);
        TestData.copy(this,"xml/geoserver/roadSchema.xsd");
        TestData.copy(this,"xml/wfs/WFS-basic.xsd");

        GMLFeatureCollection doc = (GMLFeatureCollection)DocumentFactory.getInstance(f.toURI(),null,Level.WARNING);
        assertNotNull("Document missing", doc);

        Schema s = SchemaFactory.getInstance(new URI("http://www.openplans.org/topp"));
               
        path = "oneFeature_out.xml";
        f = new File(f.getParentFile(),path);
        if(f.exists())
            f.delete();
        f.createNewFile();
       
        assertNotNull("Bounds exists",doc.getBounds());
        DocumentWriter.writeDocument(doc,s,f,null);
       
//        doc = (GMLFeatureCollection)DocumentFactory.getInstance(f.toURI(),null,Level.WARNING);
//        assertNotNull("New Document missing", doc);
//       
//        assertTrue("file was not created +f",f.exists());
        System.out.println(f);
        } catch (SAXException e) {
            e.printStackTrace();
            fail(e.toString());
        } catch (Throwable e) {
            e.printStackTrace();
            fail(e.toString());
        }
    }
    public void skippedtestOneFeatureWriteWithHints(){

        try {           
        String path = "xml/geoserver/oneFeature.xml";

        File f = TestData.copy(this,path);
        TestData.copy(this,"xml/geoserver/roadSchema.xsd");
        TestData.copy(this,"xml/wfs/WFS-basic.xsd");

        GMLFeatureCollection doc = (GMLFeatureCollection)DocumentFactory.getInstance(f.toURI(),null,Level.WARNING);
        assertNotNull("Document missing", doc);

        Schema s = SchemaFactory.getInstance(new URI("http://www.openplans.org/topp"));
               
        path = "oneFeature_out_hints.xml";
        f = new File(f.getParentFile(),path);
        if(f.exists())
            f.delete();
        f.createNewFile();
       
        HashMap hints = new HashMap();
        hints.put(DocumentWriter.SCHEMA_ORDER,new String[] {"http://www.opengis.net/wfs", "http://www.openplans.org/topp"});
        assertNotNull("Bounds exists",doc.getBounds());
        DocumentWriter.writeDocument(doc,s,f,hints);
       
//        doc = (GMLFeatureCollection)DocumentFactory.getInstance(f.toURI(),null,Level.WARNING);
//        assertNotNull("New Document missing", doc);
//       
//        assertTrue("file was not created +f",f.exists());
        System.out.println(f);
        } catch (SAXException e) {
            e.printStackTrace();
            fail(e.toString());
        } catch (Throwable e) {
            e.printStackTrace();
            fail(e.toString());
        }
    }
   
    public void testProblemFeatures(){
       try {
           SAXParserFactory spf = SAXParserFactory.newInstance();
           spf.setNamespaceAware(true);
           spf.setValidating(false);

           SAXParser parser = spf.newSAXParser();

           String path = "xml/iba-gml-bad.xml";
           File f = TestData.copy(this,path);
           URI u = f.toURI();

           XMLSAXHandler xmlContentHandler = new XMLSAXHandler(u,null);
           XMLSAXHandler.setLogLevel(Level.WARNING);
           XSISAXHandler.setLogLevel(Level.WARNING);
           XMLElementHandler.setLogLevel(Level.WARNING);
           XSIElementHandler.setLogLevel(Level.WARNING);

           parser.parse(f, xmlContentHandler);

           Object doc = xmlContentHandler.getDocument();
           assertNotNull("Document missing", doc);
//           System.out.println(doc);
          
           checkFeatureCollection((SimpleFeatureCollection)doc);
           fail("Didn't catch an exception :(");
       } catch (Throwable e) {
//           e.printStackTrace();
       }
   }
}
TOP

Related Classes of org.geotools.xml.GMLParserTest

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.