/*-
* ============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;
+ }
+ }
}