Author: [log in to unmask]
Date: Mon Dec 15 22:39:18 2014
New Revision: 1744
Log:
Add more sorting methods.
Modified:
java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java
Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java (original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java Mon Dec 15 22:39:18 2014
@@ -4,7 +4,9 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import org.hps.conditions.database.DatabaseConditionsManager;
import org.hps.conditions.database.QueryBuilder;
@@ -20,26 +22,72 @@
public final class ConditionsRecord extends AbstractConditionsObject {
/**
- * The concrete collection implementation including sorting utilities.
+ * The concrete collection implementation, including sorting utilities.
*/
public static class ConditionsRecordCollection extends AbstractConditionsObjectCollection<ConditionsRecord> {
- public List<ConditionsRecord> sortedByUpdated() {
+ /**
+ * Sort using a comparator and leave the original collection unchanged.
+ * @param comparator
+ * @return
+ */
+ public ConditionsRecordCollection sorted(Comparator<ConditionsRecord> comparator) {
List<ConditionsRecord> list = new ArrayList<ConditionsRecord>(this);
- Collections.sort(list, new UpdatedComparator());
- return list;
- }
-
- public List<ConditionsRecord> sortedByCreated() {
+ Collections.sort(list, comparator);
+ ConditionsRecordCollection collection = new ConditionsRecordCollection();
+ collection.addAll(list);
+ return collection;
+ }
+
+ public ConditionsRecordCollection sortedByUpdated() {
+ return sorted(new UpdatedComparator());
+ }
+
+ public ConditionsRecordCollection sortedByCreated() {
+ return sorted(new CreatedComparator());
+ }
+
+ public ConditionsRecordCollection sortedByRunStart() {
+ return sorted(new RunStartComparator());
+ }
+
+ public ConditionsRecordCollection sortedByKey() {
+ return sorted(new KeyComparator());
+ }
+
+ /**
+ * Sort the collection in place.
+ * @param comparator
+ */
+ public void sort(Comparator<ConditionsRecord> comparator) {
List<ConditionsRecord> list = new ArrayList<ConditionsRecord>(this);
- Collections.sort(list, new CreatedComparator());
- return list;
- }
-
- public List<ConditionsRecord> sortedByRunStart() {
- List<ConditionsRecord> list = new ArrayList<ConditionsRecord>(this);
- Collections.sort(list, new RunStartComparator());
- return list;
+ Collections.sort(list, comparator);
+ this.clear();
+ this.addAll(list);
+ }
+
+ public void sortByUpdated() {
+ this.sort(new UpdatedComparator());
+ }
+
+ public void sortByCreated() {
+ sort(new CreatedComparator());
+ }
+
+ public void sortByRunStart() {
+ sort(new RunStartComparator());
+ }
+
+ public void sortByKey() {
+ sort(new KeyComparator());
+ }
+
+ public Set<String> getConditionsKeys() {
+ Set<String> conditionsKeys = new HashSet<String>();
+ for (ConditionsRecord record : this) {
+ conditionsKeys.add(record.getName());
+ }
+ return conditionsKeys;
}
private static class RunStartComparator implements Comparator<ConditionsRecord> {
@@ -80,6 +128,13 @@
}
return 0;
}
+ }
+
+ private static class KeyComparator implements Comparator<ConditionsRecord> {
+ @Override
+ public int compare(ConditionsRecord c1, ConditionsRecord c2) {
+ return c1.getName().compareTo(c2.getName());
+ }
}
}
@@ -213,4 +268,4 @@
buff.append("notes: " + getNotes() + '\n');
return buff.toString();
}
-}
+}
|