@Override protected boolean isSupported(final Index index, final GeotoolsFeatureDataAdapter adapter) { return IndexOptimizationUtils.hasTime(index, adapter) && IndexOptimizationUtils.hasAtLeastSpatial(index); }
@Override public QueryConstraints createQueryConstraints( final DataTypeAdapter<?> adapter, final Index index) { final GeotoolsFeatureDataAdapter gtAdapter = IndexOptimizationUtils.unwrapGeotoolsFeatureDataAdapter(adapter); if (gtAdapter != null) { return createOptimalQuery(filter, gtAdapter, index); } LOGGER.error("Adapter is not a geotools feature adapter. Cannot apply CQL filter."); return null; }
@Override protected boolean isSupported(final Index index, final GeotoolsFeatureDataAdapter adapter) { return IndexOptimizationUtils.hasTime(index, adapter); }
@Override protected boolean isSupported(final Index index, final GeotoolsFeatureDataAdapter adapter) { return IndexOptimizationUtils.hasAtLeastSpatial(index); }
public static boolean hasTime(final Index index, final GeotoolsFeatureDataAdapter adapter) { return hasTime(index) && adapter.hasTemporalConstraints(); }
@Override protected boolean isCommonIndex(final Index index, final GeotoolsFeatureDataAdapter adapter) { return fieldNameParam.getFieldName().equals( adapter.getFeatureType().getGeometryDescriptor().getLocalName()) && IndexOptimizationUtils.hasAtLeastSpatial(index); }
final boolean isSpatial = IndexOptimizationUtils.hasAtLeastSpatial(index); final boolean isTemporal = IndexOptimizationUtils.hasTime(index, adapter); if (isSpatial) { final String geomName = adapter.getFeatureType().getGeometryDescriptor().getLocalName();
public static GeotoolsFeatureDataAdapter unwrapGeotoolsFeatureDataAdapter( final DataTypeAdapter<?> adapter) { if (adapter instanceof InternalDataAdapter) { return unwrapGeotoolsFeatureDataAdapter(((InternalDataAdapter) adapter).getAdapter()); } else if (adapter instanceof GeotoolsFeatureDataAdapter) { return (GeotoolsFeatureDataAdapter) adapter; } return null; }
@Override protected boolean isCommonIndex(final Index index, final GeotoolsFeatureDataAdapter adapter) { // because field name param doesn't allow for multiple, ranges cannot be // set, field name param can be null in which case it can use a range, // or if field name is non-nul it must use a timestamp return ((fieldNameParam == null) || ((adapter.getTimeDescriptors().getTime() != null) && fieldNameParam.getFieldName().equals( adapter.getTimeDescriptors().getTime().getLocalName()))) && IndexOptimizationUtils.hasTime(index, adapter); }
@Override public QueryConstraints createQueryConstraints( final DataTypeAdapter<?> adapter, final Index index) { final GeotoolsFeatureDataAdapter gtAdapter = IndexOptimizationUtils.unwrapGeotoolsFeatureDataAdapter(adapter); if (gtAdapter != null) { if (!isSupported(index, gtAdapter)) { return new ExplicitCQLQuery(delegateConstraints, getFilter(gtAdapter), gtAdapter); } } // otherwise just unwrap this return delegateConstraints; }