public void testParse() throws Exception {
    FilterMockData.spatial(document, document);

    SpatialOperators spatial = (SpatialOperators) parse(OGC.Spatial_OperatorsType);

    assertNotNull(spatial.getOperator("BBOX"));
    assertNotNull(spatial.getOperator("Equals"));
    assertNotNull(spatial.getOperator("Disjoint"));
    assertNotNull(spatial.getOperator("Intersect"));
    assertNotNull(spatial.getOperator("Touches"));
    assertNotNull(spatial.getOperator("Crosses"));
    assertNotNull(spatial.getOperator("Within"));
    assertNotNull(spatial.getOperator("Contains"));
    assertNotNull(spatial.getOperator("Overlaps"));
    assertNotNull(spatial.getOperator("Beyond"));
    assertNotNull(spatial.getOperator("DWithin"));
  }
Пример #2
0
  /**
   * Ionic's capabilities may state the spatial operator {@code Intersect} instead of {@code
   * Intersects}. If so, we fix that here so intersects is actually recognized as a supported
   * filter.
   */
  @Override
  public Filter[] splitFilters(Capabilities caps, Filter queryFilter) {
    FilterCapabilities filterCapabilities = caps.getContents();
    SpatialCapabilities spatialCapabilities = filterCapabilities.getSpatialCapabilities();
    if (spatialCapabilities != null) {
      SpatialOperators spatialOperators = spatialCapabilities.getSpatialOperators();
      if (spatialOperators != null) {
        SpatialOperator missnamedIntersects = spatialOperators.getOperator("Intersect");
        if (missnamedIntersects != null) {
          LOGGER.fine(
              "Ionic capabilities states the spatial operator Intersect. "
                  + "Assuming it is Intersects and adding Intersects as a "
                  + "supported filter type");
          caps.addName(Intersects.NAME);
        }
      }
    }

    return super.splitFilters(caps, queryFilter);
  }