Author: omoreno
Date: Mon Oct 27 11:12:41 2014
New Revision: 1308
Log:
Abstract class providing basic setup information for an SVT sensor channel.
Added:
java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtChannel.java (with props)
Added: java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtChannel.java
=============================================================================
--- java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtChannel.java (added)
+++ java/branches/hps_java_trunk_HPSJAVA-255/conditions/src/main/java/org/hps/conditions/svt/AbstractSvtChannel.java Mon Oct 27 11:12:41 2014
@@ -0,0 +1,103 @@
+package org.hps.conditions.svt;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.hps.conditions.AbstractConditionsObject;
+import org.hps.conditions.ConditionsObjectCollection;
+import org.hps.conditions.ConditionsObjectException;
+import org.hps.util.Pair;
+
+/**
+ * This abstract class provides basic setup information for an SVT
+ * sensor channel.
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ */
+public class AbstractSvtChannel extends AbstractConditionsObject {
+
+ // 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> {
+
+ Map<Integer, T> channelMap = new HashMap<Integer, T>();
+
+ /**
+ * Add a channel of type extending {@link AbstractSvtChannel} to the
+ * channel map
+ *
+ * @param A channel of a type extending {@link AbstractSvtChannel}
+ */
+ public void add(T channel){
+
+ // If it doesn't exist, add the channel to the channel map
+ if(channelMap.containsKey(channel.getChannelID())){
+ throw new IllegalArgumentException("[ " + this.getClass().getSimpleName() + " ]: Channel ID already exists: "
+ + channel.getChannelID());
+ }
+ channelMap.put(channel.getChannelID(), channel);
+
+ // Add to the collection
+ try {
+ super.add(channel);
+ } catch(ConditionsObjectException e){
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Find a channel of type extending {@link AbstractSvtChannel} using the
+ * channel ID
+ *
+ * @param channelID
+ * @return An SVT channel of type extending {@link AbstractSvtChannel}
+ */
+ public T findChannel(int channelID){
+ return channelMap.get(channelID);
+ }
+
+ /**
+ * Find the collection of channels of type extending
+ * {@link AbstractSvtChannel} that match a DAQ pair.
+ *
+ * @param pair The DAQ pair.
+ * @return The channels matching the DAQ pair or null if not found.
+ */
+ public abstract Collection<T> find(Pair<Integer, Integer> pair);
+
+ /**
+ * Convert this object to a human readable string.
+ *
+ * @return This object converted to a string.
+ */
+ public String toString() {
+ StringBuffer buff = new StringBuffer();
+ for (T channel : this.getObjects()) {
+ buff.append(channel.toString() + '\n');
+ }
+ return buff.toString();
+ }
+ }
+
+ /**
+ * Get the channel ID.
+ *
+ * @return The channel ID.
+ */
+ public int getChannelID() {
+ return getFieldValue("channel_id");
+ }
+
+ /**
+ * Get the channel number. This is different from the ID.
+ *
+ * @return The channel number.
+ */
+ public int getChannel() {
+ return getFieldValue("channel");
+ }
+
+}
|