Search in sources :

Example 16 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class CqlRequest method createQueryRequest.

public QueryRequest createQueryRequest(String localSource, FilterBuilder filterBuilder) {
    Query query = new QueryImpl(createFilter(filterBuilder), start, count, parseSort(sort), true, timeout);
    String source = parseSrc(localSource);
    QueryRequest queryRequest;
    if (CACHE_SOURCE.equals(source)) {
        queryRequest = new QueryRequestImpl(query, true);
        queryRequest.getProperties().put("mode", "cache");
    } else {
        queryRequest = new QueryRequestImpl(query, Collections.singleton(source));
        queryRequest.getProperties().put("mode", "update");
    }
    return queryRequest;
}
Also used : QueryImpl(ddf.catalog.operation.impl.QueryImpl) Query(ddf.catalog.operation.Query) QueryRequest(ddf.catalog.operation.QueryRequest) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl)

Example 17 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class CatalogFrameworkImplTest method testPreQueryStopExecution.

@Test(expected = FederationException.class)
public void testPreQueryStopExecution() throws UnsupportedQueryException, FederationException, SourceUnavailableException {
    MockMemoryProvider provider = new MockMemoryProvider("Provider", "Provider", "v1.0", "DDF", new HashSet<ContentType>(), true, new Date());
    FederationStrategy federationStrategy = mock(FederationStrategy.class);
    QueryRequest request = mock(QueryRequest.class);
    when(request.getQuery()).thenReturn(mock(Query.class));
    PreQueryPlugin stopQueryPlugin = new PreQueryPlugin() {

        @Override
        public QueryRequest process(QueryRequest input) throws PluginExecutionException, StopProcessingException {
            throw new StopProcessingException("Testing that the framework will stop the query.");
        }
    };
    FrameworkProperties frameworkProperties = new FrameworkProperties();
    frameworkProperties.setPreQuery(Arrays.asList(stopQueryPlugin));
    frameworkProperties.setFederationStrategy(federationStrategy);
    frameworkProperties.setCatalogProviders(Collections.singletonList(provider));
    CatalogFrameworkImpl framework = createFramework(frameworkProperties);
    framework.query(request);
}
Also used : ContentType(ddf.catalog.data.ContentType) QueryRequest(ddf.catalog.operation.QueryRequest) Query(ddf.catalog.operation.Query) FederationStrategy(ddf.catalog.federation.FederationStrategy) PreQueryPlugin(ddf.catalog.plugin.PreQueryPlugin) StopProcessingException(ddf.catalog.plugin.StopProcessingException) Date(java.util.Date) Test(org.junit.Test)

Example 18 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class TagsFilterQueryPluginTest method setup.

@Before
public void setup() {
    CatalogProvider catProvider1 = mock(CatalogProvider.class);
    CatalogProvider catProvider2 = mock(CatalogProvider.class);
    CatalogProvider catProvider3 = mock(CatalogProvider.class);
    when(catProvider1.getId()).thenReturn("cat1");
    when(catProvider2.getId()).thenReturn("cat2");
    when(catProvider3.getId()).thenReturn("cat3");
    ImmutableList<CatalogProvider> catalogProviders = ImmutableList.of(catProvider1, catProvider2, catProvider3);
    filterAdapter = mock(FilterAdapter.class);
    filterBuilder = mock(FilterBuilder.class);
    plugin = new TagsFilterQueryPlugin(catalogProviders, filterAdapter, filterBuilder);
    source = mock(CatalogProvider.class);
    when(source.getId()).thenReturn("cat2");
    cache = mock(SourceCache.class);
    when(cache.getId()).thenReturn("cache");
    queryRequest = mock(QueryRequest.class);
    query = mock(Query.class);
    when(queryRequest.getQuery()).thenReturn(query);
}
Also used : QueryRequest(ddf.catalog.operation.QueryRequest) Query(ddf.catalog.operation.Query) CatalogProvider(ddf.catalog.source.CatalogProvider) FilterBuilder(ddf.catalog.filter.FilterBuilder) FilterAdapter(ddf.catalog.filter.FilterAdapter) SourceCache(ddf.catalog.source.SourceCache) Before(org.junit.Before)

Example 19 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class OpenSearchSource method query.

