Learn to get all model versions sorted from high to low
[vid.git] / vid-app-common / src / main / java / org / onap / vid / aai / AaiClient.java
index 7816446..e25fa85 100644 (file)
@@ -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";