Search in sources :

Example 1 with TagsFilterDelegate

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;
}
Also used : TagsFilterDelegate(ddf.catalog.filter.delegate.TagsFilterDelegate) SourceResponse(ddf.catalog.operation.SourceResponse) SourceResponseImpl(ddf.catalog.operation.impl.SourceResponseImpl) Result(ddf.catalog.data.Result)

Example 2 with TagsFilterDelegate

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));
}
Also used : Metacard(ddf.catalog.data.Metacard) TagsFilterDelegate(ddf.catalog.filter.delegate.TagsFilterDelegate) QueryRequest(ddf.catalog.operation.QueryRequest) QueryResponse(ddf.catalog.operation.QueryResponse) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 3 with TagsFilterDelegate

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));
}
Also used : TagsFilterDelegate(ddf.catalog.filter.delegate.TagsFilterDelegate) QueryRequest(ddf.catalog.operation.QueryRequest) QueryResponse(ddf.catalog.operation.QueryResponse) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 4 with TagsFilterDelegate

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));
}
Also used : TagsFilterDelegate(ddf.catalog.filter.delegate.TagsFilterDelegate) ArrayList(java.util.ArrayList) FilterAdapter(ddf.catalog.filter.FilterAdapter) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) GeotoolsFilterAdapterImpl(ddf.catalog.filter.proxy.adapter.GeotoolsFilterAdapterImpl) Test(org.junit.Test)

Example 5 with TagsFilterDelegate

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;
}
Also used : QueryImpl(ddf.catalog.operation.impl.QueryImpl) TagsFilterDelegate(ddf.catalog.filter.delegate.TagsFilterDelegate) QueryRequest(ddf.catalog.operation.QueryRequest) Query(ddf.catalog.operation.Query) Filter(org.opengis.filter.Filter) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl) ArrayList(java.util.ArrayList)

Aggregations

TagsFilterDelegate (ddf.catalog.filter.delegate.TagsFilterDelegate)6 QueryRequest (ddf.catalog.operation.QueryRequest)4 ArrayList (java.util.ArrayList)4 Test (org.junit.Test)3 Query (ddf.catalog.operation.Query)2 QueryResponse (ddf.catalog.operation.QueryResponse)2 QueryImpl (ddf.catalog.operation.impl.QueryImpl)2 QueryRequestImpl (ddf.catalog.operation.impl.QueryRequestImpl)2 Filter (org.opengis.filter.Filter)2 Metacard (ddf.catalog.data.Metacard)1 Result (ddf.catalog.data.Result)1 FilterAdapter (ddf.catalog.filter.FilterAdapter)1 GeotoolsFilterAdapterImpl (ddf.catalog.filter.proxy.adapter.GeotoolsFilterAdapterImpl)1 SourceResponse (ddf.catalog.operation.SourceResponse)1 SourceResponseImpl (ddf.catalog.operation.impl.SourceResponseImpl)1 UnsupportedQueryException (ddf.catalog.source.UnsupportedQueryException)1 HashSet (java.util.HashSet)1 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)1