@Override
public SourceResponse query(QueryRequest queryRequest) throws UnsupportedQueryException {
    String methodName = "query";
    LOGGER.trace(methodName);
    final SourceResponse response;
    Subject subject = null;
    if (queryRequest.hasProperties()) {
        Object subjectObj = queryRequest.getProperties().get(SecurityConstants.SECURITY_SUBJECT);
        subject = (Subject) subjectObj;
    }
    Query query = queryRequest.getQuery();
    if (LOGGER.isTraceEnabled()) {
        LOGGER.trace("Received query: {}", query);
        FilterTransformer transform = new FilterTransformer();
        transform.setIndentation(2);
        try {
            LOGGER.trace(transform.transform(query));
        } catch (TransformerException e) {
            LOGGER.debug("Error transforming query to XML", e);
        }
    }
    final OpenSearchFilterVisitorObject openSearchFilterVisitorObject = (OpenSearchFilterVisitorObject) query.accept(openSearchFilterVisitor, new OpenSearchFilterVisitorObject());
    final ContextualSearch contextualSearch = openSearchFilterVisitorObject.getContextualSearch();
    final SpatialSearch spatialSearch = createCombinedSpatialSearch(openSearchFilterVisitorObject.getPointRadiusSearches(), openSearchFilterVisitorObject.getGeometrySearches(), numMultiPointRadiusVertices, distanceTolerance);
    final TemporalFilter temporalSearch = openSearchFilterVisitorObject.getTemporalSearch();
    final String idSearch = StringUtils.defaultIfEmpty((String) queryRequest.getPropertyValue(Metacard.ID), openSearchFilterVisitorObject.getId());
    final Map<String, String> searchPhraseMap = contextualSearch == null ? new HashMap<>() : contextualSearch.getSearchPhraseMap();
    // specified.
    if (MapUtils.isNotEmpty(searchPhraseMap) || spatialSearch != null || temporalSearch != null) {
        if (StringUtils.isNotEmpty(idSearch)) {
            LOGGER.debug("Ignoring the id search {}. Querying the source with the keyword, temporal, and/or spatial OpenSearch parameters", idSearch);
        }
        final WebClient restWebClient = factory.getWebClientForSubject(subject);
        if (restWebClient == null) {
            throw new UnsupportedQueryException(UNABLE_TO_CREATE_RWC);
        }
        response = doOpenSearchQuery(queryRequest, subject, spatialSearch, temporalSearch, searchPhraseMap, restWebClient);
    } else if (StringUtils.isNotEmpty(idSearch)) {
        final WebClient restWebClient;
        try {
            restWebClient = newRestClient(query, idSearch, false, subject);
        } catch (URISyntaxException e) {
            throw new UnsupportedQueryException(UNABLE_TO_CREATE_RWC, e);
        }
        if (restWebClient == null) {
            throw new UnsupportedQueryException(UNABLE_TO_CREATE_RWC);
        }
        response = doQueryById(queryRequest, restWebClient);
    } else {
        LOGGER.debug("The OpenSearch Source only supports id searches or searches with certain keyword, \"{}\" temporal, or \"{}\" spatial criteria, but the query was {}. See the documentation for more details about supported searches.", OpenSearchConstants.SUPPORTED_TEMPORAL_SEARCH_TERM, OpenSearchConstants.SUPPORTED_SPATIAL_SEARCH_TERM, query);
        throw new UnsupportedQueryException("OpenSearch query parameters could not be created from the query criteria.");
    }
    setSourceId(response);
    LOGGER.trace(methodName);
    return response;
}
Also used : TemporalFilter(ddf.catalog.impl.filter.TemporalFilter) SourceResponse(ddf.catalog.operation.SourceResponse) Query(ddf.catalog.operation.Query) UnsupportedQueryException(ddf.catalog.source.UnsupportedQueryException) URISyntaxException(java.net.URISyntaxException) WebClient(org.apache.cxf.jaxrs.client.WebClient) Subject(ddf.security.Subject) FilterTransformer(org.geotools.filter.FilterTransformer) CatalogTransformerException(ddf.catalog.transform.CatalogTransformerException) TransformerException(javax.xml.transform.TransformerException)

Example 20 with Query

use of ddf.catalog.operation.Query in project ddf by codice.

the class OpenSearchParserImplTest method populateSearchOptionsWithSubject.

@Test
public void populateSearchOptionsWithSubject() {
    SortBy sortBy = new SortByImpl(Result.TEMPORAL, SortOrder.DESCENDING);
    Filter filter = mock(Filter.class);
    Query query = new QueryImpl(filter, 0, 2000, sortBy, true, 30000);
    QueryRequest queryRequest = new QueryRequestImpl(query);
    String principalName = "principalName";
    Subject subject = getMockSubject(principalName);
    openSearchParser.populateSearchOptions(webClient, queryRequest, subject, Arrays.asList("q,src,mr,start,count,mt,dn,lat,lon,radius,bbox,polygon,dtstart,dtend,dateName,filter,sort".split(",")));
    assertQueryParameterPopulated(OpenSearchConstants.COUNT);
    assertQueryParameterPopulated(OpenSearchConstants.MAX_RESULTS, MAX_RESULTS);
    assertQueryParameterPopulated(OpenSearchConstants.MAX_TIMEOUT, TIMEOUT);
    assertQueryParameterPopulated(OpenSearchParserImpl.USER_DN, principalName);
    assertQueryParameterPopulated(OpenSearchConstants.SORT, DESCENDING_TEMPORAL_SORT);
}
Also used : QueryImpl(ddf.catalog.operation.impl.QueryImpl) Query(ddf.catalog.operation.Query) QueryRequest(ddf.catalog.operation.QueryRequest) SortByImpl(ddf.catalog.filter.impl.SortByImpl) TemporalFilter(ddf.catalog.impl.filter.TemporalFilter) Filter(org.opengis.filter.Filter) SortBy(org.opengis.filter.sort.SortBy) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl) Subject(ddf.security.Subject) Test(org.junit.Test)

Aggregations

Query (ddf.catalog.operation.Query)104 QueryImpl (ddf.catalog.operation.impl.QueryImpl)69 QueryRequest (ddf.catalog.operation.QueryRequest)67 QueryRequestImpl (ddf.catalog.operation.impl.QueryRequestImpl)60 Test (org.junit.Test)45 Filter (org.opengis.filter.Filter)40 SourceResponse (ddf.catalog.operation.SourceResponse)31 ArrayList (java.util.ArrayList)23 SortBy (org.opengis.filter.sort.SortBy)23 UnsupportedQueryException (ddf.catalog.source.UnsupportedQueryException)22 Result (ddf.catalog.data.Result)19 HashMap (java.util.HashMap)18 QueryResponse (ddf.catalog.operation.QueryResponse)16 Serializable (java.io.Serializable)16 Metacard (ddf.catalog.data.Metacard)14 QueryResponseImpl (ddf.catalog.operation.impl.QueryResponseImpl)12 Source (ddf.catalog.source.Source)11 Map (java.util.Map)11 FederationException (ddf.catalog.federation.FederationException)10 TemporalFilter (ddf.catalog.impl.filter.TemporalFilter)10