Add extra authorative TOSCA concepts
[policy/models.git] / models-tosca / src / main / java / org / onap / policy / models / tosca / authorative / concepts / ToscaPolicyTypeFilter.java
index a77e185..4e9810b 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.models.tosca.authorative.concepts;
 
+import java.util.List;
+import java.util.stream.Collectors;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NonNull;
+import org.onap.policy.models.base.PfObjectFilter;
+
 /**
- * Filter class for searches for {@link ToscaPolicyType} instances.
+ * Filter class for searches for {@link ToscaPolicyType} instances. If any fields are null, they are ignored.
  *
  * @author Liam Fallon (liam.fallon@est.tech)
  */
-public class ToscaPolicyTypeFilter {
+@Builder
+@Data
+public class ToscaPolicyTypeFilter implements PfObjectFilter<ToscaPolicyType> {
+    public static final String LATEST_VERSION = "LATEST";
+
+    // Regular expression
+    private String name;
+
+    // Regular Expression, set to LATEST_VERRSION to get the latest version
+    private String version;
+
+    @Override
+    public List<ToscaPolicyType> filter(@NonNull final List<ToscaPolicyType> originalList) {
+
+        // @formatter:off
+        List<ToscaPolicyType> returnList = originalList.stream()
+                .filter(p -> filterString(p.getName(), name))
+                .filter(p -> LATEST_VERSION.equals(version)
+                        || filterString(p.getVersion(), version))
+                .collect(Collectors.toList());
+        // @formatter:off
 
+        if (LATEST_VERSION.equals(version)) {
+            return this.latestVersionFilter(returnList, new ToscaPolicyTypeComparator());
+        } else  {
+            return returnList;
+        }
+    }
 }