aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main
diff options
context:
space:
mode:
authorIttay Stern <ittay.stern@att.com>2020-02-20 09:45:11 +0200
committerIttay Stern <ittay.stern@att.com>2020-02-20 09:45:11 +0200
commita5ba6b59e4fc84b6aeae456c1860fcf7517e99cf (patch)
treedbdbb4ecc348dea544ea8b2a041015de64d3c838 /vid-app-common/src/main
parent22f7a0c20eb189380411df2e99928f701cc8a53f (diff)
Learn to get all model versions sorted from high to low
Issue-ID: VID-771 Change-Id: I9c7cc3f319aa13a2dab33e8c584f7f7ed90cf847 Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-app-common/src/main')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java25
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java2
2 files changed, 22 insertions, 5 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
index 78164462c..e25fa8574 100644
--- a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
@@ -44,6 +44,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.function.Function;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.inject.Inject;
import javax.ws.rs.WebApplicationException;
@@ -490,6 +491,15 @@ public class AaiClient implements AaiClientInterface {
@Override
public ModelVer getLatestVersionByInvariantId(String modelInvariantId) {
+ return maxModelVer(getAllVersionsByInvariantId(modelInvariantId));
+ }
+
+ @Override
+ public List<ModelVer> getSortedVersionsByInvariantId(String modelInvariantId) {
+ return sortedModelVer(getAllVersionsByInvariantId(modelInvariantId));
+ }
+
+ private Stream<ModelVer> getAllVersionsByInvariantId(String modelInvariantId) {
if (modelInvariantId.isEmpty()) {
throw new GenericUncheckedException("no invariant-id provided to getLatestVersionByInvariantId; request is rejected");
}
@@ -497,17 +507,13 @@ public class AaiClient implements AaiClientInterface {
Response response = doAaiPut("query?format=resource&depth=0", "{\"start\": [\"service-design-and-creation/models/model/" + modelInvariantId + "\"],\"query\": \"query/serviceModels-byDistributionStatus?distributionStatus=DISTRIBUTION_COMPLETE_OK\"}",false);
AaiResponse<ModelVersions> aaiResponse = processAaiResponse(response, ModelVersions.class, null, VidObjectMapperType.FASTERXML);
- Stream<ModelVer> modelVerStream = toModelVerStream(aaiResponse.getT());
- return maxModelVer(modelVerStream);
+ return toModelVerStream(aaiResponse.getT());
}
protected Stream<ModelVer> toModelVerStream(ModelVersions modelVersions) {
if (modelVersions == null)
return null;
- if (modelVersions == null)
- return null;
-
return Stream.of(modelVersions)
.map(ModelVersions::getResults)
.flatMap(java.util.Collection::stream)
@@ -527,6 +533,15 @@ public class AaiClient implements AaiClientInterface {
.orElseThrow(() -> new GenericUncheckedException("Could not find any version"));
}
+ protected List<ModelVer> sortedModelVer(Stream<ModelVer> modelVerStream) {
+ if (modelVerStream == null)
+ return emptyList();
+
+ return modelVerStream
+ .sorted(comparing(ModelVer::getModelVersion, comparing(DefaultArtifactVersion::new)).reversed())
+ .collect(Collectors.toList());
+ }
+
@Override
public AaiResponse<Services> getSubscriberData(String subscriberId, boolean omitServiceInstances) {
String depth = omitServiceInstances ? "1" : "2";
diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java
index b4b908cc3..c322afa22 100644
--- a/vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java
+++ b/vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java
@@ -77,6 +77,8 @@ public interface AaiClientInterface extends ProbeInterface {
ModelVer getLatestVersionByInvariantId(String modelInvariantId);
+ List<ModelVer> getSortedVersionsByInvariantId(String modelInvariantId);
+
AaiResponse<ProjectResponse> getServicesByProjectNames(List<String> projectNames);
AaiResponse getServiceModelsByDistributionStatus();