use of ddf.catalog.filter.delegate.TagsFilterDelegate in project ddf by codice.
the class RegistryStoreImpl method query.
@Override
public SourceResponse query(QueryRequest request) throws UnsupportedQueryException {
//This is a registry store so only allow registry requests through
if (!filterAdapter.adapt(request.getQuery(), new TagsFilterDelegate(ImmutableSet.of(RegistryConstants.REGISTRY_TAG, RegistryConstants.REGISTRY_TAG_INTERNAL), true))) {
return new SourceResponseImpl(request, Collections.emptyList());
}
SourceResponse registryQueryResponse = super.query(request);
for (Result singleResult : registryQueryResponse.getResults()) {
if (registryId.equals(RegistryUtility.getRegistryId(singleResult.getMetacard()))) {
String metacardTitle = singleResult.getMetacard().getTitle();
if (metacardTitle != null && getId() != null && !getId().equals(getFullRegistryName(metacardTitle))) {
setId(metacardTitle);
updateConfiguration(metacardTitle);
}
break;
}
}
return registryQueryResponse;
}
use of ddf.catalog.filter.delegate.TagsFilterDelegate in project ddf by codice.
the class FederationAdminServiceImplTest method testGetRegistryMetacardsByRegistryIds.
@Test
public void testGetRegistryMetacardsByRegistryIds() throws Exception {
ArgumentCaptor<QueryRequest> captor = ArgumentCaptor.forClass(QueryRequest.class);
QueryRequest request = getTestQueryRequest();
QueryResponse response = getPopulatedTestQueryResponse(request, getTestMetacard(), getTestMetacard(), getTestMetacard());
when(catalogFramework.query(any(QueryRequest.class))).thenReturn(response);
List<String> ids = new ArrayList<>();
ids.add(RegistryObjectMetacardType.REGISTRY_ID);
ids.add(RegistryObjectMetacardType.REGISTRY_ID + "1");
ids.add(RegistryObjectMetacardType.REGISTRY_ID + "2");
List<Metacard> metacards = federationAdminServiceImpl.getRegistryMetacardsByRegistryIds(ids);
assertThat(metacards, hasSize(3));
verify(catalogFramework).query(captor.capture());
assertThat("Filter didn't contain the 'registry' and 'registry-remote' tag", filterAdapter.adapt(captor.getValue().getQuery(), new TagsFilterDelegate(RegistryConstants.REGISTRY_TAG)), is(true));
}
use of ddf.catalog.filter.delegate.TagsFilterDelegate in project ddf by codice.
the class FederationAdminServiceImplTest method testGetRegistryMetacardsByRegistryIdsIncludeInternal.
@Test
public void testGetRegistryMetacardsByRegistryIdsIncludeInternal() throws Exception {
ArgumentCaptor<QueryRequest> captor = ArgumentCaptor.forClass(QueryRequest.class);
QueryRequest request = getTestQueryRequest();
QueryResponse response = getPopulatedTestQueryResponse(request, getTestMetacard());
when(catalogFramework.query(any(QueryRequest.class))).thenReturn(response);
List<String> ids = new ArrayList<>();
ids.add(RegistryObjectMetacardType.REGISTRY_ID);
federationAdminServiceImpl.getRegistryMetacardsByRegistryIds(ids, true);
verify(catalogFramework).query(captor.capture());
HashSet<String> tags = new HashSet<>();
tags.add(RegistryConstants.REGISTRY_TAG);
tags.add(RegistryConstants.REGISTRY_TAG_INTERNAL);
assertThat("Filter didn't contain the 'registry' and 'registry-remote' tag", filterAdapter.adapt(captor.getValue().getQuery(), new TagsFilterDelegate(tags)), is(true));
}
use of ddf.catalog.filter.delegate.TagsFilterDelegate in project ddf by codice.
the class CswQueryFactoryTest method testQueryTags.
@Test
public void testQueryTags() throws Exception {
queryFactory.setSchemaToTagsMapping(new String[] { CswConstants.CSW_OUTPUT_SCHEMA + "=myTag" });
List<String> ids = new ArrayList<>();
ids.add("someId");
FilterAdapter adapter = new GeotoolsFilterAdapterImpl();
assertThat(adapter.adapt(queryFactory.updateQueryRequestTags(queryFactory.getQueryById(ids), CswConstants.CSW_OUTPUT_SCHEMA).getQuery(), new TagsFilterDelegate("myTag")), is(true));
}
use of ddf.catalog.filter.delegate.TagsFilterDelegate in project ddf by codice.
the class CswQueryFactory method updateQueryRequestTags.
public QueryRequest updateQueryRequestTags(QueryRequest queryRequest, String schema) throws UnsupportedQueryException {
QueryRequest newRequest = queryRequest;
Set<String> tags = schemaToTagsMapping.get(schema);
if (CollectionUtils.isEmpty(tags)) {
return queryRequest;
}
Query origQuery = queryRequest.getQuery();
if (!adapter.adapt(queryRequest.getQuery(), new TagsFilterDelegate(tags, true))) {
List<Filter> filters = new ArrayList<>(tags.size());
for (String tag : tags) {
filters.add(builder.attribute(Core.METACARD_TAGS).is().like().text(tag));
}
QueryImpl newQuery = new QueryImpl(builder.allOf(builder.anyOf(filters), origQuery), origQuery.getStartIndex(), origQuery.getPageSize(), origQuery.getSortBy(), origQuery.requestsTotalResultsCount(), origQuery.getTimeoutMillis());
newRequest = new QueryRequestImpl(newQuery, queryRequest.isEnterprise(), queryRequest.getSourceIds(), queryRequest.getProperties());
}
return newRequest;
}
Aggregations