Package org.geotools.wfs.bindings

Source Code of org.geotools.wfs.bindings.FeatureTypeListTypeBindingTest

/*
*    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.wfs.bindings;

import java.net.URL;
import java.util.List;

import javax.xml.namespace.QName;

import net.opengis.ows10.KeywordsType;
import net.opengis.ows10.Ows10Factory;
import net.opengis.ows10.WGS84BoundingBoxType;
import net.opengis.wfs.FeatureTypeListType;
import net.opengis.wfs.FeatureTypeType;
import net.opengis.wfs.OperationType;
import net.opengis.wfs.OperationsType;
import net.opengis.wfs.OutputFormatListType;

import org.geotools.ows.OWS;
import org.geotools.test.TestData;
import org.geotools.wfs.WFS;
import org.geotools.wfs.WFSTestSupport;
import org.geotools.xml.Binding;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**
* Unit test suite for {@link FeatureTypeListTypeBinding}
*
* @author Gabriel Roldan
* @version $Id: FeatureTypeListTypeBindingTest.java 27749 2007-11-05 09:51:33Z
*          groldan $
* @since 2.5.x
*
*
* @source $URL$
*/
public class FeatureTypeListTypeBindingTest extends WFSTestSupport {
    public FeatureTypeListTypeBindingTest() {
        super(WFS.FeatureTypeListType, FeatureTypeListType.class, Binding.OVERRIDE);
    }

    public void testEncode() throws Exception {
        FeatureTypeListType ftl = factory.createFeatureTypeListType();
        {
            OperationsType ops = factory.createOperationsType();
            ops.getOperation().add(OperationType.DELETE_LITERAL);
            ops.getOperation().add(OperationType.INSERT_LITERAL);
            ops.getOperation().add(OperationType.QUERY_LITERAL);
            ftl.setOperations(ops);
        }
        {
            FeatureTypeType ft = factory.createFeatureTypeType();
            ft.setName(new QName("http://www.openplans.org/topp", "Type1"));
            ft.setTitle("Title1");
            ft.setAbstract("Abstract1");
            KeywordsType kwd = Ows10Factory.eINSTANCE.createKeywordsType();
            kwd.getKeyword().add("keword1");
            kwd.getKeyword().add("keword2");
            ft.getKeywords().add(kwd);
            ft.setDefaultSRS("urn:ogc:crs:EPSG:6.7:4326");
            ft.getOtherSRS().add("urn:ogc:crs:EPSG:6.7:23030");
            ft.setOperations(factory.createOperationsType());
            OperationsType operations = ft.getOperations();
            List operationList = operations.getOperation();
            operationList.add(OperationType.QUERY_LITERAL);
            operationList.add(OperationType.INSERT_LITERAL);
            operationList.add(OperationType.UPDATE_LITERAL);
            operationList.add(OperationType.DELETE_LITERAL);
            OutputFormatListType outputFormat = factory.createOutputFormatListType();
            outputFormat.getFormat().add("GML2");
            ft.setOutputFormats(outputFormat);
            WGS84BoundingBoxType bbox = Ows10Factory.eINSTANCE.createWGS84BoundingBoxType();
            bbox.setCrs("urn:ogc:crs:EPSG:6.7:4326");
            ft.getWGS84BoundingBox().add(bbox);
            ftl.getFeatureType().add(ft);
        }

        final Document dom = encode(ftl, WFS.FeatureTypeList);
        final Element root = dom.getDocumentElement();

        assertName(WFS.FeatureTypeList, root);
        assertOperations(root);
        Element ft = getElementByQName(root, new QName(WFS.NAMESPACE, "FeatureType"));
        assertNotNull(ft);
        assertFeatureType(ft);       
    }

