use of ddf.catalog.operation.impl.QueryRequestImpl in project ddf by codice.
the class ResourceCacheService method queryForMetacard.
private Optional<Metacard> queryForMetacard(String metacardId) {
Filter filter = frameworkProperties.getFilterBuilder().attribute(Metacard.ID).is().equalTo().text(metacardId);
QueryRequest queryRequest = new QueryRequestImpl(new QueryImpl(filter), true);
QueryResponse queryResponse = null;
try {
queryResponse = catalogFramework.query(queryRequest);
} catch (UnsupportedQueryException | SourceUnavailableException | FederationException e) {
LOGGER.error("Unable to lookup metacard for metacard id [{}].", metacardId);
return Optional.empty();
}
return queryResponse != null && queryResponse.getResults().size() == 1 ? Optional.of(queryResponse.getResults().get(0).getMetacard()) : Optional.empty();
}
use of ddf.catalog.operation.impl.QueryRequestImpl in project ddf by codice.
the class ValidationQueryFactoryTest method testSearchErrorsAndNotWarnings.
@Test
public void testSearchErrorsAndNotWarnings() throws UnsupportedQueryException {
QueryImpl query = new QueryImpl(filterBuilder.attribute(Metacard.MODIFIED).is().equalTo().text("sample"));
QueryRequest returnQuery = validationQueryFactory.getQueryRequestWithValidationFilter(new QueryRequestImpl(query), true, false);
assertThat(filterAdapter.adapt(returnQuery.getQuery(), testValidationQueryDelegate), is(true));
}
use of ddf.catalog.operation.impl.QueryRequestImpl in project ddf by codice.
the class ValidationQueryFactoryTest method testSearchInvalidAndNotShow.
@Test
public void testSearchInvalidAndNotShow() throws StopProcessingException, PluginExecutionException, UnsupportedQueryException {
QueryImpl query = new QueryImpl(filterBuilder.attribute(Validation.VALIDATION_WARNINGS).is().equalTo().text("sample"));
assertThat(filterAdapter.adapt(query, testValidationQueryDelegate), is(true));
QueryRequest sendQuery = new QueryRequestImpl(query);
QueryRequest returnQuery = validationQueryFactory.getQueryRequestWithValidationFilter(sendQuery, false, false);
assertThat(filterAdapter.adapt(returnQuery.getQuery(), testValidationQueryDelegate), is(true));
assertThat(sendQuery, is(returnQuery));
}
use of ddf.catalog.operation.impl.QueryRequestImpl in project ddf by codice.
the class ValidationQueryFactoryTest method testSearchAnyAndShow.
@Test
public void testSearchAnyAndShow() throws StopProcessingException, PluginExecutionException, UnsupportedQueryException {
QueryImpl query = new QueryImpl(filterBuilder.attribute(Metacard.MODIFIED).is().equalTo().text("sample"));
assertThat(filterAdapter.adapt(query, testValidationQueryDelegate), is(false));
QueryRequest sendQuery = new QueryRequestImpl(query);
QueryRequest returnQuery = validationQueryFactory.getQueryRequestWithValidationFilter(sendQuery, true, true);
assertThat(filterAdapter.adapt(returnQuery.getQuery(), testValidationQueryDelegate), is(false));
assertThat(sendQuery, is(returnQuery));
}
use of ddf.catalog.operation.impl.QueryRequestImpl in project ddf by codice.
the class QueryOperations method doQuery.
/**
* Executes a query using the specified {@link QueryRequest} and {@link FederationStrategy}.
* Based on the isEnterprise and sourceIds list in the query request, the federated query may
* include the local provider and {@link ConnectedSource}s.
*
* @param queryRequest the {@link QueryRequest}
* @param strategy the {@link FederationStrategy}
* @return the {@link QueryResponse}
* @throws FederationException
*/
QueryResponse doQuery(QueryRequest queryRequest, FederationStrategy strategy) throws FederationException {
Set<String> sourceIds = getCombinedIdSet(queryRequest);
LOGGER.debug("source ids: {}", sourceIds);
QuerySources querySources = new QuerySources(frameworkProperties).initializeSources(this, queryRequest, sourceIds).addConnectedSources(this, frameworkProperties).addCatalogProvider(this);
if (querySources.isEmpty()) {
// TODO change to SourceUnavailableException
throw new FederationException("SiteNames could not be resolved due to invalid site names, none of the sites " + "were available, or the current subject doesn't have permission to access the sites.");
}
LOGGER.debug("Calling strategy.federate()");
Query originalQuery = queryRequest.getQuery();
if (originalQuery != null && originalQuery.getTimeoutMillis() <= 0) {
Query modifiedQuery = new QueryImpl(originalQuery, originalQuery.getStartIndex(), originalQuery.getPageSize(), originalQuery.getSortBy(), originalQuery.requestsTotalResultsCount(), queryTimeoutMillis);
queryRequest = new QueryRequestImpl(modifiedQuery, queryRequest.isEnterprise(), queryRequest.getSourceIds(), queryRequest.getProperties());
}
QueryResponse response = strategy.federate(querySources.sourcesToQuery, queryRequest);
frameworkProperties.getQueryResponsePostProcessor().processResponse(response);
return addProcessingDetails(querySources.exceptions, response);
}
Aggregations