Package org.geotools.filter.v2_0.bindings

Source Code of org.geotools.filter.v2_0.bindings.ResourceIdTypeBindingTest

package org.geotools.filter.v2_0.bindings;

import static org.opengis.filter.identity.Version.Action.ALL;
import static org.opengis.filter.identity.Version.Action.FIRST;
import static org.opengis.filter.identity.Version.Action.LAST;
import static org.opengis.filter.identity.Version.Action.NEXT;
import static org.opengis.filter.identity.Version.Action.PREVIOUS;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import org.geotools.factory.CommonFactoryFinder;
import org.geotools.filter.identity.ResourceIdImpl;
import org.geotools.filter.v2_0.FESTestSupport;
import org.geotools.xml.impl.DatatypeConverterImpl;
import org.opengis.filter.FilterFactory;
import org.opengis.filter.Id;
import org.opengis.filter.identity.Identifier;
import org.opengis.filter.identity.ResourceId;
import org.opengis.filter.identity.Version;

public class ResourceIdTypeBindingTest extends FESTestSupport {

    public void testParse() throws Exception {
        String xml = "<fes:Filter "
                + "   xmlns:fes='http://www.opengis.net/fes/2.0' "
                + "   xmlns:gml='http://www.opengis.net/gml/3.2' "
                + "   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
                + "   xsi:schemaLocation='http://www.opengis.net/fes/2.0 http://schemas.opengis.net/filter/2.0/filterAll.xsd"
                + " http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd'>"
                + "   <fes:ResourceId rid=\"rid1@abc\" previousRid=\"previous1\" version=\"FIRST\"/> "
                + "   <fes:ResourceId rid=\"rid2\" version=\"LAST\"/> "
                + "   <fes:ResourceId rid=\"rid3\" version=\"PREVIOUS\"/> "
                + "   <fes:ResourceId rid=\"rid4\" version=\"NEXT\"/> "
                + "   <fes:ResourceId rid=\"rid5\" version=\"ALL\"/> "
                + "   <fes:ResourceId rid=\"rid6\" previousRid=\"previous2\" version=\"4\" startDate=\"1977-01-17T01:05:40Z\" endDate=\"2011-07-29T23:49:40Z\" /> "
                + "   <fes:ResourceId rid=\"rid7@123\" version=\"1977-01-17T01:05:40Z\"/> "
                + "</fes:Filter>";

        buildDocument(xml);

        Id filter = (Id) parse();
        assertNotNull(filter);
        assertEquals(7, filter.getIdentifiers().size());
        List<ResourceId> ids = new ArrayList<ResourceId>(7);
        for (Identifier id : filter.getIdentifiers()) {
            assertTrue(id instanceof ResourceId);
            ids.add((ResourceId) id);
        }
        Collections.sort(ids, new Comparator<ResourceId>() {
            @Override
            public int compare(ResourceId o1, ResourceId o2) {
                return o1.getRid().compareTo(o2.getRid());
            }
        });

        final DatatypeConverterImpl dateParser = DatatypeConverterImpl.getInstance();
        final Date date1 = dateParser.parseDateTime("1977-01-17T01:05:40Z").getTime();
        final Date date2 = dateParser.parseDateTime("2011-07-29T23:49:40Z").getTime();
        FilterFactory ff = CommonFactoryFinder.getFilterFactory(null);

        // This is in consistent as the FIRST entry cannot have a previous1
        ResourceIdImpl resourceId =  new ResourceIdImpl("rid1", "abc", new Version(FIRST));
        resourceId.setPreviousRid("previous1");
        assertEquals( resourceId.getID(), ids.get(0).getID());
       
        assertEquals(ff.resourceId("rid2", "", new Version(LAST)).getID(),
                     ids.get(1).getID());
        assertEquals(ff.resourceId("rid3", "", new Version(PREVIOUS)).getID(),
                     ids.get(2).getID());
        assertEquals(ff.resourceId("rid4", "", new Version(NEXT)).getID(),
                     ids.get(3).getID());
        assertEquals(ff.resourceId("rid5", "", new Version(ALL)).getID(),
                     ids.get(4).getID());
       
        // This is inconsistent as date and resource based query cannot be used at the same time
        ResourceIdImpl resourceId2 =  new ResourceIdImpl("rid6", "", new Version(4));
        resourceId2.setPreviousRid("previous2");
        resourceId2.setStartTime(date1);
        resourceId2.setEndTime(date2);
        assertEquals( resourceId2.getID(),
                      ids.get(5).getID());
       
        assertEquals(ff.resourceId("rid7", "123"new Version(date1)).getID(), ids.get(6).getID());
    }
}
TOP

Related Classes of org.geotools.filter.v2_0.bindings.ResourceIdTypeBindingTest

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.