GeomConverter/src/org/lcsim/detector
diff -N DetectorElementMap.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ DetectorElementMap.java 24 Jul 2007 22:25:08 -0000 1.1
@@ -0,0 +1,17 @@
+package org.lcsim.detector;
+
+import java.util.HashMap;
+
+import org.lcsim.detector.identifier.IIdentifier;
+
+/**
+ * A map of {@link org.lcsim.detector.identifier.IIdentifier} to
+ * {@link org.lcsim.detector.IDetectorElement}.
+ *
+ * @author Jeremy McCormick
+ * @version $Id: DetectorElementMap.java,v 1.1 2007/07/24 22:25:08 jeremy Exp $
+ */
+
+public class DetectorElementMap
+extends HashMap<IIdentifier,IDetectorElement>
+{}
GeomConverter/src/org/lcsim/detector
diff -u -r1.9 -r1.10
--- DetectorElementContainer.java 24 Jul 2007 21:56:53 -0000 1.9
+++ DetectorElementContainer.java 24 Jul 2007 22:25:08 -0000 1.10
@@ -81,15 +81,6 @@
throw new IllegalArgumentException("Duplicate DetectorElement name <"+de.getName()+">.");
}
- if (de.getIdentifier() != null)
- {
- IDetectorElementContainer lookup = find(de.getIdentifier());
- if (find(de.getIdentifier()).size() > 0 && !lookup.contains(de))
- {
- throw new IllegalArgumentException("Cannot add DetectorElement <" + de.getName() + ">. Identifier <"+de.getIdentifier().toHexString()+"> is already assigned to <"+this.find(de.getIdentifier()).get(0).getName()+">.");
- }
- }
-
return super.add(de);
}
}
GeomConverter/src/org/lcsim/detector
diff -u -r1.7 -r1.8
--- DetectorElementStore.java 24 Jul 2007 19:57:31 -0000 1.7
+++ DetectorElementStore.java 24 Jul 2007 22:25:08 -0000 1.8
@@ -1,8 +1,5 @@
package org.lcsim.detector;
-import java.util.HashMap;
-import java.util.Map;
-
import org.lcsim.detector.identifier.IIdentifier;
public class DetectorElementStore
@@ -10,8 +7,8 @@
implements IDetectorElementStore
{
private static DetectorElementStore store = null;
-
- Map<Long,IDetectorElement> cache = new HashMap<Long,IDetectorElement>();
+
+ DetectorElementMap cache = new DetectorElementMap();
public static IDetectorElementStore getInstance()
{
@@ -24,26 +21,39 @@
public boolean add(IDetectorElement de)
{
- IIdentifier id = de.getIdentifier();
- if (id.isValid())
- {
- if (cache.get(id.getValue()) == null)
- {
- cache.put(id.getValue(), de);
- }
- else
- {
- throw new IllegalArgumentException("Already have cached DetectorElement for id <"+de.getIdentifier()+">.");
- }
- }
- return super.add(de);
+ // Add to list.
+ super.add(de);
+
+ // Check to see if the id is cacheable...
+
+ IIdentifier id = de.getIdentifier();
+
+ if (id != null)
+ {
+ if (id.isValid())
+ {
+ IDetectorElementContainer dups = find(id);
+
+ if (dups.size() > 0)
+ {
+ throw new IllegalArgumentException("Cannot add DetectorElement <"
+ + de.getName() + "> because its identifier <"+id
+ +"> is already used by <"+dups.get(0).getName()+">.");
+ }
+
+ // Cache this DE by id in the lookup map.
+ cache.put(id, de);
+ }
+ }
+
+ return true;
}
-
+
public IDetectorElementContainer find(IIdentifier id)
{
- IDetectorElementContainer match = new DetectorElementContainer();
- IDetectorElement lookup = cache.get(id.getValue());
- if (lookup != null) match.add(lookup);
- return match;
+ IDetectorElementContainer match = new DetectorElementContainer();
+ IDetectorElement lookup = cache.get(id.getValue());
+ if (lookup != null) match.add(lookup);
+ return match;
}
}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector/identifier
diff -u -r1.4 -r1.5
--- Identifier.java 9 May 2007 00:59:58 -0000 1.4
+++ Identifier.java 24 Jul 2007 22:25:08 -0000 1.5
@@ -5,7 +5,7 @@
* Implementation of {@link IIdentifier}.
*
* @author Jeremy McCormick
- * @version $Id: Identifier.java,v 1.4 2007/05/09 00:59:58 jeremy Exp $
+ * @version $Id: Identifier.java,v 1.5 2007/07/24 22:25:08 jeremy Exp $
*/
package org.lcsim.detector.identifier;
@@ -13,7 +13,7 @@
* Implementation of {@link IIdentifier}.
*
* @author Jeremy McCormick
- * @version $Id: Identifier.java,v 1.4 2007/05/09 00:59:58 jeremy Exp $
+ * @version $Id: Identifier.java,v 1.5 2007/07/24 22:25:08 jeremy Exp $
*/
public class Identifier
implements IIdentifier
@@ -85,7 +85,7 @@
}
else
{
- throw new ClassCastException("Identifier is not comparable to an object of class " + object.getClass().getCanonicalName() + ".");
+ return -1;
}
}