LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  March 2015

HPS-SVN March 2015

Subject:

r2429 - in /java/trunk/conditions/src: main/java/org/hps/conditions/api/ main/java/org/hps/conditions/ecal/ test/java/org/hps/conditions/

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Fri, 13 Mar 2015 16:03:41 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (441 lines)

Author: [log in to unmask]
Date: Fri Mar 13 09:03:34 2015
New Revision: 2429

Log:
Add additional sorting functionality to conditions classes.

Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObjectCollection.java
    java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObject.java
    java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectCollection.java
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalBadChannel.java
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCalibration.java
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalChannel.java
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalGain.java
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalLed.java
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalLedCalibration.java
    java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalTimeShift.java
    java/trunk/conditions/src/test/java/org/hps/conditions/EngRunConditionsTest.java

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObjectCollection.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObjectCollection.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObjectCollection.java	Fri Mar 13 09:03:34 2015
@@ -8,6 +8,7 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 
+import org.hps.conditions.api.ConditionsObject.DefaultConditionsObjectComparator;
 import org.hps.conditions.database.DatabaseConditionsManager;
 import org.hps.conditions.database.TableMetaData;
 
@@ -201,7 +202,37 @@
      * @param comparator The comparator to use for the sort.
      * @return A sorted list of the objects.
      */
+    @SuppressWarnings("unchecked")
     public AbstractConditionsObjectCollection<ObjectType> sorted(Comparator<ObjectType> comparator) {
-        throw new UnsupportedOperationException("This method is not implemented.");
+        List<ObjectType> objects = new ArrayList<ObjectType>(this);
+        Collections.sort(objects, comparator);
+        AbstractConditionsObjectCollection<ObjectType> collection = null;
+        try {
+            collection = (AbstractConditionsObjectCollection<ObjectType>) getClass().newInstance();
+        } catch (InstantiationException | IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+        collection.addAll(objects);
+        return collection;
+    }
+    
+    public void sort() {
+        AbstractConditionsObjectCollection<ObjectType> sortedCollection = sorted();
+        this.clear();
+        this.addAll(sortedCollection);
+    }
+    
+    public AbstractConditionsObjectCollection<ObjectType> sorted() {
+        List<ObjectType> objects = new ArrayList<ObjectType>(this);
+        Collections.sort(objects, new DefaultConditionsObjectComparator());
+        AbstractConditionsObjectCollection<ObjectType> collection = null;
+        try {
+            // FIXME: This is kind of ugly.
+            collection = (AbstractConditionsObjectCollection<ObjectType>) getClass().newInstance();
+        } catch (InstantiationException | IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+        collection.addAll(objects);
+        return collection;
     }
 }

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObject.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObject.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObject.java	Fri Mar 13 09:03:34 2015
@@ -1,4 +1,6 @@
 package org.hps.conditions.api;
+
+import java.util.Comparator;
 
 /**
  * This is an ORM interface for accessing conditions database information by
@@ -63,4 +65,16 @@
      * @return True if record is new.
      */
     public boolean isNew();
+    
+    static class DefaultConditionsObjectComparator implements Comparator<ConditionsObject> {
+        public int compare(ConditionsObject o1, ConditionsObject o2) {
+            if (o1.getRowId() < o2.getRowId()) {
+                return -1;
+            } else if (o1.getRowId() > o2.getRowId()) {
+                return 1;
+            } else {
+                return 0;
+            }
+        }        
+    }
 }

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectCollection.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectCollection.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectCollection.java	Fri Mar 13 09:03:34 2015
@@ -68,4 +68,8 @@
      * @return A sorted list of the objects.
      */
     public AbstractConditionsObjectCollection<ObjectType> sorted(Comparator<ObjectType> comparator);
+    
+    public void sort();
+    
+    public AbstractConditionsObjectCollection<ObjectType> sorted();
 }

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalBadChannel.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalBadChannel.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalBadChannel.java	Fri Mar 13 09:03:34 2015
@@ -1,4 +1,6 @@
 package org.hps.conditions.ecal;
+
+import java.util.Comparator;
 
 import org.hps.conditions.api.AbstractConditionsObject;
 import org.hps.conditions.api.AbstractConditionsObjectCollection;
