Print

Print


Author: [log in to unmask]
Date: Mon Dec 15 15:56:47 2014
New Revision: 1739

Log:
Implement sorting on channel ID.

Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalChannel.java

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalChannel.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalChannel.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalChannel.java	Mon Dec 15 15:56:47 2014
@@ -1,12 +1,15 @@
 package org.hps.conditions.ecal;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.hps.conditions.api.AbstractConditionsObject;
+import org.hps.conditions.api.AbstractConditionsObjectCollection;
 import org.hps.conditions.api.AbstractIdentifier;
-import org.hps.conditions.api.AbstractConditionsObjectCollection;
-import org.hps.conditions.api.ConditionsObjectException;
 import org.lcsim.detector.identifier.ExpandedIdentifier;
 import org.lcsim.detector.identifier.IExpandedIdentifier;
 import org.lcsim.detector.identifier.IIdentifierHelper;
@@ -106,6 +109,20 @@
         public boolean isValid() {
             return id != -1;
         }
+    }
+    
+    private static final class ChannelIdComparator implements Comparator<EcalChannel> {
+        
+        public int compare(EcalChannel c1, EcalChannel c2) {
+            if (c1.getChannelId() < c2.getChannelId()) {
+                return -1;
+            } else if (c1.getChannelId() > c2.getChannelId()) {
+                return 1;
+            } else {
+                return 0;
+            }
+        }
+        
     }
 
     DaqId createDaqId() {
@@ -212,6 +229,16 @@
         public EcalChannel findDaq(long id) {
             return daqMap.get(id);
         }
+        
+        /**
+         * Get a list of channels sorted by channel ID.
+         * @return A list of channels sorted by channel ID.
+         */
+        public List<EcalChannel> sortedByChannelId() {
+            List<EcalChannel> channelList = new ArrayList<EcalChannel>(this);
+            Collections.sort(channelList, new ChannelIdComparator());
+            return channelList;
+        }
     }
 
     /**