    private void assertFeatureType(Element ft) {
        Element typeName = getElementByQName(ft, new QName(WFS.NAMESPACE, "Name"));
        assertEquals("Type1", typeName.getFirstChild().getNodeValue());
        Element title = getElementByQName(ft, new QName(WFS.NAMESPACE, "Title"));
        assertEquals("Title1", title.getFirstChild().getNodeValue());
        Element abstract_ = getElementByQName(ft, new QName(WFS.NAMESPACE, "Abstract"));
        assertEquals("Abstract1", abstract_.getFirstChild().getNodeValue());
        Element keywords = getElementByQName(ft, OWS.Keywords);
        assertNotNull(keywords);
        assertEquals(2, getElementsByQName(keywords, new QName(OWS.NAMESPACE, "Keyword")).getLength());
       
        Element defaultCrs = getElementByQName(ft, new QName(WFS.NAMESPACE, "DefaultSRS"));
        assertEquals("urn:ogc:crs:EPSG:6.7:4326", defaultCrs.getFirstChild().getNodeValue());
        Element otherSrs = getElementByQName(ft, new QName(WFS.NAMESPACE, "OtherSRS"));
        assertEquals("urn:ogc:crs:EPSG:6.7:23030", otherSrs.getFirstChild().getNodeValue());
       
        Element operations = getElementByQName(ft, new QName(WFS.NAMESPACE, "Operations"));
        assertNotNull(operations);
        NodeList ops = getElementsByQName(operations, new QName(WFS.NAMESPACE, "Operation"));
        assertEquals(4, ops.getLength());
        assertEquals("Query", ops.item(0).getFirstChild().getNodeValue());
        assertEquals("Insert", ops.item(1).getFirstChild().getNodeValue());
        assertEquals("Update", ops.item(2).getFirstChild().getNodeValue());
        assertEquals("Delete", ops.item(3).getFirstChild().getNodeValue());
       
        Element outputFormats = getElementByQName(ft, new QName(WFS.NAMESPACE, "OutputFormats"));
        assertNotNull(outputFormats);
        NodeList formats = getElementsByQName(outputFormats, new QName(WFS.NAMESPACE, "Format"));
        assertEquals(1, formats.getLength());
        assertEquals("GML2", formats.item(0).getFirstChild().getNodeValue());
    }

    private void assertOperations(final Element root) {
        Element operations = getElementByQName(root, new QName(WFS.NAMESPACE, "Operations"));
        assertNotNull(operations);
        NodeList ops = getElementsByQName(operations, new QName(WFS.NAMESPACE, "Operation"));
        assertEquals(3, ops.getLength());
        assertEquals("Delete", ops.item(0).getFirstChild().getNodeValue());
        assertEquals("Insert", ops.item(1).getFirstChild().getNodeValue());
        assertEquals("Query", ops.item(2).getFirstChild().getNodeValue());
    }

    public void testParse() throws Exception {
        final URL resource = TestData.getResource(this, "FeatureTypeListTypeBindingTest.xml");
        buildDocument(resource);

        final Object parsed = parse(WFS.FeatureTypeList);
        assertNotNull(parsed);
        assertTrue(parsed instanceof FeatureTypeListType);

        final FeatureTypeListType ftl = (FeatureTypeListType) parsed;

        List operations = ftl.getOperations().getOperation();
        assertEquals(4, operations.size());
        assertSame(OperationType.DELETE_LITERAL, operations.get(0));
        assertSame(OperationType.INSERT_LITERAL, operations.get(1));
        assertSame(OperationType.QUERY_LITERAL, operations.get(2));
        assertSame(OperationType.GET_GML_OBJECT_LITERAL, operations.get(3));

        assertEquals(1, ftl.getFeatureType().size());
        FeatureTypeType ft = (FeatureTypeType) ftl.getFeatureType().get(0);
        assertEquals(new QName("http://www.openplans.org/topp", "name1"), ft.getName());
        assertEquals("title1", ft.getTitle());
        assertEquals(1, ft.getKeywords().size());
        KeywordsType kw = (KeywordsType) ft.getKeywords().get(0);
        assertEquals(2, kw.getKeyword().size());
        assertEquals("urn:ogc:crs:EPSG:6.7:4326", ft.getDefaultSRS());
        assertEquals(1, ft.getOtherSRS().size());
        assertEquals("urn:ogc:crs:EPSG:6.7:23030", ft.getOtherSRS().get(0));
        assertEquals(1, ft.getOutputFormats().getFormat().size());
        assertEquals("GML2", ft.getOutputFormats().getFormat().get(0));
        assertNotNull(ft.getWGS84BoundingBox());
    }
}
TOP

Related Classes of org.geotools.wfs.bindings.FeatureTypeListTypeBindingTest

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.