@@ -16,14 +18,30 @@
 public final class EcalBadChannel extends AbstractConditionsObject {
 
     public static class EcalBadChannelCollection extends AbstractConditionsObjectCollection<EcalBadChannel> {
+        
+        public AbstractConditionsObjectCollection<EcalBadChannel> sorted() {
+            return sorted(new ChannelIdComparator());
+        }
+                
+        class ChannelIdComparator implements Comparator<EcalBadChannel> {
+            public int compare(EcalBadChannel o1, EcalBadChannel o2) {
+                if (o1.getChannelId() < o2.getChannelId()) {
+                    return -1;
+                } else if (o1.getChannelId() > o2.getChannelId()) {
+                    return 1;
+                } else {
+                    return 0;
+                }
+            }
+        }        
     }
-
+    
     /**
-     * Get the channel ID of the bad channel.
-     * @return The channel ID of the bad channel.
+     * Get the ECAL channel ID.
+     * @return The ECAL channel ID.
      */
     @Field(names = {"ecal_channel_id"})
     public int getChannelId() {
-        return getFieldValue("ecal_channel_id");
+        return getFieldValue("ecal_channel_id");    
     }
-}
+}

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCalibration.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCalibration.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalCalibration.java	Fri Mar 13 09:03:34 2015
@@ -1,4 +1,6 @@
 package org.hps.conditions.ecal;
+
+import java.util.Comparator;
 
 import org.hps.conditions.api.AbstractConditionsObject;
 import org.hps.conditions.api.AbstractConditionsObjectCollection;
@@ -21,8 +23,24 @@
 public final class EcalCalibration extends AbstractConditionsObject {
 
     public static class EcalCalibrationCollection extends AbstractConditionsObjectCollection<EcalCalibration> {
+        
+        public AbstractConditionsObjectCollection<EcalCalibration> sorted() {
+            return sorted(new ChannelIdComparator());
+        }
+                
+        class ChannelIdComparator implements Comparator<EcalCalibration> {
+            public int compare(EcalCalibration o1, EcalCalibration o2) {
+                if (o1.getChannelId() < o2.getChannelId()) {
+                    return -1;
+                } else if (o1.getChannelId() > o2.getChannelId()) {
+                    return 1;
+                } else {
+                    return 0;
+                }
+            }
+        }
     }
-    
+               
     public EcalCalibration() {
     }
     
@@ -33,12 +51,12 @@
     }
 
     /**
-     * Get the channel ID.
-     * @return The channel ID.
+     * Get the ECAL channel ID.
+     * @return The ECAL channel ID.
      */
     @Field(names = {"ecal_channel_id"})
     public int getChannelId() {
-        return getFieldValue("ecal_channel_id");
+        return getFieldValue("ecal_channel_id");    
     }
 
     /**

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	Fri Mar 13 09:03:34 2015
@@ -1,10 +1,7 @@
 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;
@@ -137,20 +134,6 @@
         }
     }
     
-    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() {
         return new DaqId(new int[] { getCrate(), getSlot(), getChannel() });
     }
@@ -254,16 +237,22 @@
          */
         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;
+        }        
+                   
+        public AbstractConditionsObjectCollection<EcalChannel> sorted() {
+            return sorted(new ChannelIdComparator());
+        }
+            
+        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;
+                }
+            }            
         }
     }
 

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalGain.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalGain.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalGain.java	Fri Mar 13 09:03:34 2015
@@ -1,4 +1,6 @@
 package org.hps.conditions.ecal;
+
+import java.util.Comparator;
 
 import org.hps.conditions.api.AbstractConditionsObject;
 import org.hps.conditions.api.AbstractConditionsObjectCollection;
