Commit in GeomConverter/src/org/lcsim/geometry/compact on MAIN
CompactReader.java+43-131.22 -> 1.23
JM: Factor out a method to create Readouts from the compact XML

GeomConverter/src/org/lcsim/geometry/compact
CompactReader.java 1.22 -> 1.23
diff -u -r1.22 -r1.23
--- CompactReader.java	7 Feb 2006 17:07:27 -0000	1.22
+++ CompactReader.java	15 Feb 2006 00:05:23 -0000	1.23
@@ -10,7 +10,7 @@
 import org.jdom.Element;
 import org.jdom.JDOMException;
 import org.jdom.input.SAXBuilder;
-import org.lcsim.geometry.util.BaseIDDecoder;
+import org.lcsim.geometry.IDDecoder;
 import org.lcsim.material.XMLMaterialManager;
 import org.lcsim.util.xml.ElementFactory;
 import org.lcsim.util.xml.JDOMExpressionFactory;
@@ -24,7 +24,7 @@
  * org.lcsim.geometry.GeometryReader class, which extends this.
  *
  * @author tonyj
- * @version $Id: CompactReader.java,v 1.22 2006/02/07 17:07:27 jeremy Exp $
+ * @version $Id: CompactReader.java,v 1.23 2006/02/15 00:05:23 jeremy Exp $
  *
  */
 public class CompactReader
@@ -122,21 +122,30 @@
         for (Iterator i = readouts.getChildren("readout").iterator(); i.hasNext();)
         {
             Element readout = (Element) i.next();
-            Readout r = factory.createElement(Readout.class,readout,null);
-            Element segmentation = readout.getChild("segmentation");
             
-            /* Setup a Segmentation for the Calorimeter. */
-            if (segmentation != null)
-            {
-                String type = segmentation.getAttributeValue("type");
-                Segmentation seg = factory.createElement(Segmentation.class, segmentation, type);
-                r.setSegmentation(seg);
+            Readout r = null;
+            try {
+                r = createReadout(readout);
             }
-            /* Setup a generic IDDecoder for the tracker Readout. */
-            else
+            catch (Exception e)
             {
-                r.setIDDecoder( new BaseIDDecoder() );
+                throw new RuntimeException(e);
             }
+            //Readout r = factory.createElement(Readout.class,readout,null);            
+            //Element segmentation = readout.getChild("segmentation");
+            
+            /* Setup a Segmentation for the Calorimeter. */
+            //if (segmentation != null)
+            //{
+            //    String type = segmentation.getAttributeValue("type");
+            //    Segmentation seg = factory.createElement(Segmentation.class, segmentation, type);
+            //    r.setSegmentation(seg);
+            //}
+            /* Setup a generic IDDecoder for the tracker Readout. */
+            //else
+            //{
+            //    r.setIDDecoder( new org.lcsim.geometry.util.TrackerIDDecoder() );
+            //}
             
             readoutMap.put(r.getName(),r);
             det.addReadout(r);
@@ -144,6 +153,27 @@
         return readoutMap;
     }
     
+    private Readout createReadout(Element readoutElement) throws Exception
+    {
+        Readout readout = factory.createElement(Readout.class,readoutElement,null);
+        Element segmentation = readoutElement.getChild("segmentation");
+        
+        // Setup an IDDecoder, i.e. Segmentation, for the Calorimeter. 
+        if (segmentation != null)
+        {
+            String type = segmentation.getAttributeValue("type");
+            Segmentation seg = factory.createElement(Segmentation.class, segmentation, type);
+            readout.setSegmentation(seg);
+        }
+        // No segmentation means a TrackerIDDecoder. 
+        else
+        {
+            readout.setIDDecoder( new org.lcsim.geometry.util.TrackerIDDecoder() );
+        }
+        
+        return readout;
+    }
+    
     private void readSubdetectors(Element lccdd, Detector det, Map<String,Readout> readoutMap) throws JDOMException, ElementCreationException
     {
         Element detectors = lccdd.getChild("detectors");
CVSspam 0.2.8