org.geotools.data.Query.getJoins()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(14.4k)|赞(0)|评价(0)|浏览(201)

本文整理了Java中org.geotools.data.Query.getJoins方法的一些代码示例,展示了Query.getJoins的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query.getJoins方法的具体详情如下:
包路径:org.geotools.data.Query
类名称:Query
方法名:getJoins

Query.getJoins介绍

[英]The list of joins for this query.

Each Join object specifies a feature type to join to. The join may only reference a feature type from within the same datastore.
[中]此查询的联接列表。
每个连接对象都指定要连接到的要素类型。联接只能引用同一数据存储中的要素类型。

代码示例

代码示例来源:origin: geoserver/geoserver

  1. && !query.getJoins().isEmpty()) {
  2. continue;

代码示例来源:origin: geoserver/geoserver

  1. modified.setTypeName(typeMap.getOriginalName());
  2. modified.setFilter(retypeFilter(q.getFilter(), typeMap));
  3. List<Join> joins = q.getJoins();
  4. if (!joins.isEmpty()) {
  5. modified.getJoins().clear();
  6. for (Join join : joins) {
  7. FeatureTypeMap map = (FeatureTypeMap) backwardsMap.get(join.getTypeName());
  8. if (map == null) {
  9. modified.getJoins().add(join);
  10. } else {
  11. final FeatureTypeMap joinTypeMap =
  12. mj.setProperties(join.getProperties());
  13. mj.setFilter(join.getFilter());
  14. modified.getJoins().add(mj);

代码示例来源:origin: geoserver/geoserver

  1. /**
  2. * * Takes into account eventual joins
  3. *
  4. * @param query
  5. * @return
  6. */
  7. public SimpleFeatureType getFeatureType(Query query) {
  8. SimpleFeatureType result;
  9. if (query.getPropertyNames() != Query.ALL_NAMES) {
  10. result = SimpleFeatureTypeBuilder.retype(featureType, query.getPropertyNames());
  11. } else {
  12. result = featureType;
  13. }
  14. // add back the joined features in case of join
  15. if (!query.getJoins().isEmpty()) {
  16. SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder();
  17. tb.init(result);
  18. for (Join join : query.getJoins()) {
  19. String joinedFeatureAttribute = join.getAlias();
  20. if (joinedFeatureAttribute == null) {
  21. joinedFeatureAttribute = join.getTypeName();
  22. }
  23. tb.add(joinedFeatureAttribute, SimpleFeature.class);
  24. }
  25. result = tb.buildFeatureType();
  26. }
  27. return result;
  28. }

代码示例来源:origin: geotools/geotools

  1. /**
  2. * Copy contructor.
  3. *
  4. * @param query the query to copy
  5. */
  6. public Query(Query query) {
  7. this(
  8. query.getTypeName(),
  9. query.getNamespace(),
  10. query.getFilter(),
  11. query.getMaxFeatures(),
  12. query.getProperties(),
  13. query.getHandle());
  14. this.sortBy = query.getSortBy();
  15. this.coordinateSystem = query.getCoordinateSystem();
  16. this.coordinateSystemReproject = query.getCoordinateSystemReproject();
  17. this.version = query.getVersion();
  18. this.hints = query.getHints();
  19. this.startIndex = query.getStartIndex();
  20. this.alias = query.getAlias();
  21. this.joins = new ArrayList();
  22. for (Join j : query.getJoins()) {
  23. this.joins.add(new Join(j));
  24. }
  25. }

代码示例来源:origin: geotools/geotools

  1. /**
  2. * Copy contructor, clones the state of a generic Query into a DefaultQuery
  3. *
  4. * @param query
  5. */
  6. public DefaultQuery(Query query) {
  7. this(
  8. query.getTypeName(),
  9. query.getNamespace(),
  10. query.getFilter(),
  11. query.getMaxFeatures(),
  12. query.getProperties(),
  13. query.getHandle());
  14. this.sortBy = query.getSortBy();
  15. this.coordinateSystem = query.getCoordinateSystem();
  16. this.coordinateSystemReproject = query.getCoordinateSystemReproject();
  17. this.version = query.getVersion();
  18. this.hints = query.getHints();
  19. this.startIndex = query.getStartIndex();
  20. this.alias = query.getAlias();
  21. this.joins = query.getJoins();
  22. }
  23. }

代码示例来源:origin: geotools/geotools

  1. public void testJoinViewsWithPlaceHolder() {
  2. Query joinQuery = new Query("riverFullPlaceHolder");
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Join join =
  5. new Join(
  6. "riverFullPlaceHolder",
  7. ff.equal(
  8. ff.property("a." + aname("river")),
  9. ff.property(aname("river")),
  10. false));
  11. join.setAlias("a");
  12. joinQuery.getJoins().add(join);
  13. try {
  14. dataStore.getFeatureSource("riverFullPlaceHolder").getCount(joinQuery);
  15. } catch (Exception exception) {
  16. assertTrue(
  17. exception
  18. .getMessage()
  19. .contains(
  20. "Joins between virtual tables that provide a "
  21. + ":where_placeholder: are not supported"));
  22. return;
  23. }
  24. fail("count query should have fail with an exception");
  25. }

代码示例来源:origin: geotools/geotools

  1. public void testTemporalJoin() throws Exception {
  2. FilterFactory ff = dataStore.getFilterFactory();
  3. After after = ff.after(ff.property(aname("dt")), ff.property("other." + aname("dt")));
  4. Query q = new Query(tname("dates"));
  5. q.getJoins().add(new Join(tname("dates"), after).alias("other"));
  6. q.setSortBy(new SortBy[] {ff.sort(aname("dt"), SortOrder.ASCENDING)});
  7. assertDatesMatch(q, "2009-06-28 15:12:41", "2009-09-29 17:54:23", "2009-09-29 17:54:23");
  8. }

代码示例来源:origin: geotools/geotools

  1. public void testJoinViews() throws Exception {
  2. Query joinQuery = new Query("riverFull");
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Join join =
  5. new Join(
  6. "riverReduced",
  7. ff.equal(
  8. ff.property("a." + aname("river")),
  9. ff.property(aname("river")),
  10. false));
  11. join.setAlias("a");
  12. joinQuery.getJoins().add(join);
  13. // get the two feature sources
  14. ContentFeatureSource fsFull = dataStore.getFeatureSource("riverFull");
  15. ContentFeatureSource fsReduced = dataStore.getFeatureSource("riverReduced");
  16. // check count
  17. int expectedCount = fsReduced.getCount(Query.ALL);
  18. int count = fsFull.getCount(joinQuery);
  19. assertEquals(expectedCount, count);
  20. }

代码示例来源:origin: geotools/geotools

  1. public void testJoinSchema() throws Exception {
  2. FilterFactory ff = dataStore.getFilterFactory();
  3. Query q = new Query(tname("ft1"));
  4. Join join =
  5. new Join(
  6. tname("ftjoin"),
  7. ff.equal(
  8. ff.property(aname("stringProperty")),
  9. ff.property(aname("name")),
  10. true));
  11. join.setAlias("b");
  12. q.getJoins().add(join);
  13. SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
  14. SimpleFeatureType schema = features.getSchema();
  15. AttributeDescriptor ad = schema.getDescriptor("b");
  16. assertNotNull(ad);
  17. assertEquals(SimpleFeature.class, ad.getType().getBinding());
  18. SimpleFeatureType joinedSchema =
  19. (SimpleFeatureType) ad.getUserData().get(ContentDataStore.JOINED_FEATURE_TYPE);
  20. assertEquals(dataStore.getSchema(tname("ftjoin")), joinedSchema);
  21. }

代码示例来源:origin: geotools/geotools

  1. void doTestSimpleJoinWithPostFilter(boolean exposePrimaryKeys) throws Exception {
  2. dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Filter j = ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true);
  5. Query q = new Query(tname("ft1"));
  6. q.getJoins().add(new Join(tname("ftjoin"), j));
  7. q.setFilter(
  8. ff.equal(
  9. ff.function(
  10. "__equals",
  11. ff.property(aname("stringProperty")),
  12. ff.literal("one")),
  13. ff.literal(true),
  14. true));
  15. SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
  16. assertEquals(1, features.size());
  17. // test with post filter on table being joined
  18. q = new Query(tname("ft1"));
  19. Join join = new Join(tname("ftjoin"), j);
  20. join.filter(
  21. ff.equal(
  22. ff.function("__equals", ff.property(aname("name")), ff.literal("one")),
  23. ff.literal(true),
  24. true));
  25. q.getJoins().add(join);
  26. features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
  27. assertEquals(1, features.size());
  28. }

代码示例来源:origin: geotools/geotools

  1. void doTestSimpleJoinWithFilterCount(boolean exposePrimaryKeys) throws Exception {
  2. dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Query q = new Query(tname("ft1"));
  5. Join j =
  6. new Join(
  7. tname("ftjoin"),
  8. ff.equal(
  9. ff.property(aname("stringProperty")),
  10. ff.property(aname("name")),
  11. true));
  12. j.filter(ff.greater(ff.property(aname("join1intProperty")), ff.literal(1)));
  13. q.getJoins().add(j);
  14. q.setFilter(ff.less(ff.property(aname("intProperty")), ff.literal(3)));
  15. assertEquals(1, dataStore.getFeatureSource(tname("ft1")).getCount(q));
  16. }

代码示例来源:origin: geotools/geotools

  1. FilterFactory ff = dataStore.getFilterFactory();
  2. Query q = new Query(tname("ftjoin"));
  3. q.getJoins()
  4. .add(
  5. new Join(
  6. true)));
  7. q.getJoins()
  8. .add(
  9. new Join(

代码示例来源:origin: geotools/geotools

  1. Join join = new Join(tname("ftjoin"), j);
  2. join.setProperties(Query.NO_PROPERTIES);
  3. q.getJoins().add(join);
  4. q.setFilter(
  5. ff.equal(
  6. ff.literal(true),
  7. true));
  8. q.getJoins().add(join);

代码示例来源:origin: geotools/geotools

  1. void doTestOuterJoin(boolean exposePrimaryKeys) throws Exception {
  2. dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Query q = new Query(tname("ftjoin"));
  5. q.getJoins()
  6. .add(
  7. new Join(
  8. tname("ft1"),
  9. ff.equal(
  10. ff.property(aname("name")),
  11. ff.property(aname("stringProperty")),
  12. true))
  13. .type(Type.OUTER));
  14. SimpleFeatureCollection features =
  15. dataStore.getFeatureSource(tname("ftjoin")).getFeatures(q);
  16. assertEquals(
  17. dataStore.getFeatureSource(tname("ftjoin")).getFeatures(q).size(), features.size());
  18. try (SimpleFeatureIterator it = features.features()) {
  19. while (it.hasNext()) {
  20. SimpleFeature f = it.next();
  21. assertEquals(4 + (exposePrimaryKeys ? 1 : 0), f.getAttributeCount());
  22. SimpleFeature g = (SimpleFeature) f.getAttribute(tname("ft1"));
  23. if ("three".equals(f.getAttribute(aname("name")))) {
  24. assertNull(g);
  25. } else {
  26. assertNotNull(g);
  27. }
  28. }
  29. }
  30. }

代码示例来源:origin: geotools/geotools

  1. void doTestSimpleJoinWithFilter(boolean exposePrimaryKeys) throws Exception {
  2. dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Query q = new Query(tname("ft1"));
  5. q.getJoins()
  6. .add(
  7. new Join(
  8. tname("ftjoin"),
  9. ff.equal(
  10. ff.property(aname("stringProperty")),
  11. ff.property(aname("name")),
  12. true)));
  13. q.setFilter(ff.equal(ff.property(aname("stringProperty")), ff.literal("two"), true));
  14. SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
  15. assertEquals(1, features.size());
  16. try (SimpleFeatureIterator it = features.features()) {
  17. SimpleFeature f = it.next();
  18. assertEquals(5 + (exposePrimaryKeys ? 1 : 0), f.getAttributeCount());
  19. assertEquals(2, ((Number) f.getAttribute(aname("intProperty"))).intValue());
  20. assertEquals("two", f.getAttribute(aname("stringProperty")));
  21. SimpleFeature g = (SimpleFeature) f.getAttribute(aname("ftjoin"));
  22. assertEquals(3 + (exposePrimaryKeys ? 1 : 0), g.getAttributeCount());
  23. if (exposePrimaryKeys) {
  24. assertEquals(2, ((Number) g.getAttribute(aname("id"))).intValue());
  25. }
  26. assertEquals("two", g.getAttribute(aname("name")));
  27. }
  28. }

代码示例来源:origin: geotools/geotools

  1. public void doTestSelfJoin(boolean exposePrimaryKeys) throws Exception {
  2. dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Query q = new Query(tname("ft1"));
  5. q.getJoins()
  6. .add(
  7. new Join(
  8. tname("ft1"),
  9. ff.equal(
  10. ff.property(aname("intProperty")),
  11. ff.property(aname("foo.intProperty")),
  12. true))
  13. .alias(aname("foo")));
  14. q.setFilter(ff.equal(ff.property(aname("stringProperty")), ff.literal("two"), true));
  15. SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
  16. assertEquals(1, features.size());
  17. try (SimpleFeatureIterator it = features.features()) {
  18. assertTrue(it.hasNext());
  19. SimpleFeature f = it.next();
  20. assertEquals(5 + (exposePrimaryKeys ? 1 : 0), f.getAttributeCount());
  21. assertEquals(2, ((Number) f.getAttribute(aname("intProperty"))).intValue());
  22. assertEquals("two", f.getAttribute(aname("stringProperty")));
  23. SimpleFeature g = (SimpleFeature) f.getAttribute(aname("foo"));
  24. assertEquals(4 + (exposePrimaryKeys ? 1 : 0), g.getAttributeCount());
  25. assertEquals(2, ((Number) g.getAttribute(aname("intProperty"))).intValue());
  26. assertEquals("two", g.getAttribute(aname("stringProperty")));
  27. }
  28. }

代码示例来源:origin: geotools/geotools

  1. void doTestSimpleJoinWithFilterNoProperties(boolean exposePrimaryKeys) throws Exception {
  2. dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Query q = new Query(tname("ft1"));
  5. Join j =
  6. new Join(
  7. tname("ftjoin"),
  8. ff.equal(
  9. ff.property(aname("stringProperty")),
  10. ff.property(aname("name")),
  11. true));
  12. j.setProperties(Query.NO_PROPERTIES);
  13. q.getJoins().add(j);
  14. q.setFilter(ff.equal(ff.property(aname("stringProperty")), ff.literal("two"), true));
  15. SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
  16. assertEquals(1, features.size());
  17. try (SimpleFeatureIterator it = features.features()) {
  18. SimpleFeature f = it.next();
  19. assertEquals(5 + (exposePrimaryKeys ? 1 : 0), f.getAttributeCount());
  20. assertEquals(2, ((Number) f.getAttribute(aname("intProperty"))).intValue());
  21. assertEquals("two", f.getAttribute(aname("stringProperty")));
  22. SimpleFeature g = (SimpleFeature) f.getAttribute(aname("ftjoin"));
  23. assertEquals(0, g.getAttributeCount());
  24. }
  25. }

代码示例来源:origin: geotools/geotools

  1. void doTestSimpleJoinWithSort(boolean exposePrimaryKeys) throws Exception {
  2. dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Filter j = ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true);
  5. Query q = new Query(tname("ft1"));
  6. q.getJoins().add(new Join(tname("ftjoin"), j));
  7. q.setSortBy(new SortBy[] {ff.sort(aname("intProperty"), SortOrder.DESCENDING)});
  8. SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
  9. try (SimpleFeatureIterator it = features.features()) {
  10. assertTrue(it.hasNext());
  11. assertEquals("two", it.next().getAttribute(aname("stringProperty")));
  12. assertTrue(it.hasNext());
  13. assertEquals("one", it.next().getAttribute(aname("stringProperty")));
  14. assertTrue(it.hasNext());
  15. assertEquals("zero", it.next().getAttribute(aname("stringProperty")));
  16. }
  17. }

代码示例来源:origin: geotools/geotools

  1. void doTestSimpleJoinWithLimitOffset(boolean exposePrimaryKeys) throws Exception {
  2. dataStore.setExposePrimaryKeyColumns(exposePrimaryKeys);
  3. FilterFactory ff = dataStore.getFilterFactory();
  4. Filter j = ff.equal(ff.property(aname("stringProperty")), ff.property(aname("name")), true);
  5. Query q = new Query(tname("ft1"));
  6. q.getJoins().add(new Join(tname("ftjoin"), j));
  7. q.setFilter(ff.greater(ff.property(aname("intProperty")), ff.literal(0)));
  8. q.setStartIndex(1);
  9. q.setSortBy(new SortBy[] {ff.sort(aname("intProperty"), SortOrder.ASCENDING)});
  10. SimpleFeatureCollection features = dataStore.getFeatureSource(tname("ft1")).getFeatures(q);
  11. assertEquals(1, features.size());
  12. try (SimpleFeatureIterator it = features.features()) {
  13. assertTrue(it.hasNext());
  14. SimpleFeature f = it.next();
  15. assertEquals("two", f.getAttribute(aname("stringProperty")));
  16. SimpleFeature g = (SimpleFeature) f.getAttribute(aname("ftjoin"));
  17. assertEquals("two", g.getAttribute(aname("name")));
  18. }
  19. }

代码示例来源:origin: geotools/geotools

  1. q.getJoins()
  2. .add(
  3. new Join(

相关文章