@@ -17,8 +19,26 @@
 public final class EcalGain extends AbstractConditionsObject {
 
     public static class EcalGainCollection extends AbstractConditionsObjectCollection<EcalGain> {
+        
+        public AbstractConditionsObjectCollection<EcalGain> sorted() {
+            return sorted(new ChannelIdComparator());
+        }
+                
+        class ChannelIdComparator implements Comparator<EcalGain> {
+            public int compare(EcalGain o1, EcalGain o2) {
+                if (o1.getChannelId() < o2.getChannelId()) {
+                    return -1;
+                } else if (o1.getChannelId() > o2.getChannelId()) {
+                    return 1;
+                } else {
+                    return 0;
+                }
+            }
+            
+        }
     }
-
+    
+    
     /**
      * Get the gain value in units of MeV/ADC count.
      * @return The gain value.

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalLed.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalLed.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalLed.java	Fri Mar 13 09:03:34 2015
@@ -1,4 +1,6 @@
 package org.hps.conditions.ecal;
+
+import java.util.Comparator;
 
 import org.hps.conditions.api.AbstractConditionsObject;
 import org.hps.conditions.api.AbstractConditionsObjectCollection;
@@ -6,6 +8,7 @@
 import org.hps.conditions.database.Field;
 import org.hps.conditions.database.MultipleCollectionsAction;
 import org.hps.conditions.database.Table;
+import org.hps.conditions.ecal.EcalGain.EcalGainCollection.ChannelIdComparator;
 
 /**
  * A conditions class for representing the setup of the LED system in the ECAL
@@ -20,6 +23,22 @@
      * Generic collection class for these objects.
      */
     public static class EcalLedCollection extends AbstractConditionsObjectCollection<EcalLed> {
+        public AbstractConditionsObjectCollection<EcalLed> sorted() {
+            return sorted(new ChannelIdComparator());
+        }
+                
+        class ChannelIdComparator implements Comparator<EcalLed> {
+            public int compare(EcalLed o1, EcalLed o2) {
+                if (o1.getEcalChannelId() < o2.getEcalChannelId()) {
+                    return -1;
+                } else if (o1.getEcalChannelId() > o2.getEcalChannelId()) {
+                    return 1;
+                } else {
+                    return 0;
+                }
+            }
+            
+        }
     }
 
     /**

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalLedCalibration.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalLedCalibration.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalLedCalibration.java	Fri Mar 13 09:03:34 2015
@@ -15,6 +15,9 @@
      * Generic collection class for these objects.
      */
     public static class EcalLedCalibrationCollection extends AbstractConditionsObjectCollection<EcalLedCalibration> {
+    }
+    
+    public EcalLedCalibration() {        
     }
     
     public EcalLedCalibration(int channelId, double mean, double rms) {

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalTimeShift.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalTimeShift.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalTimeShift.java	Fri Mar 13 09:03:34 2015
@@ -1,4 +1,6 @@
 package org.hps.conditions.ecal;
+
+import java.util.Comparator;
 
 import org.hps.conditions.api.AbstractConditionsObject;
 import org.hps.conditions.api.AbstractConditionsObjectCollection;
@@ -6,6 +8,7 @@
 import org.hps.conditions.database.Field;
 import org.hps.conditions.database.MultipleCollectionsAction;
 import org.hps.conditions.database.Table;
+import org.hps.conditions.ecal.EcalCalibration.EcalCalibrationCollection.ChannelIdComparator;
 
 /**
  * This class represents a time shift calibration value for an ECAL channel.
@@ -19,6 +22,21 @@
      * A collection of {@link EcalTimeShift} objects.
      */
     public static class EcalTimeShiftCollection extends AbstractConditionsObjectCollection<EcalTimeShift> {
+        public AbstractConditionsObjectCollection<EcalTimeShift> sorted() {
+            return sorted(new ChannelIdComparator());
+        }
+                
+        class ChannelIdComparator implements Comparator<EcalTimeShift> {
+            public int compare(EcalTimeShift o1, EcalTimeShift o2) {
+                if (o1.getChannelId() < o2.getChannelId()) {
+                    return -1;
+                } else if (o1.getChannelId() > o2.getChannelId()) {
+                    return 1;
+                } else {
+                    return 0;
+                }
+            }
+        }
     }
 
     /**

Modified: java/trunk/conditions/src/test/java/org/hps/conditions/EngRunConditionsTest.java
 =============================================================================
--- java/trunk/conditions/src/test/java/org/hps/conditions/EngRunConditionsTest.java	(original)
+++ java/trunk/conditions/src/test/java/org/hps/conditions/EngRunConditionsTest.java	Fri Mar 13 09:03:34 2015
@@ -109,7 +109,7 @@
             
             ecalConditions = conditionsManager.getCachedConditions(EcalConditions.class, "ecal_conditions").getCachedData();
             Set<EcalChannelConstants> channelConstants = new LinkedHashSet<EcalChannelConstants>();
-            for (EcalChannel channel : ecalConditions.getChannelCollection().sortedByChannelId()) {
+            for (EcalChannel channel : ecalConditions.getChannelCollection().sorted()) {
                 channelConstants.add(ecalConditions.getChannelConstants(channel));
             }
             assertEquals("Wrong number of channel constants.", nChannels, channelConstants.size());

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use