Author: [log in to unmask] Date: Wed Dec 10 19:18:35 2014 New Revision: 1685 Log: Modify the conditions API by adding a better base type for object collections. (This required touching a lot of code that used the objects from these collections.) Added: java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObjectCollection.java - copied, changed from r1678, java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectCollection.java Removed: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectCollection.java Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectException.java java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsSeries.java java/trunk/conditions/src/main/java/org/hps/conditions/beam/BeamCurrent.java java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsObjectConverter.java java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsRecordConverter.java java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsSeriesConverter.java java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java java/trunk/conditions/src/main/java/org/hps/conditions/database/TableMetaData.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/EcalConditions.java java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalConditionsConverter.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/EcalTimeShift.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtChannel.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditions.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditionsConverter.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtDaqMapping.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtT0Shift.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtAlignmentConstant.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBadChannel.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtCalibration.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtChannel.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConditions.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfiguration.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtDaqMapping.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtDetectorSetup.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtGain.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtShapeFitParameters.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtT0Shift.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtChannel.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtConditions.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtDaqMapping.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtDetectorSetup.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtT0Shift.java java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsObjectTest.java java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalCalibrationsDriver.java Copied: java/trunk/conditions/src/main/java/org/hps/conditions/api/AbstractConditionsObjectCollection.java (from r1678, 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/AbstractConditionsObjectCollection.java Wed Dec 10 19:18:35 2014 @@ -1,65 +1,57 @@ package org.hps.conditions.api; import java.sql.SQLException; -import java.util.Collections; -import java.util.Iterator; import java.util.LinkedHashSet; -import java.util.Set; import org.hps.conditions.database.DatabaseConditionsManager; import org.hps.conditions.database.TableMetaData; -public class ConditionsObjectCollection<ObjectType extends ConditionsObject> implements Iterable<ObjectType> { +public class AbstractConditionsObjectCollection<ObjectType extends ConditionsObject> extends LinkedHashSet<ObjectType> { - protected Set<ObjectType> objects = new LinkedHashSet<ObjectType>(); - protected TableMetaData tableMetaData; + protected TableMetaData tableMetaData = null; protected int collectionId = -1; - protected ConditionsRecord conditionsRecord; - - protected ConditionsObjectCollection() { + protected ConditionsRecord conditionsRecord = null; + + public AbstractConditionsObjectCollection() { } - - public ConditionsObjectCollection(TableMetaData tableMetaData, int collectionId) { + + public AbstractConditionsObjectCollection(ConditionsRecord conditionsRecord, TableMetaData tableMetaData) { + this.conditionsRecord = conditionsRecord; this.tableMetaData = tableMetaData; - this.collectionId = collectionId; + this.collectionId = conditionsRecord.getCollectionId(); } - - public ObjectType get(int index) { - Iterator<ObjectType> iterator = objects.iterator(); - ObjectType current = iterator.next(); - for (int i = 0; i < index; i++) { - current = iterator.next(); + + public AbstractConditionsObjectCollection(ConditionsRecord conditionsRecord, TableMetaData tableMetaData, int collectionID) { + this.conditionsRecord = conditionsRecord; + this.tableMetaData = tableMetaData; + this.collectionId = collectionID; + } + + public void setTableMetaData(TableMetaData tableMetaData) { + /** + * Setting this more than once is disallowed. + */ + if (this.tableMetaData != null) { + throw new RuntimeException("The table meta data cannot be reset."); } - return current; + this.tableMetaData = tableMetaData; } - - public Set<ObjectType> getObjects() { - return Collections.unmodifiableSet(objects); + + public void setConditionsRecord(ConditionsRecord conditionsRecord) { + /** + * Setting this more than once is disallowed. + */ + if (this.conditionsRecord != null) { + throw new RuntimeException("The table meta data cannot be reset."); + } + this.conditionsRecord = conditionsRecord; } - - public boolean contains(Object object) { - return getObjects().contains(object); - } - - // TODO: Should check here if object has an existing collection ID that is - // different from this collection's, in which case this collection becomes "mixed" and - // it should be flagged as read only. - public void add(ObjectType object) throws ConditionsObjectException { - if (objects.contains(object)) { - throw new IllegalArgumentException("Collection already contains this object."); + + public boolean add(ObjectType object) { + if (contains(object)) { + throw new IllegalArgumentException("Cannot add duplicate object " + object); } - try { - // Only assign a collection ID to the object if this collection has a valid ID - // and the object does not have one already. - if (getCollectionId() != -1) - object.setCollectionId(getCollectionId()); - } catch (ConditionsObjectException x) { - throw new IllegalArgumentException("Error assigning collection ID to object.", x); - } - // Set the table meta data on the object if it does not have any. - if (object.getTableMetaData() == null && tableMetaData != null) - object.setTableMetaData(tableMetaData); - objects.add(object); + return super.add(object); } public TableMetaData getTableMetaData() { @@ -69,60 +61,46 @@ public int getCollectionId() { return collectionId; } - - // TODO: Should this also insert new records that do not exist? - // TODO: This operation should lock the table. - public void update() throws ConditionsObjectException { - for (ConditionsObject object : objects) { - object.update(); + + public ConditionsRecord getConditionsRecord() { + return conditionsRecord; + } + + public void setCollectionId(int collectionId) throws ConditionsObjectException { + if (collectionId != -1) { + throw new ConditionsObjectException("The collectionId already has the value " + collectionId + " and cannot be reset."); } + this.collectionId = collectionId; } - - // TODO: This does not need to loop. It should just call delete on the collection ID value. - public void delete() throws ConditionsObjectException { - // TODO: Replace with call to a deleteCollection DatabaseConditionsManager method. - for (ConditionsObject object : objects) { - object.delete(); - } - } - - // TODO: This should not loop. It should select all the objects with a matching collection ID - // from the database replacing the current contents of the collection (if any). - public void select() throws ConditionsObjectException, SQLException { - // TODO: Replace with call to a selectCollection DatabaseConditionsManager method. - for (ConditionsObject object : objects) { - object.select(); - } - } - + public void insert() throws ConditionsObjectException, SQLException { DatabaseConditionsManager.getInstance().insertCollection(this); } - - public void setCollectionId(int collectionId) throws ConditionsObjectException { - if (this.collectionId != -1) - throw new ConditionsObjectException("The collection ID is already set."); - this.collectionId = collectionId; - for (ConditionsObject object : this.objects) { - object.setCollectionId(this.collectionId); - } + + // Should select all records into the collection by collection ID. + public int select() { + System.out.println("implement me"); + return -1; } - - public void setTableMetaData(TableMetaData tableMetaData) { - this.tableMetaData = tableMetaData; + + // Should delete all records by collection ID in the database and clear the local objects. + public int delete() { + System.out.println("implement me"); + return -1; } - - @Override - public Iterator<ObjectType> iterator() { - return objects.iterator(); - } + + // Should update objects in the database with their values in the set. + public int update() { + System.out.println("implement me"); + return -1; + } public String toString() { StringBuffer buffer = new StringBuffer(); - for (ConditionsObject object : this.getObjects()) { + for (ConditionsObject object : this) { buffer.append(object.toString()); buffer.append('\n'); } return buffer.toString(); - } + } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectException.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectException.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsObjectException.java Wed Dec 10 19:18:35 2014 @@ -13,6 +13,10 @@ public ConditionsObjectException(String message) { super(message); } + + public ConditionsObjectException(String message, Throwable cause) { + super(message, cause); + } public ConditionsObjectException(String message, ConditionsObject object) { super(message); 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 Wed Dec 10 19:18:35 2014 @@ -1,5 +1,8 @@ package org.hps.conditions.api; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.List; @@ -18,14 +21,64 @@ /** * Collection type. */ - public static class ConditionsRecordCollection extends ConditionsObjectCollection<ConditionsRecord> { - /** - * Since ConditionsRecord collections are always "mixed", meaning the - * collection ID values are usually all going to be different, the - * default behavior of the super class is overridden. - */ - public void add(ConditionsRecord record) { - objects.add(record); + public static class ConditionsRecordCollection extends AbstractConditionsObjectCollection<ConditionsRecord> { + + public List<ConditionsRecord> sortedByUpdated() { + List<ConditionsRecord> list = new ArrayList<ConditionsRecord>(this); + Collections.sort(list, new UpdatedComparator()); + return list; + } + + public List<ConditionsRecord> sortedByCreated() { + 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; + } + + private static class RunStartComparator implements Comparator<ConditionsRecord> { + @Override + public int compare(ConditionsRecord c1, ConditionsRecord c2) { + if (c1.getRunStart() < c2.getRunStart()) { + return -1; + } else if (c1.getRunStart() > c2.getRunStart()) { + return 1; + } + return 0; + } + } + + private static class UpdatedComparator implements Comparator<ConditionsRecord> { + @Override + public int compare(ConditionsRecord c1, ConditionsRecord c2) { + Date date1 = c1.getUpdated(); + Date date2 = c2.getUpdated(); + if (date1.before(date2)) { + return -1; + } else if (date1.after(date2)) { + return 1; + } + return 0; + } + } + + private static class CreatedComparator implements Comparator<ConditionsRecord> { + @Override + public int compare(ConditionsRecord c1, ConditionsRecord c2) { + Date date1 = c1.getCreated(); + Date date2 = c2.getCreated(); + if (date1.before(date2)) { + return -1; + } else if (date1.after(date2)) { + return 1; + } + return 0; + } } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsSeries.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsSeries.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/api/ConditionsSeries.java Wed Dec 10 19:18:35 2014 @@ -13,13 +13,13 @@ @SuppressWarnings("rawtypes") public class ConditionsSeries { - List<ConditionsObjectCollection> collections = new ArrayList<ConditionsObjectCollection>(); + List<AbstractConditionsObjectCollection> collections = new ArrayList<AbstractConditionsObjectCollection>(); - public ConditionsObjectCollection getCollection(int series) { + public AbstractConditionsObjectCollection getCollection(int series) { return collections.get(series); } - public int addCollection(ConditionsObjectCollection collection) { + public int addCollection(AbstractConditionsObjectCollection collection) { if (collections.contains(collection)) throw new IllegalArgumentException("The collection is already registered with this object."); collections.add(collection); @@ -30,15 +30,15 @@ return collections.size(); } - public ConditionsObjectCollection findCollection(ConditionsRecord record) { - for (ConditionsObjectCollection collection : collections) { + public AbstractConditionsObjectCollection findCollection(ConditionsRecord record) { + for (AbstractConditionsObjectCollection collection : collections) { if (collection.conditionsRecord == record) return collection; } return null; } - public List<ConditionsObjectCollection> getCollections() { + public List<AbstractConditionsObjectCollection> getCollections() { return collections; } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/beam/BeamCurrent.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/beam/BeamCurrent.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/beam/BeamCurrent.java Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.beam; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * This class is a simple data holder for the integrated beam current condition. @@ -9,7 +9,7 @@ */ public final class BeamCurrent extends AbstractConditionsObject { - public static class BeamCurrentCollection extends ConditionsObjectCollection<BeamCurrent> { + public static class BeamCurrentCollection extends AbstractConditionsObjectCollection<BeamCurrent> { } /** Modified: java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java Wed Dec 10 19:18:35 2014 @@ -23,6 +23,7 @@ * * @author Jeremy McCormick <[log in to unmask]> */ +// TODO: Add detector name and run number as arguments on the basic tool rather than sub-commands. public class CommandLineTool { Options options = new Options(); @@ -99,7 +100,7 @@ conditionsManager.setXmlConfig(xmlConfigFile); if (verbose) System.out.println("using XML config file " + xmlConfigFile.getPath()); - } + } conditionsManager.openConnection(); } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/cli/PrintCommand.java Wed Dec 10 19:18:35 2014 @@ -7,7 +7,7 @@ import java.io.PrintStream; import org.apache.commons.cli.Option; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.conditions.api.ConditionsRecord; import org.hps.conditions.api.ConditionsSeries; import org.hps.conditions.api.ConditionsRecord.ConditionsRecordCollection; @@ -99,8 +99,8 @@ } ps.println(); - for (ConditionsObjectCollection collection : series.getCollections()) { - for (Object object : collection.getObjects()) { + for (AbstractConditionsObjectCollection collection : series.getCollections()) { + for (Object object : collection) { ps.print(object.toString()); ps.println(); } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsObjectConverter.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsObjectConverter.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsObjectConverter.java Wed Dec 10 19:18:35 2014 @@ -1,11 +1,15 @@ package org.hps.conditions.database; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; - +import java.util.ArrayList; +import java.util.List; + +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.conditions.api.ConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; import org.hps.conditions.api.ConditionsObjectException; import org.hps.conditions.api.ConditionsRecord; import org.hps.conditions.api.ConditionsRecord.ConditionsRecordCollection; @@ -17,36 +21,41 @@ * <p> * Implementation of default conversion from database tables to a * {@link ConditionsObject} class. - * </p> * <p> * This class actually returns collections and not individual objects. - * </p> * * @author Jeremy McCormick <[log in to unmask]> * - * @param <T> The type of the returned data which should be a class extending - * {@link ConditionsObjectCollection}. + * @param <T> The type of the returned data which should be a class extending {@link AbstractConditionsObjectCollection}. */ -// FIXME: This class should only allow one collection to be returned and not mix -// the database records together. -// TODO: This class can probably be removed in favor of using the -// ConditionsSeriesConverter in all cases. public abstract class ConditionsObjectConverter<T> implements ConditionsConverter<T> { + // This is the strategy used for disambiguating multiple overlapping conditions sets. + enum MultipleRecordsStrategy { + LAST_UPDATED, + LAST_CREATED, + LATEST_RUN_START, + COMBINE, + ERROR + } + + MultipleRecordsStrategy multiStrat = MultipleRecordsStrategy.LAST_UPDATED; + public ConditionsObjectConverter() { } + + public void setMultipleRecordsStrategy(MultipleRecordsStrategy multiStrat) { + this.multiStrat = multiStrat; + } /** - * Classes that extend this must define this method to specify what type the - * converter is able to handle. + * Child classes must extend this method to specify what type the converter handles. * @return The Class that this converter handles. */ - public abstract Class getType(); + public abstract Class<T> getType(); @SuppressWarnings({ "unchecked", "rawtypes" }) public T getData(ConditionsManager conditionsManager, String name) { - - // System.out.println("finding conditions for key " + name + " ..."); // Get the DatabaseConditionsManager which is required for using this converter. DatabaseConditionsManager databaseConditionsManager = DatabaseConditionsManager.getInstance(); @@ -56,39 +65,52 @@ if (tableMetaData == null) throw new RuntimeException("Table meta data for " + name + " was not found."); - // Create a collection to return. - ConditionsObjectCollection collection = createCollection(tableMetaData); - - // Get the ConditionsRecord with the meta-data, which will use the - // current run - // number from the manager. + // Get the ConditionsRecordCollection with the run number assignments. ConditionsRecordCollection conditionsRecords = databaseConditionsManager.findConditionsRecords(name); - - if (conditionsRecords.getObjects().size() == 0) { - // There were no records returned, which is a fatal error. - throw new RuntimeException("No conditions found with key: " + name); - } else if (conditionsRecords.getObjects().size() > 1) { - // There were multiple records returned. - if (!allowMultipleCollections()) - // If there are multiple records returned but this is not - // allowed by the - // converter, then this is a fatal error. - throw new RuntimeException("Multiple conditions records returned but this is not allowed."); + + // By default use all conditions records, which works if there is a single one, or if the COMBINE strategy is being used. + List<ConditionsRecord> filteredList = new ArrayList<ConditionsRecord>(conditionsRecords); + + // Now we need to determine which ConditionsRecord objects to use according to configuration. + if (conditionsRecords.size() == 0) { + // No conditions records were found, and this is an error. + throw new RuntimeException("No conditions were found with key " + name); } else { - // There was a single conditions record so the collection - // information can be - // set meaningfully. - try { - collection.setCollectionId(conditionsRecords.get(0).getCollectionId()); - collection.setTableMetaData(tableMetaData); - } catch (ConditionsObjectException e) { - throw new RuntimeException(e); - } - } - - // Loop over conditions records. This will usually just be one record. - for (ConditionsRecord conditionsRecord : conditionsRecords.getObjects()) { - + /* + * Figure out which disambiguation strategy to use. + */ + if (multiStrat.equals(MultipleRecordsStrategy.LAST_UPDATED)) { + // Use the conditions set with the latest updated date. + filteredList = conditionsRecords.sortedByUpdated(); + } else if (multiStrat.equals(MultipleRecordsStrategy.LAST_CREATED)){ + // Use the conditions set with the latest created date. + filteredList = conditionsRecords.sortedByCreated(); + } else if (multiStrat.equals(MultipleRecordsStrategy.LATEST_RUN_START)) { + // Use the conditions set with the greatest run start value. + filteredList = conditionsRecords.sortedByRunStart(); + } else if (multiStrat.equals(MultipleRecordsStrategy.ERROR)) { + // The converter has been configured to throw an error when this happens! + throw new RuntimeException("Multiple ConditionsRecord object found for conditions key " + name); + } + } + + // Create a collection of objects to to return. + AbstractConditionsObjectCollection collection = null; + + try { + ConditionsRecord conditionsRecord = null; + if (filteredList.size() == 1) { + // If there is a single ConditionsRecord, then it can be assigned to the collection. + conditionsRecord = filteredList.get(0); + } + collection = createCollection(conditionsRecord, tableMetaData); + } catch (ConditionsObjectException e) { + throw new RuntimeException(e); + } + + // Loop over all records, which could just be a single one. + for (ConditionsRecord conditionsRecord : filteredList) { + // Get the table name. String tableName = conditionsRecord.getTableName(); @@ -98,30 +120,24 @@ // Build a select query. String query = QueryBuilder.buildSelect(tableName, collectionId, tableMetaData.getFieldNames(), "id ASC"); - // Query the database. + // Query the database to get the conditions collection's rows. ResultSet resultSet = databaseConditionsManager.selectQuery(query); try { - // Loop over rows. + // Loop over the rows. while (resultSet.next()) { - // Create new ConditionsObject. + // Create a new ConditionsObject from this row. ConditionsObject newObject = createConditionsObject(resultSet, tableMetaData); - // Add new object to collection, which will also assign it a - // collection ID if applicable. + // Add the object to the collection. collection.add(newObject); } - } catch (SQLException | ConditionsObjectException e) { + } catch (SQLException e) { throw new RuntimeException(e); } } - - // Return new collection. + return (T) collection; - } - - public boolean allowMultipleCollections() { - return true; } static final ConditionsObject createConditionsObject(ResultSet resultSet, TableMetaData tableMetaData) throws SQLException { @@ -152,13 +168,38 @@ return newObject; } - static final ConditionsObjectCollection<?> createCollection(TableMetaData tableMetaData) { - ConditionsObjectCollection<?> collection; + static final AbstractConditionsObjectCollection<?> createCollection(ConditionsRecord conditionsRecord, TableMetaData tableMetaData) throws ConditionsObjectException { + AbstractConditionsObjectCollection<?> collection; try { collection = tableMetaData.getCollectionClass().newInstance(); + if (conditionsRecord != null) { + collection.setConditionsRecord(conditionsRecord); + collection.setTableMetaData(tableMetaData); + } } catch (InstantiationException | IllegalAccessException e) { - throw new RuntimeException(e); + throw new ConditionsObjectException("Error creating conditions object collection.", e); } return collection; } + + // This would only work if every collection class had a constructor with the proper arguments. + /* + static final AbstractConditionsObjectCollection<?> createCollection(ConditionsRecord conditionsRecord, TableMetaData tableMetaData) throws ConditionsObjectException { + AbstractConditionsObjectCollection<?> collection; + try { + collection = tableMetaData.getCollectionClass().newInstance(); + Class<?> collectionClass = tableMetaData.getCollectionClass(); + try { + Constructor<?> constructor = collectionClass.getDeclaredConstructor(ConditionsRecord.class, TableMetaData.class); + collection = (AbstractConditionsObjectCollection) constructor.newInstance(new Object[] { conditionsRecord, tableMetaData } ); + } catch (NoSuchMethodException | SecurityException | InvocationTargetException e) { + e.printStackTrace(); + throw new ConditionsObjectException("Error creating conditions object collection.", e); + } + } catch (InstantiationException | IllegalAccessException e) { + throw new RuntimeException(e); + } + return collection; + } + */ } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsRecordConverter.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsRecordConverter.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsRecordConverter.java Wed Dec 10 19:18:35 2014 @@ -3,17 +3,14 @@ import java.sql.ResultSet; import java.sql.SQLException; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.conditions.api.ConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; -import org.hps.conditions.api.ConditionsObjectException; import org.hps.conditions.api.ConditionsRecord.ConditionsRecordCollection; import org.lcsim.conditions.ConditionsManager; /** * Read ConditionsRecord objects from the conditions database. * @author Jeremy McCormick <[log in to unmask]> - * @version $Id: ConditionsRecordConverter.java,v 1.5 2013/10/15 23:24:47 jeremy - * Exp $ */ class ConditionsRecordConverter extends ConditionsObjectConverter<ConditionsRecordCollection> { @@ -38,7 +35,7 @@ ResultSet resultSet = databaseConditionsManager.selectQuery(query); // Create a collection to return. - ConditionsObjectCollection collection; + AbstractConditionsObjectCollection collection; try { collection = tableMetaData.getCollectionClass().newInstance(); } catch (InstantiationException | IllegalAccessException e) { @@ -48,11 +45,7 @@ try { while (resultSet.next()) { ConditionsObject conditionsRecord = ConditionsObjectConverter.createConditionsObject(resultSet, tableMetaData); - try { - collection.add(conditionsRecord); - } catch (ConditionsObjectException e) { - throw new RuntimeException(e); - } + collection.add(conditionsRecord); } } catch (SQLException x) { throw new RuntimeException("Database error", x); @@ -69,8 +62,4 @@ public Class<ConditionsRecordCollection> getType() { return ConditionsRecordCollection.class; } - - public boolean allowMultipleCollections() { - return true; - } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsSeriesConverter.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsSeriesConverter.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/database/ConditionsSeriesConverter.java Wed Dec 10 19:18:35 2014 @@ -4,7 +4,7 @@ import java.sql.SQLException; import org.hps.conditions.api.ConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.conditions.api.ConditionsObjectException; import org.hps.conditions.api.ConditionsRecord; import org.hps.conditions.api.ConditionsRecord.ConditionsRecordCollection; @@ -59,21 +59,18 @@ ConditionsSeries series = new ConditionsSeries(); // Get the ConditionsRecord with the meta-data, which will use the - // current run - // number from the manager. + // current run number from the manager. ConditionsRecordCollection conditionsRecords = conditionsManager.findConditionsRecords(conditionsKey); // Loop over conditions records. This will usually just be one record. - for (ConditionsRecord conditionsRecord : conditionsRecords.getObjects()) { + for (ConditionsRecord conditionsRecord : conditionsRecords) { - ConditionsObjectCollection collection = ConditionsRecordConverter.createCollection(tableMetaData); - + AbstractConditionsObjectCollection collection; try { - collection.setCollectionId(conditionsRecord.getCollectionId()); + collection = ConditionsRecordConverter.createCollection(conditionsRecord, tableMetaData); } catch (ConditionsObjectException e) { throw new RuntimeException(e); } - collection.setTableMetaData(tableMetaData); // Get the table name. String tableName = conditionsRecord.getTableName(); @@ -97,7 +94,7 @@ // collection ID if applicable. collection.add(newObject); } - } catch (SQLException | ConditionsObjectException e) { + } catch (SQLException e) { throw new RuntimeException(e); } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java Wed Dec 10 19:18:35 2014 @@ -22,8 +22,8 @@ import java.util.logging.Level; import java.util.logging.Logger; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.conditions.api.ConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; import org.hps.conditions.api.ConditionsObjectException; import org.hps.conditions.api.ConditionsRecord; import org.hps.conditions.api.ConditionsRecord.ConditionsRecordCollection; @@ -133,7 +133,7 @@ * Class constructor. */ public DatabaseConditionsManager() { - logger.setLevel(Level.FINE); + logger.setLevel(Level.FINER); registerConditionsConverter(new DetectorConditionsConverter()); setupConnectionFromSystemProperty(); register(); @@ -179,7 +179,6 @@ logger.config("host " + connectionParameters.getHostname()); logger.config("port " + connectionParameters.getPort()); logger.config("user " + connectionParameters.getUser()); - //logger.config("password " + connectionParameters.getPassword()); logger.config("database " + connectionParameters.getDatabase()); connection = connectionParameters.createConnection(); logger.config("successfuly created connection"); @@ -233,7 +232,7 @@ */ // TODO: This should distinguish among multiple conditions sets of the same type by using the one with the most recent date // in its ConditionsRecord. - public <CollectionType extends ConditionsObjectCollection> CollectionType getCollection(Class<CollectionType> type) { + public <CollectionType extends AbstractConditionsObjectCollection> CollectionType getCollection(Class<CollectionType> type) { TableMetaData metaData = this.findTableMetaData(type).get(0); if (metaData == null) { throw new RuntimeException("Table name data for condition of type " + type.getSimpleName() + " was not found."); @@ -264,12 +263,12 @@ } if (!this.isFrozen) { if (!detectorName.equals(this.getDetector())) { - logger.fine("detector name is different"); + logger.finest("detector name is different"); } if (runNumber != this.getRun()) { - logger.fine("run number is different"); + logger.finest("run number is different"); } - logger.fine("setDetector with new detector " + detectorName + " and run #" + runNumber); + logger.info("setDetector with new detector " + detectorName + " and run #" + runNumber); logger.fine("old detector " + this.getDetector() + " and run #" + this.getRun()); initialize(detectorName, runNumber); } else { @@ -292,7 +291,7 @@ */ protected void initialize(String detectorName, int runNumber) throws ConditionsNotFoundException { - logger.log(Level.CONFIG, "initializing " + getClass().getSimpleName() + " with detector " + detectorName + " and run number " + runNumber); + logger.config("initializing " + getClass().getSimpleName() + " with detector " + detectorName + " and run number " + runNumber); // Did the user not specify a config? if (resourceConfig == null && fileConfig == null) { @@ -565,9 +564,9 @@ */ public ConditionsRecordCollection findConditionsRecords(String name) { ConditionsRecordCollection runConditionsRecords = getConditionsData(ConditionsRecordCollection.class, TableConstants.CONDITIONS_RECORD); - logger.fine("searching for condition " + name + " in " + runConditionsRecords.getObjects().size() + " records"); + logger.fine("searching for condition " + name + " in " + runConditionsRecords.size() + " records"); ConditionsRecordCollection foundConditionsRecords = new ConditionsRecordCollection(); - for (ConditionsRecord record : runConditionsRecords.getObjects()) { + for (ConditionsRecord record : runConditionsRecords) { if (record.getName().equals(name)) { if (tag == null || (tag != null && record.getTag().equals(tag))) { foundConditionsRecords.add(record); @@ -576,8 +575,8 @@ } } } - if (foundConditionsRecords.getObjects().size() > 0) { - for (ConditionsRecord record : foundConditionsRecords.getObjects()) { + if (foundConditionsRecords.size() > 0) { + for (ConditionsRecord record : foundConditionsRecords) { logger.fine("found ConditionsRecord with key " + name + '\n' + record.toString()); } } @@ -613,11 +612,11 @@ this.tag = tag; } - public <ObjectType extends ConditionsObject> void insertCollection(ConditionsObjectCollection<ObjectType> collection) throws SQLException { + public <ObjectType extends ConditionsObject> void insertCollection(AbstractConditionsObjectCollection<ObjectType> collection) throws SQLException { if (collection == null) { throw new IllegalArgumentException("The collection is null."); } - if (collection.getObjects().size() == 0) { + if (collection.size() == 0) { throw new IllegalArgumentException("The collection is empty."); } if (collection.getTableMetaData() == null) { @@ -631,18 +630,18 @@ throw new RuntimeException(e); } } - logger.fine("inserting collection with ID " + collection.getCollectionId() + logger.info("inserting collection with ID " + collection.getCollectionId() + " and key " + collection.getTableMetaData().getKey() + " into table " + tableMetaData.getTableName()); try { connection.setAutoCommit(false); logger.finest("starting insert transaction"); - String sql = QueryBuilder.buildPreparedInsert(collection.get(0)); + String sql = QueryBuilder.buildPreparedInsert(collection.iterator().next()); PreparedStatement preparedStatement = connection.prepareStatement(sql); logger.finest("using prepared statement: " + sql); logger.finest("preparing updates"); - for (ConditionsObject object : collection.getObjects()) { + for (ConditionsObject object : collection) { preparedStatement.setObject(1, object.getCollectionId()); int parameterIndex = 2; for (Entry<String,Object> entry : object.getFieldValues().entrySet()) { @@ -662,7 +661,7 @@ connection.setAutoCommit(true); } } - + private void setupEcal() { logger.config("setting up ECAL conditions on detector"); EcalConditions conditions = getCachedConditions(EcalConditions.class, ECAL_CONDITIONS).getCachedData(); @@ -683,7 +682,6 @@ logger.config("done loading SVT detector conditions"); } - /** * Check if connected to the database. * @return true if connected @@ -816,13 +814,13 @@ throw new RuntimeException(e); } - Class<? extends ConditionsObjectCollection<?>> collectionClass; + Class<? extends AbstractConditionsObjectCollection<?>> collectionClass; Class<?> rawCollectionClass; try { rawCollectionClass = Class.forName(collectionName); - if (!ConditionsObjectCollection.class.isAssignableFrom(rawCollectionClass)) + if (!AbstractConditionsObjectCollection.class.isAssignableFrom(rawCollectionClass)) throw new RuntimeException("The class " + rawCollectionClass.getSimpleName() + " does not extend ConditionsObjectCollection."); - collectionClass = (Class<? extends ConditionsObjectCollection<?>>) rawCollectionClass; + collectionClass = (Class<? extends AbstractConditionsObjectCollection<?>>) rawCollectionClass; } catch (ClassNotFoundException e) { throw new RuntimeException(e); } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/database/TableMetaData.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/database/TableMetaData.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/database/TableMetaData.java Wed Dec 10 19:18:35 2014 @@ -4,7 +4,7 @@ import java.util.Set; import org.hps.conditions.api.ConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * <p> @@ -14,7 +14,7 @@ * </p> * <p> * It also has references to the implementation classes which are used to map - * the data onto {@link ConditionsObject} and {@link ConditionsObjectCollection} + * the data onto {@link ConditionsObject} and {@link AbstractConditionsObjectCollection} * s. * </p> * @@ -26,7 +26,7 @@ String tableName; String key; Class<? extends ConditionsObject> objectClass; - Class<? extends ConditionsObjectCollection<?>> collectionClass; + Class<? extends AbstractConditionsObjectCollection<?>> collectionClass; Set<String> fieldNames = new LinkedHashSet<String>(); /** @@ -35,7 +35,7 @@ * @param objectClass The type of object for the data mapping. * @param collectionClass The type of collection for the data mapping. */ - TableMetaData(String key, String tableName, Class<? extends ConditionsObject> objectClass, Class<? extends ConditionsObjectCollection<?>> collectionClass) { + public TableMetaData(String key, String tableName, Class<? extends ConditionsObject> objectClass, Class<? extends AbstractConditionsObjectCollection<?>> collectionClass) { this.key = key; this.tableName = tableName; this.objectClass = objectClass; @@ -54,7 +54,7 @@ * Get the type of collection this table maps onto. * @return */ - public Class<? extends ConditionsObjectCollection<?>> getCollectionClass() { + public Class<? extends AbstractConditionsObjectCollection<?>> getCollectionClass() { return collectionClass; } 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 Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.ecal; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * This class represents an ECAL channel that is considered "bad" which means it @@ -9,7 +9,7 @@ */ public final class EcalBadChannel extends AbstractConditionsObject { - public static class EcalBadChannelCollection extends ConditionsObjectCollection<EcalBadChannel> { + public static class EcalBadChannelCollection extends AbstractConditionsObjectCollection<EcalBadChannel> { } int getChannelId() { 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 Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.ecal; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * This class is a simplistic representation of ECal pedestal and noise values @@ -14,7 +14,7 @@ */ public final class EcalCalibration extends AbstractConditionsObject { - public static class EcalCalibrationCollection extends ConditionsObjectCollection<EcalCalibration> { + public static class EcalCalibrationCollection extends AbstractConditionsObjectCollection<EcalCalibration> { } public EcalCalibration() { 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 Wed Dec 10 19:18:35 2014 @@ -5,7 +5,7 @@ import org.hps.conditions.api.AbstractConditionsObject; import org.hps.conditions.api.AbstractIdentifier; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.conditions.api.ConditionsObjectException; import org.lcsim.detector.identifier.ExpandedIdentifier; import org.lcsim.detector.identifier.IExpandedIdentifier; @@ -123,7 +123,7 @@ /** * A collection of {@link EcalChannel} objects. */ - public static class EcalChannelCollection extends ConditionsObjectCollection<EcalChannel> { + public static class EcalChannelCollection extends AbstractConditionsObjectCollection<EcalChannel> { // Identifier maps for fast lookup. Map<Long, EcalChannel> daqMap = new HashMap<Long, EcalChannel>(); @@ -136,7 +136,7 @@ * access to the Detector API. */ @Override - public void add(EcalChannel channel) throws ConditionsObjectException { + public boolean add(EcalChannel channel) { super.add(channel); DaqId daqId = channel.createDaqId(); if (daqId.isValid()) @@ -144,6 +144,7 @@ ChannelId channelId = channel.createChannelId(); if (channelId.isValid()) channelMap.put(channelId.encode(), channel); + return true; } /** @@ -152,7 +153,7 @@ * @param system The system ID of the subdetector. */ void buildGeometryMap(IIdentifierHelper helper, int system) { - for (EcalChannel channel : this.objects) { + for (EcalChannel channel : this) { GeometryId geometryId = channel.createGeometryId(helper, system); geometryMap.put(geometryId.encode(), channel); } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalConditions.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalConditions.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalConditions.java Wed Dec 10 19:18:35 2014 @@ -109,7 +109,7 @@ buff.append('\n'); // Loop over all channels. - for (EcalChannel channel : channelMap.getObjects()) { + for (EcalChannel channel : channelMap) { EcalChannelConstants constants = getChannelConstants(channel); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalConditionsConverter.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalConditionsConverter.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/ecal/EcalConditionsConverter.java Wed Dec 10 19:18:35 2014 @@ -46,7 +46,7 @@ // Get the ECal gains from the conditions database and add them to the // conditions set EcalGainCollection gains = dbConditionsManager.getCollection(EcalGainCollection.class); - for (EcalGain gain : gains.getObjects()) { + for (EcalGain gain : gains) { ChannelId channelId = new ChannelId(new int[] { gain.getChannelId() }); EcalChannel channel = channels.findChannel(channelId); conditions.getChannelConstants(channel).setGain(gain); @@ -55,7 +55,7 @@ // Get the ECal bad channels and add them to the conditions set try { EcalBadChannelCollection badChannels = dbConditionsManager.getCollection(EcalBadChannelCollection.class); - for (EcalBadChannel badChannel : badChannels.getObjects()) { + for (EcalBadChannel badChannel : badChannels) { ChannelId channelId = new ChannelId(new int[] { badChannel.getChannelId() }); EcalChannel channel = channels.findChannel(channelId); conditions.getChannelConstants(channel).setBadChannel(true); @@ -67,7 +67,7 @@ // Get the ECal calibrations from the conditions database and add them // to the conditions set. EcalCalibrationCollection calibrations = dbConditionsManager.getCollection(EcalCalibrationCollection.class); - for (EcalCalibration calibration : calibrations.getObjects()) { + for (EcalCalibration calibration : calibrations) { ChannelId channelId = new ChannelId(new int[] { calibration.getChannelId() }); EcalChannel channel = channels.findChannel(channelId); conditions.getChannelConstants(channel).setCalibration(calibration); @@ -76,7 +76,7 @@ // Get the ECal time shifts from the conditions database and add them to // the conditions set. EcalTimeShiftCollection timeShifts = dbConditionsManager.getCollection(EcalTimeShiftCollection.class); - for (EcalTimeShift timeShift : timeShifts.getObjects()) { + for (EcalTimeShift timeShift : timeShifts) { ChannelId channelId = new ChannelId(new int[] { timeShift.getChannelId() }); EcalChannel channel = channels.findChannel(channelId); conditions.getChannelConstants(channel).setTimeShift(timeShift); 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 Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.ecal; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * A simplistic representation of gain values from the ECal conditions database. @@ -10,7 +10,7 @@ */ public final class EcalGain extends AbstractConditionsObject { - public static class EcalGainCollection extends ConditionsObjectCollection<EcalGain> { + public static class EcalGainCollection extends AbstractConditionsObjectCollection<EcalGain> { } /** 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 Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.ecal; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * A conditions class for representing the setup of the LED system in the ECAL @@ -13,7 +13,7 @@ /** * Generic collection class for these objects. */ - public static class EcalLedCollection extends ConditionsObjectCollection<EcalLed> { + public static class EcalLedCollection extends AbstractConditionsObjectCollection<EcalLed> { } /** 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 Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.ecal; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * This class represents a time shift calibration value for an ECAL channel. @@ -12,7 +12,7 @@ /** * A collection of {@link EcalTimeShift} objects. */ - public static class EcalTimeShiftCollection extends ConditionsObjectCollection<EcalTimeShift> { + public static class EcalTimeShiftCollection extends AbstractConditionsObjectCollection<EcalTimeShift> { } /** Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtChannel.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtChannel.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtChannel.java Wed Dec 10 19:18:35 2014 @@ -5,13 +5,11 @@ import java.util.Map; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; -import org.hps.conditions.api.ConditionsObjectException; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.util.Pair; /** - * This abstract class provides basic setup information for an SVT sensor - * channel. + * This abstract class provides basic setup information for an SVT sensor channel. * * @author Omar Moreno <[log in to unmask]> */ @@ -20,7 +18,7 @@ // TODO: Put constants into their own class public static final int MAX_NUMBER_OF_SAMPLES = 6; - public static abstract class AbstractSvtChannelCollection<T extends AbstractSvtChannel> extends ConditionsObjectCollection<T> { + public static abstract class AbstractSvtChannelCollection<T extends AbstractSvtChannel> extends AbstractConditionsObjectCollection<T> { Map<Integer, T> channelMap = new HashMap<Integer, T>(); @@ -30,7 +28,7 @@ * * @param A channel of a type extending {@link AbstractSvtChannel} */ - public void add(T channel) { + public boolean add(T channel) { // If it doesn't exist, add the channel to the channel map if (channelMap.containsKey(channel.getChannelID())) { @@ -39,11 +37,7 @@ channelMap.put(channel.getChannelID(), channel); // Add to the collection - try { - super.add(channel); - } catch (ConditionsObjectException e) { - throw new RuntimeException(e); - } + return super.add(channel); } /** @@ -73,7 +67,7 @@ */ public String toString() { StringBuffer buff = new StringBuffer(); - for (T channel : this.getObjects()) { + for (T channel : this) { buff.append(channel.toString() + '\n'); } return buff.toString(); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditions.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditions.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditions.java Wed Dec 10 19:18:35 2014 @@ -39,7 +39,7 @@ */ public ChannelConstants getChannelConstants(AbstractSvtChannel channel) { // This channel must come from the map. - if (!channelMap.getObjects().contains(channel)) { + if (!channelMap.contains(channel)) { System.err.println("[ " + this.getClass().getSimpleName() + " ]: Channel not found in map => " + channel); throw new IllegalArgumentException("Channel was not found in map."); } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditionsConverter.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditionsConverter.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtConditionsConverter.java Wed Dec 10 19:18:35 2014 @@ -36,14 +36,14 @@ // Get the SVT calibrations (baseline, noise) from the conditions // database SvtCalibrationCollection calibrations = dbConditionsManager.getCollection(SvtCalibrationCollection.class); - for (SvtCalibration calibration : calibrations.getObjects()) { + for (SvtCalibration calibration : calibrations) { AbstractSvtChannel channel = conditions.getChannelMap().findChannel(calibration.getChannelID()); conditions.getChannelConstants(channel).setCalibration(calibration); } // Get the Channel pulse fit parameters from the conditions database SvtShapeFitParametersCollection shapeFitParametersCollection = dbConditionsManager.getCollection(SvtShapeFitParametersCollection.class); - for (SvtShapeFitParameters shapeFitParameters : shapeFitParametersCollection.getObjects()) { + for (SvtShapeFitParameters shapeFitParameters : shapeFitParametersCollection) { AbstractSvtChannel channel = conditions.getChannelMap().findChannel(shapeFitParameters.getChannelID()); conditions.getChannelConstants(channel).setShapeFitParameters(shapeFitParameters); } @@ -53,7 +53,7 @@ // notify the user and move on. try { SvtBadChannelCollection badChannels = dbConditionsManager.getCollection(SvtBadChannelCollection.class); - for (SvtBadChannel badChannel : badChannels.getObjects()) { + for (SvtBadChannel badChannel : badChannels) { AbstractSvtChannel channel = conditions.getChannelMap().findChannel(badChannel.getChannelId()); conditions.getChannelConstants(channel).setBadChannel(true); } @@ -63,7 +63,7 @@ // Get the gains and offsets from the conditions database SvtGainCollection channelGains = dbConditionsManager.getCollection(SvtGainCollection.class); - for (SvtGain channelGain : channelGains.getObjects()) { + for (SvtGain channelGain : channelGains) { int channelId = channelGain.getChannelID(); AbstractSvtChannel channel = conditions.getChannelMap().findChannel(channelId); conditions.getChannelConstants(channel).setGain(channelGain); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtDaqMapping.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtDaqMapping.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtDaqMapping.java Wed Dec 10 19:18:35 2014 @@ -2,7 +2,7 @@ import org.lcsim.detector.tracker.silicon.HpsSiSensor; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.util.Pair; /** @@ -13,7 +13,7 @@ */ public abstract class AbstractSvtDaqMapping extends AbstractConditionsObject { - public static abstract class AbstractSvtDaqMappingCollection<T extends AbstractSvtDaqMapping> extends ConditionsObjectCollection<T> { + public static abstract class AbstractSvtDaqMappingCollection<T extends AbstractSvtDaqMapping> extends AbstractConditionsObjectCollection<T> { /** * Flag values for top or bottom half. Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtT0Shift.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtT0Shift.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtT0Shift.java Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.svt; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.hps.util.Pair; /** @@ -12,7 +12,7 @@ */ public class AbstractSvtT0Shift extends AbstractConditionsObject { - public static abstract class AbstractSvtT0ShiftCollection<T extends AbstractSvtT0Shift> extends ConditionsObjectCollection<T> { + public static abstract class AbstractSvtT0ShiftCollection<T extends AbstractSvtT0Shift> extends AbstractConditionsObjectCollection<T> { /** * Get the t0 shift associated with a given DAQ pair Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtAlignmentConstant.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtAlignmentConstant.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtAlignmentConstant.java Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.svt; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * <p> @@ -20,7 +20,7 @@ */ public class SvtAlignmentConstant extends AbstractConditionsObject { - public static class SvtAlignmentCollection extends ConditionsObjectCollection<SvtAlignmentConstant> { + public static class SvtAlignmentCollection extends AbstractConditionsObjectCollection<SvtAlignmentConstant> { } /** Top or bottom half. */ Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBadChannel.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBadChannel.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBadChannel.java Wed Dec 10 19:18:35 2014 @@ -1,11 +1,11 @@ package org.hps.conditions.svt; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; public final class SvtBadChannel extends AbstractConditionsObject { - public static class SvtBadChannelCollection extends ConditionsObjectCollection<SvtBadChannel> { + public static class SvtBadChannelCollection extends AbstractConditionsObjectCollection<SvtBadChannel> { } public int getChannelId() { Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtCalibration.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtCalibration.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtCalibration.java Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.svt; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import static org.hps.conditions.svt.SvtChannel.MAX_NUMBER_OF_SAMPLES; @@ -13,7 +13,7 @@ */ public final class SvtCalibration extends AbstractConditionsObject { - public static class SvtCalibrationCollection extends ConditionsObjectCollection<SvtCalibration> { + public static class SvtCalibrationCollection extends AbstractConditionsObjectCollection<SvtCalibration> { } /** Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtChannel.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtChannel.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtChannel.java Wed Dec 10 19:18:35 2014 @@ -27,7 +27,7 @@ List<SvtChannel> channels = new ArrayList<SvtChannel>(); int febID = pair.getFirstElement(); int febHybridID = pair.getSecondElement(); - for (SvtChannel channel : this.getObjects()) { + for (SvtChannel channel : this) { if (channel.getFebID() == febID && channel.getFebHybridID() == febHybridID) { channels.add(channel); } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConditions.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConditions.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConditions.java Wed Dec 10 19:18:35 2014 @@ -117,7 +117,7 @@ } buff.append('\n'); // Loop over channels. - for (SvtChannel channel : this.getChannelMap().getObjects()) { + for (SvtChannel channel : this.getChannelMap()) { // Get the conditions for the channel. ChannelConstants constants = getChannelConstants(channel); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfiguration.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfiguration.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtConfiguration.java Wed Dec 10 19:18:35 2014 @@ -6,7 +6,7 @@ import java.io.InputStream; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; import org.jdom.Document; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; @@ -18,7 +18,7 @@ */ public class SvtConfiguration extends AbstractConditionsObject { - public static class SvtConfigurationCollection extends ConditionsObjectCollection<SvtConfiguration> { + public static class SvtConfigurationCollection extends AbstractConditionsObjectCollection<SvtConfiguration> { } /** Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtDaqMapping.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtDaqMapping.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtDaqMapping.java Wed Dec 10 19:18:35 2014 @@ -24,7 +24,7 @@ public Pair<Integer, Integer> getDaqPair(HpsSiSensor sensor) { String svtHalf = sensor.isTopLayer() ? TOP_HALF : BOTTOM_HALF; - for (SvtDaqMapping object : this.getObjects()) { + for (SvtDaqMapping object : this) { if (svtHalf.equals(object.getSvtHalf()) && object.getLayerNumber() == sensor.getLayerNumber() && object.getSide().equals(sensor.getSide())) { @@ -46,7 +46,7 @@ */ public String getOrientation(Pair<Integer, Integer> daqPair) { - for (SvtDaqMapping daqMapping : this.getObjects()) { + for (SvtDaqMapping daqMapping : this) { if (daqPair.getFirstElement() == daqMapping.getFebID() && daqPair.getSecondElement() == daqMapping.getFebHybridID()) { return daqMapping.getOrientation(); @@ -76,7 +76,7 @@ buff.append('\n'); buff.append("----------------------"); buff.append('\n'); - for (SvtDaqMapping object : getObjects()) { + for (SvtDaqMapping object : this) { buff.append(object.getFebID()); buff.append(" "); buff.append(object.getFebHybridID()); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtDetectorSetup.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtDetectorSetup.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtDetectorSetup.java Wed Dec 10 19:18:35 2014 @@ -43,7 +43,7 @@ List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class); logger.info("setting up " + sensors.size() + " SVT sensors"); SvtChannelCollection channelMap = conditions.getChannelMap(); - logger.info("channel map has " + conditions.getChannelMap().getObjects().size() + " entries"); + logger.info("channel map has " + conditions.getChannelMap().size() + " entries"); SvtDaqMappingCollection daqMap = conditions.getDaqMap(); SvtT0ShiftCollection t0Shifts = conditions.getT0Shifts(); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtGain.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtGain.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtGain.java Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.svt; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * This class represents gain measurements for a single SVT channel. @@ -9,7 +9,7 @@ */ public final class SvtGain extends AbstractConditionsObject { - public static class SvtGainCollection extends ConditionsObjectCollection<SvtGain> { + public static class SvtGainCollection extends AbstractConditionsObjectCollection<SvtGain> { } /** Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtShapeFitParameters.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtShapeFitParameters.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtShapeFitParameters.java Wed Dec 10 19:18:35 2014 @@ -1,7 +1,7 @@ package org.hps.conditions.svt; import org.hps.conditions.api.AbstractConditionsObject; -import org.hps.conditions.api.ConditionsObjectCollection; +import org.hps.conditions.api.AbstractConditionsObjectCollection; /** * This class encapsulates the shape fit parameters for an SVT channel. @@ -11,7 +11,7 @@ */ public final class SvtShapeFitParameters extends AbstractConditionsObject { - public static class SvtShapeFitParametersCollection extends ConditionsObjectCollection<SvtShapeFitParameters> { + public static class SvtShapeFitParametersCollection extends AbstractConditionsObjectCollection<SvtShapeFitParameters> { } /** Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtT0Shift.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtT0Shift.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtT0Shift.java Wed Dec 10 19:18:35 2014 @@ -24,7 +24,7 @@ public SvtT0Shift getT0Shift(Pair<Integer, Integer> pair) { int febID = pair.getFirstElement(); int febHybridID = pair.getSecondElement(); - for (SvtT0Shift t0Shift : this.getObjects()) { + for (SvtT0Shift t0Shift : this) { if (t0Shift.getFebID() == febID && t0Shift.getFebHybridID() == febHybridID) { return t0Shift; } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtChannel.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtChannel.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtChannel.java Wed Dec 10 19:18:35 2014 @@ -15,7 +15,7 @@ List<TestRunSvtChannel> channels = new ArrayList<TestRunSvtChannel>(); int fpga = pair.getFirstElement(); int hybrid = pair.getSecondElement(); - for (TestRunSvtChannel channel : this.getObjects()) { + for (TestRunSvtChannel channel : this) { if (channel.getFpgaID() == fpga && channel.getHybridID() == hybrid) { channels.add(channel); } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtConditions.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtConditions.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtConditions.java Wed Dec 10 19:18:35 2014 @@ -119,7 +119,7 @@ } buff.append('\n'); // Loop over channels. - for (TestRunSvtChannel channel : this.getChannelMap().getObjects()) { + for (TestRunSvtChannel channel : this.getChannelMap()) { System.out.println("Channel: " + channel.toString()); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtDaqMapping.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtDaqMapping.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtDaqMapping.java Wed Dec 10 19:18:35 2014 @@ -24,7 +24,7 @@ public Pair<Integer, Integer> getDaqPair(HpsSiSensor sensor) { String svtHalf = sensor.isTopLayer() ? TOP_HALF : BOTTOM_HALF; - for (TestRunSvtDaqMapping daqMapping : this.getObjects()) { + for (TestRunSvtDaqMapping daqMapping : this) { if (svtHalf.equals(daqMapping.getSvtHalf()) && daqMapping.getLayerNumber() == sensor.getLayerNumber()) { @@ -45,7 +45,7 @@ */ public String getOrientation(Pair<Integer, Integer> daqPair) { - for (TestRunSvtDaqMapping daqMapping : this.getObjects()) { + for (TestRunSvtDaqMapping daqMapping : this) { if (daqPair.getFirstElement() == ((TestRunSvtDaqMapping) daqMapping).getFpgaID() && daqPair.getSecondElement() == ((TestRunSvtDaqMapping) daqMapping).getHybridID()) { return daqMapping.getOrientation(); @@ -73,7 +73,7 @@ buffer.append('\n'); buffer.append("----------------------"); buffer.append('\n'); - for (TestRunSvtDaqMapping daqMapping : getObjects()) { + for (TestRunSvtDaqMapping daqMapping : this) { TestRunSvtDaqMapping testRunDaqMapping = (TestRunSvtDaqMapping) daqMapping; buffer.append(testRunDaqMapping.getFpgaID()); buffer.append(" "); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtDetectorSetup.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtDetectorSetup.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtDetectorSetup.java Wed Dec 10 19:18:35 2014 @@ -44,7 +44,7 @@ List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class); logger.info("setting up " + sensors.size() + " SVT sensors"); TestRunSvtChannelCollection channelMap = conditions.getChannelMap(); - logger.info("channel map has " + channelMap.getObjects().size() + " entries"); + logger.info("channel map has " + channelMap.size() + " entries"); TestRunSvtDaqMappingCollection daqMap = conditions.getDaqMap(); TestRunSvtT0ShiftCollection t0Shifts = conditions.getT0Shifts(); Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtT0Shift.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtT0Shift.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/TestRunSvtT0Shift.java Wed Dec 10 19:18:35 2014 @@ -25,7 +25,7 @@ int fpgaID = pair.getFirstElement(); int hybridID = pair.getSecondElement(); - for (TestRunSvtT0Shift t0Shift : this.getObjects()) { + for (TestRunSvtT0Shift t0Shift : this) { if (t0Shift.getFpgaID() == fpgaID && t0Shift.getHybridID() == hybridID) { return t0Shift; } Modified: java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsObjectTest.java ============================================================================= --- java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsObjectTest.java (original) +++ java/trunk/conditions/src/test/java/org/hps/conditions/ConditionsObjectTest.java Wed Dec 10 19:18:35 2014 @@ -15,6 +15,7 @@ * * @author Jeremy McCormick <[log in to unmask]> */ +// FIXME: This test is berken. It should probably be removed. public class ConditionsObjectTest extends TestCase { public void testBasicOperations() throws ConditionsObjectException { @@ -25,7 +26,8 @@ TableMetaData tableMetaData = conditionsManager.findTableMetaData(TableConstants.SVT_GAINS); int collectionId = conditionsManager.getNextCollectionID(tableMetaData.getTableName()); SvtGainCollection collection = new SvtGainCollection(); - collection.setTableMetaData(tableMetaData); + // FIXME: This can't be done through a setter anymore! + //collection.setTableMetaData(tableMetaData); try { collection.setCollectionId(collectionId); } catch (ConditionsObjectException e) { Modified: java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java ============================================================================= --- java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java (original) +++ java/trunk/conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java Wed Dec 10 19:18:35 2014 @@ -79,7 +79,7 @@ if (currentRun != event.getRunNumber()) { currentRun = event.getRunNumber(); BeamCurrentCollection collection = ConditionsManager.defaultInstance().getCachedConditions(BeamCurrentCollection.class, BEAM_CURRENT).getCachedData(); - BeamCurrent beamCurrent = collection.get(0); + BeamCurrent beamCurrent = collection.iterator().next(); System.out.println("Run " + event.getRunNumber() + " has integrated beam current " + beamCurrent.getIntegratedBeamCurrent() + " nC."); assertEquals("Wrong beam current for run.", beamCurrentAnswerKey.get(currentRun), beamCurrent.getIntegratedBeamCurrent()); } Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalCalibrationsDriver.java ============================================================================= --- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalCalibrationsDriver.java (original) +++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalCalibrationsDriver.java Wed Dec 10 19:18:35 2014 @@ -127,7 +127,7 @@ ecalConditions = conditionsManager.getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData(); // Create a histogram for every ECAL channel. - for (EcalChannel channel : ecalConditions.getChannelCollection().getObjects()) { + for (EcalChannel channel : ecalConditions.getChannelCollection()) { aida.histogram1D("ECAL Channel " + channel.getChannelId(), 300, 0, 300.); } } @@ -178,7 +178,7 @@ calibrations.setTableMetaData(tableMetaData); // Loop over all ECAL channels. - for (EcalChannel channel : ecalConditions.getChannelCollection().getObjects()) { + for (EcalChannel channel : ecalConditions.getChannelCollection()) { // Get the histogram with ADC distribution for this channel. IHistogram1D histogram = aida.histogram1D("ECAL Channel " + channel.getChannelId()); @@ -205,12 +205,7 @@ // Create a new calibration object and add it to the collection, using mean for pedestal // and sigma for noise. - EcalCalibration calibration = new EcalCalibration(channelId, mean, sigma); - try { - calibrations.add(calibration); - } catch (ConditionsObjectException e) { - throw new RuntimeException(e); - } + calibrations.add(new EcalCalibration(channelId, mean, sigma)); } // Get the list of field names for the header.