Print

Print


Commit in GeomConverter/src/org/lcsim/detector on MAIN
DetectorElementMap.java+17added 1.1
DetectorElementContainer.java-91.9 -> 1.10
DetectorElementStore.java+33-231.7 -> 1.8
identifier/Identifier.java+3-31.4 -> 1.5
+53-35
1 added + 3 modified, total 4 files
JM: Use a DetectorElementMap class for lookup of DetectorElements by id.

GeomConverter/src/org/lcsim/detector
DetectorElementMap.java added at 1.1
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
DetectorElementContainer.java 1.9 -> 1.10
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
DetectorElementStore.java 1.7 -> 1.8
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
Identifier.java 1.4 -> 1.5
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;
         }        
     }    
     
CVSspam 0.2.8