Skip to content

Commit

Permalink
switch LidVidUtils.getAllLidVidsByLids to use PdsProductIdentifier ob…
Browse files Browse the repository at this point in the history
…ject parameter
  • Loading branch information
alexdunnjpl committed Dec 4, 2023
1 parent 049aa7a commit acd6c79
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import gov.nasa.pds.api.registry.GroupConstraint;
import gov.nasa.pds.api.registry.ReferencingLogic;
import gov.nasa.pds.api.registry.UserContext;
import gov.nasa.pds.api.registry.model.identifiers.PdsLid;
import gov.nasa.pds.api.registry.model.identifiers.PdsLidVid;
import gov.nasa.pds.api.registry.model.identifiers.PdsProductIdentifier;
import gov.nasa.pds.api.registry.search.QuickSearch;
import org.slf4j.Logger;
Expand Down Expand Up @@ -66,22 +68,23 @@ public RequestAndResponseContext memberOf(ControlContext ctrlContext, UserContex
if (twoSteps)
throw new MembershipException(searchContext.getIdentifier().toString(), "member-of/member-of", "collections");

List<String> parentIds = QuickSearch.getValues(ctrlContext.getConnection(), false, searchContext.getLidVid(), "ops:Provenance/ops:parent_bundle_identifier");
List<String> parentIdStrings = QuickSearch.getValues(ctrlContext.getConnection(), false, searchContext.getLidVid(), "ops:Provenance/ops:parent_bundle_identifier");

// Get all the LIDVID refs, convert the LID refs to LIDVIDs, then add them all together
Set<String> parentLidvids = parentIds.stream().filter(PdsProductIdentifier::stringIsLidvid).collect(Collectors.toSet());
List<String> parentLids = parentIds.stream().filter(PdsProductIdentifier::stringIsLid).collect(Collectors.toList());
List<String> implicitParentLidvids =
// Get all the LIDVID strings, convert the LID strings to LIDVID strings, then add them all together
Set<String> parentLidvidStrings = parentIdStrings.stream().filter(PdsProductIdentifier::stringIsLidvid).collect(Collectors.toSet());
List<PdsLid> parentLids = parentIdStrings.stream().map(PdsLid::fromString).filter(PdsLid::isLid).collect(Collectors.toList());
List<PdsLidVid> implicitParentLidvids =
getAllLidVidsByLids(
ctrlContext,
RequestBuildContextFactory.given(
false, "lid", ReferencingLogicTransmuter.Bundle.impl().constraints()),
parentLids);
parentLidvids.addAll(implicitParentLidvids);
List<String> implicitParentLidvidStrings = implicitParentLidvids.stream().map(PdsLidVid::toString).collect(Collectors.toList());
parentLidvidStrings.addAll(implicitParentLidvidStrings);

GroupConstraint productClassConstraints = ReferencingLogicTransmuter.NonAggregateProduct.impl().constraints();
GroupConstraint parentSelectorConstraint =
GroupConstraintImpl.buildAny(Map.of("_id", new ArrayList<>(parentLidvids)));
GroupConstraintImpl.buildAny(Map.of("_id", new ArrayList<>(parentLidvidStrings)));
productClassConstraints.union(parentSelectorConstraint);

return rrContextFromConstraint(ctrlContext, searchContext, parentSelectorConstraint);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,24 +65,26 @@ public RequestAndResponseContext memberOf(

// Get all the LIDVID refs, resolve the LID refs to all relevant LIDVIDs, then add them all
// together
Set<String> parentLidvids =
Set<String> parentLidvidStrings =
ancestorIdentifiers.stream()
.filter(PdsProductIdentifier::stringIsLidvid)
.collect(Collectors.toSet());
List<String> parentLids =
List<PdsLid> parentLids =
ancestorIdentifiers.stream()
.filter(PdsProductIdentifier::stringIsLid)
.map(PdsLid::fromString)
.filter(PdsLid::isLid)
.collect(Collectors.toList());
List<String> implicitParentLidvids =
List<PdsLidVid> implicitParentLidvids =
getAllLidVidsByLids(
ctrlContext,
RequestBuildContextFactory.given(false, "lid", ancestorClass.impl().constraints()),
parentLids);
parentLidvids.addAll(implicitParentLidvids);
List<String> implicitParentLidvidStrings = implicitParentLidvids.stream().map(PdsLidVid::toString).collect(Collectors.toList());
parentLidvidStrings.addAll(implicitParentLidvidStrings);

GroupConstraint ancestorProductTypeContstraints = ancestorClass.impl().constraints();
GroupConstraint ancestorSelectorConstraint =
GroupConstraintImpl.buildAny(Map.of("_id", new ArrayList<>(parentLidvids)));
GroupConstraintImpl.buildAny(Map.of("_id", new ArrayList<>(parentLidvidStrings)));
ancestorProductTypeContstraints.union(ancestorSelectorConstraint);

return rrContextFromConstraint(ctrlContext, searchContext, ancestorSelectorConstraint);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import gov.nasa.pds.api.registry.model.ProductVersionSelector;
import gov.nasa.pds.api.registry.model.ReferencingLogicTransmuter;
Expand Down Expand Up @@ -66,19 +67,20 @@ public static PdsLidVid getLatestLidVidByLid(ControlContext ctlContext,
throw new LidVidNotFoundException(lid.toString());
}

public static List<String> getAllLidVidsByLids(ControlContext ctlContext,
RequestBuildContext reqContext, Collection<String> lids) throws IOException {
List<String> lidvids = new ArrayList<String>();
public static List<PdsLidVid> getAllLidVidsByLids(ControlContext ctlContext,
RequestBuildContext reqContext, Collection<PdsLid> lids) throws IOException {
List<PdsLidVid> lidvids = new ArrayList<>();

if (0 < lids.size()) {
if (!lids.isEmpty()) {
List<String> lidStrings = lids.stream().map(PdsLid::toString).collect(Collectors.toList());
ctlContext.getConnection().getRestHighLevelClient()
.search(new SearchRequestFactory(
RequestConstructionContextFactory.given("lid", new ArrayList<String>(lids), true),
RequestConstructionContextFactory.given("lid", new ArrayList<>(lidStrings), true),
ctlContext.getConnection()).build(reqContext,
ctlContext.getConnection().getRegistryIndex()),
RequestOptions.DEFAULT)
.getHits().forEach((hit) -> {
lidvids.add(hit.getId());
lidvids.add(PdsLidVid.fromString(hit.getId()));
});
}
return lidvids;
Expand Down

0 comments on commit acd6c79

Please sign in to comment.