Make filters on TOSCA entities generic
[policy/models.git] / models-tosca / src / main / java / org / onap / policy / models / tosca / authorative / concepts / ToscaTypedEntityFilter.java
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019-2020 Nordix Foundation.
+ *  Copyright (C) 2019-2021 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,7 +35,7 @@ import org.onap.policy.models.base.PfObjectFilter;
  */
 @Builder
 @Data
-public class ToscaPolicyFilter implements PfObjectFilter<ToscaPolicy> {
+public class ToscaTypedEntityFilter<T extends ToscaEntity> implements PfObjectFilter<T> {
     public static final String LATEST_VERSION = "LATEST";
 
     // Exact expression
@@ -54,20 +54,20 @@ public class ToscaPolicyFilter implements PfObjectFilter<ToscaPolicy> {
     private String typeVersion;
 
     @Override
-    public List<ToscaPolicy> filter(@NonNull final List<ToscaPolicy> originalList) {
+    public List<T> filter(@NonNull final List<T> originalList) {
 
         // @formatter:off
-        List<ToscaPolicy> returnList = originalList.stream()
-                .filter(filterStringPred(name, ToscaPolicy::getName))
-                .filter(filterStringPred((LATEST_VERSION.equals(version) ? null : version), ToscaPolicy::getVersion))
-                .filter(filterPrefixPred(versionPrefix, ToscaPolicy::getVersion))
-                .filter(filterStringPred(type, ToscaPolicy::getType))
-                .filter(filterStringPred(typeVersion, ToscaPolicy::getTypeVersion))
+        List<T> returnList = originalList.stream()
+                .filter(filterStringPred(name, T::getName))
+                .filter(filterStringPred((LATEST_VERSION.equals(version) ? null : version), T::getVersion))
+                .filter(filterPrefixPred(versionPrefix, T::getVersion))
+                .filter(filterStringPred(type, T::getType))
+                .filter(filterStringPred(typeVersion, T::getTypeVersion))
                 .collect(Collectors.toList());
         // @formatter:off
 
         if (LATEST_VERSION.equals(version)) {
-            return this.latestVersionFilter(returnList, new ToscaPolicyComparator());
+            return this.latestVersionFilter(returnList, new ToscaEntityComparator<T>());
         } else  {
             return returnList;
         }