From cd4b02ba2ff8b18b20cee6a246984e4bd96671df Mon Sep 17 00:00:00 2001 From: Jeremy Long Date: Thu, 11 Apr 2013 06:05:58 -0400 Subject: [PATCH] Implemented the Comparable interface Former-commit-id: 306cee400d6cc08ff2a61cd45019c3df8f223a29 --- .../dependencycheck/dependency/Evidence.java | 27 ++++++++++++++++++- .../dependency/EvidenceCollection.java | 3 ++- .../dependency/Identifier.java | 12 ++++++++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/owasp/dependencycheck/dependency/Evidence.java b/src/main/java/org/owasp/dependencycheck/dependency/Evidence.java index a7c094ff4..fd90bfbc9 100644 --- a/src/main/java/org/owasp/dependencycheck/dependency/Evidence.java +++ b/src/main/java/org/owasp/dependencycheck/dependency/Evidence.java @@ -23,7 +23,7 @@ package org.owasp.dependencycheck.dependency; * * @author Jeremy Long (jeremy.long@gmail.com) */ -public class Evidence { +public class Evidence implements Comparable { /** * The confidence that the evidence is "high" quality. @@ -222,4 +222,29 @@ public class Evidence { private boolean testEquality(String l, String r) { return l == null ? r == null : l.equalsIgnoreCase(r); } + + /** + * Implementation of the comparable interface. + * @param o the evidence being compared + * @return an integer indicating the ordering of the two objects + */ + public int compareTo(Evidence o) { + if (source.equals(o.source)) { + if (name.equals(o.name)) { + if (value.equals(o.value)) { + if (confidence.equals(o.confidence)) { + return 0; //they are equal + } else { + return confidence.compareTo(o.confidence); + } + } else { + return value.compareToIgnoreCase(o.value); + } + } else { + return name.compareToIgnoreCase(o.name); + } + } else { + return source.compareToIgnoreCase(o.source); + } + } } diff --git a/src/main/java/org/owasp/dependencycheck/dependency/EvidenceCollection.java b/src/main/java/org/owasp/dependencycheck/dependency/EvidenceCollection.java index c1deb553c..03ad3b3fd 100644 --- a/src/main/java/org/owasp/dependencycheck/dependency/EvidenceCollection.java +++ b/src/main/java/org/owasp/dependencycheck/dependency/EvidenceCollection.java @@ -21,6 +21,7 @@ package org.owasp.dependencycheck.dependency; import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.TreeSet; import org.owasp.dependencycheck.utils.Filter; /** @@ -103,7 +104,7 @@ public class EvidenceCollection implements Iterable { * Creates a new EvidenceCollection. */ public EvidenceCollection() { - list = new HashSet(); + list = new TreeSet(); weightedStrings = new HashSet(); } diff --git a/src/main/java/org/owasp/dependencycheck/dependency/Identifier.java b/src/main/java/org/owasp/dependencycheck/dependency/Identifier.java index 6261661b2..5a1e37ffd 100644 --- a/src/main/java/org/owasp/dependencycheck/dependency/Identifier.java +++ b/src/main/java/org/owasp/dependencycheck/dependency/Identifier.java @@ -22,7 +22,7 @@ package org.owasp.dependencycheck.dependency; * * @author Jeremy Long (jeremy.long@gmail.com) */ -public class Identifier { +public class Identifier implements Comparable { /** * Constructs a new Identifier with the specified data. @@ -165,4 +165,14 @@ public class Identifier { return hash; } + /** + * Implementation of the comparator interface. This compares the + * value of the identifier only. + * + * @param o the object being compared + * @return an integer indicating the ordering + */ + public int compareTo(Identifier o) { + return this.value.compareTo(o.value); + } }