Package org.geotools.data

Examples of org.geotools.data.Join


    public void testTemporalJoin() throws Exception {
        FilterFactory ff = dataStore.getFilterFactory();

        After after = ff.after(ff.property(aname("dt")), ff.property("other." + aname("dt")));
        Query q = new Query(tname("dates"));
        q.getJoins().add(new Join(tname("dates"), after).alias("other"));
        q.setSortBy(new SortBy[]{ff.sort(aname("dt"), SortOrder.ASCENDING)});
       
        assertDatesMatch(q, "2009-06-28 15:12:41", "2009-09-29 17:54:23", "2009-09-29 17:54:23");
    }
View Full Code Here


       
        JoinInfo info = new JoinInfo();
        info.setPrimaryAlias("a");
       
        for (int i = 0; i < query.getJoins().size(); i++) {
            Join j = query.getJoins().get(i);

            JoinPart part = new JoinPart(j);
            info.getParts().add(part);

            //load the feature type being joined to
            JDBCFeatureSource joinFeatureSource = dataStore.getAbsoluteFeatureSource(j.getTypeName());
            part.setFeatureSource(joinFeatureSource);

            //ensure every join as a unique alias
            String alias = String.valueOf((char)('b' + i));
            part.setAlias(alias);

            //hack on the join filter as necessary
            Filter joinFilter = j.getJoinFilter();

            Map<String, String> mappings = new HashMap<String, String>();
            if (query.getAlias() != null) {
                //rewrite any user specified alias with the one we specified
                mappings.put(query.getAlias(), "a");
            }
            if (j.getAlias() != null) {
                //rewrite any user specified alias with the one we specified
                mappings.put(j.getAlias(), alias);
            }
            if (!mappings.isEmpty()) {
                joinFilter = (Filter) joinFilter.accept(new JoinPrefixRewriter(mappings), null);
            }

            //qualify all property names in the join filter so that they known about their
            // feature type and alias
            joinFilter = (Filter) joinFilter.accept(new JoinQualifier(featureType, "a",
                    joinFeatureSource.getSchema(), alias), null);
            part.setJoinFilter(joinFilter);

            //split the other filter
            Filter[] prePostFilters = joinFeatureSource.splitFilter(j.getFilter());

            //build the query and return feature types based on the post filter
            SimpleFeatureType[] types = joinFeatureSource.buildQueryAndReturnFeatureTypes(
                joinFeatureSource.getSchema(), j.getPropertyNames(), prePostFilters[1]);

            //alias any attributes in this feature type that clash with attributes in the primary
            // feature type
            types[0] = SimpleFeatureTypeBuilder.copy(types[0]);
            for (AttributeDescriptor att : types[0].getAttributeDescriptors()) {
View Full Code Here

        SimpleFeatureIterator itb =
            dataStore.getFeatureSource(tname("ftjoin")).getFeatures().features();

        FilterFactory ff = dataStore.getFilterFactory();
        Query q = new Query(tname("ft1"));
        q.getJoins().add(new Join(tname("ftjoin"),
            ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true)));

        SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
        assertEquals(dataStore.getFeatureSource(tname("ft1")).getFeatures(q).size(), features.size());
View Full Code Here

        SimpleFeatureIterator itb = dataStore.getFeatureSource(tname("ftjoin")).getFeatures()
                .features();

        FilterFactory ff = dataStore.getFilterFactory();
        Query q = new Query(tname("ft1"));
        Join join = new Join(tname("ftjoin"), ff.equal(ff.property(aname("id")),
                ff.property(aname("ftjoin.id")), true));
        join.setAlias(tname("ftjoin"));
        q.getJoins().add(join);

        SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
        assertEquals(dataStore.getFeatureSource(tname("ft1")).getFeatures(q).size(),
                features.size());
View Full Code Here

                .features();

        FilterFactory ff = dataStore.getFilterFactory();
        Query q = new Query(tname("ft1"));
        q.setAlias("b");
        Join join = new Join(tname("ftjoin"), ff.equal(ff.property(aname("stringProperty")),
                ff.property(aname("name")), true));
        join.setAlias("a");
        q.getJoins().add(join);

        SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
        assertEquals(dataStore.getFeatureSource(tname("ft1")).getFeatures(q).size(),
                features.size());
View Full Code Here

   
    void doTestSimpleJoinWithFilter(boolean exposePrimaryKeys) throws Exception {
        dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
        FilterFactory ff = dataStore.getFilterFactory();
        Query q = new Query(tname("ft1"));
        q.getJoins().add(new Join(tname("ftjoin"),
            ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true)));
        q.setFilter(ff.equal(ff.property(aname("stringProperty")), ff.literal("two"), true));
       
        SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
        assertEquals(1, features.size());
View Full Code Here

    void doTestSimpleJoinWithFilterNoProperties(boolean exposePrimaryKeys) throws Exception {
        dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
        FilterFactory ff = dataStore.getFilterFactory();
        Query q = new Query(tname("ft1"));
        Join j = new Join(tname("ftjoin"),
            ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true));
        j.setProperties(Query.NO_PROPERTIES);
        q.getJoins().add(j);
        q.setFilter(ff.equal(ff.property(aname("stringProperty")), ff.literal("two"), true));
       
        SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
        assertEquals(1, features.size());
View Full Code Here

   
    void doTestSimpleJoinWithFilterCount(boolean exposePrimaryKeys) throws Exception {
        dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
        FilterFactory ff = dataStore.getFilterFactory();
        Query q = new Query(tname("ft1"));
        Join j = new Join(tname("ftjoin"),
            ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true));
        j.filter(ff.greater(ff.property(aname("join1intProperty")), ff.literal(1)));
        q.getJoins().add(j);
        q.setFilter(ff.less(ff.property(aname("intProperty")), ff.literal(3)));
       
        assertEquals(1, dataStore.getFeatureSource(tname("ft1")).getCount(q));
    }
View Full Code Here

        dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
        FilterFactory ff = dataStore.getFilterFactory();
       
        Filter j = ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true);
        Query q = new Query(tname("ft1"));
        q.getJoins().add(new Join(tname("ftjoin"), j));
        q.setFilter(ff.equal(
            ff.function("__equals", ff.property(aname("stringProperty")), ff.literal("one")),
            ff.literal(true), true));

        SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
        assertEquals(1, features.size());
       
        //test with post filter on table being joined
        q = new Query(tname("ft1"));
        Join join = new Join(tname("ftjoin"), j);
        join.filter(ff.equal(
            ff.function("__equals", ff.property(aname("name")), ff.literal("one")),
            ff.literal(true), true));
        q.getJoins().add(join);
       
        features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
View Full Code Here

        dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
        FilterFactory ff = dataStore.getFilterFactory();
       
        Filter j = ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true);
        Query q = new Query(tname("ft1"));
        Join join = new Join(tname("ftjoin"), j);
        join.setProperties(Query.NO_PROPERTIES);
        q.getJoins().add(join);
        q.setFilter(ff.equal(
            ff.function("__equals", ff.property(aname("stringProperty")), ff.literal("one")),
            ff.literal(true), true));

        SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
        assertEquals(1, features.size());
       
        //test with post filter on table being joined
        q = new Query(tname("ft1"));
        join = new Join(tname("ftjoin"), j);
        join.setProperties(Query.NO_PROPERTIES);
        join.filter(ff.equal(
            ff.function("__equals", ff.property(aname("name")), ff.literal("one")),
            ff.literal(true), true));
        q.getJoins().add(join);
       
        features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
View Full Code Here

TOP

Related Classes of org.geotools.data.Join

Copyright © 2018 www.massapicom. 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.