/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2020 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
* @author Liam Fallon (liam.fallon@est.tech)
*/
@FunctionalInterface
-public interface PfObjectFilter<T extends Comparable<T>> {
+public interface PfObjectFilter<T> {
/**
* Filter an incoming list, removing items that do not match the filter.
*
}
/**
- * Gets a predicate used to filter an item in a list by exactly matching an extracted value
- * with some text.
+ * Gets a predicate used to filter an item in a list by exactly matching an extracted value with some text.
*
* @param text the desired text to check against, or {@code null} if to accept everything
* @param extractor function to extract the value, to be matched, from a list item
}
/**
- * Gets a predicate used to filter an item in a list by comparing the start of an
- * extracted value with a prefix.
+ * Gets a predicate used to filter an item in a list by comparing the start of an extracted value with a prefix.
*
- * @param prefix the desired prefix to check against, or {@code null} if to accept
- * everything
+ * @param prefix the desired prefix to check against, or {@code null} if to accept everything
* @param extractor function to extract the value, to be matched, from a list item
* @return a predicate to match a prefix with a value from a list item
*/
}
/**
- * Gets a predicate used to filter an item in a list by matching an extracted value
- * with a regular expression.
+ * Gets a predicate used to filter an item in a list by matching an extracted value with a regular expression.
*
* @param pattern regular expression to match, or {@code null} if to accept everything
* @param extractor function to extract the value, to be matched, from a list item
* Sort an incoming list and remove all but the latest version of each concept.
*
* @param originalList the incoming list
+ * @param versionComparator the comparator to use to order versions of the incoming object
* @return the filtered list
*/
- public default List<T> latestVersionFilter(final List<T> originalList) {
+ public default List<T> latestVersionFilter(final List<T> originalList, final Comparator<T> versionComparator) {
if (originalList.size() <= 1) {
return originalList;
}
List<T> filteredList = new ArrayList<>(originalList);
- Collections.sort(filteredList);
+ Collections.sort(filteredList, versionComparator);
int icur = 0;
for (int j = 1; j < filteredList.size(); j++) {
* The list is sorted so if the last element name is the same as the current element name, the current
* element should be removed.
*/
- if (!((PfNameVersion) curElement).getName().equals(((PfNameVersion) lastElement).getName())) {
+ if (PfUtils.compareObjects(((PfNameVersion) curElement).getName(),
+ ((PfNameVersion) lastElement).getName()) != 0) {
// have a new name - done comparing with the old "current"
++icur;
}