Print

Print


Commit in GeomConverter/src/org/lcsim/geometry/compact on MAIN
CompactReader.java+26-21.34 -> 1.35
JM: resolve compact schema on the classpath; WIP on gdml includes

GeomConverter/src/org/lcsim/geometry/compact
CompactReader.java 1.34 -> 1.35
diff -u -r1.34 -r1.35
--- CompactReader.java	8 Dec 2007 02:08:24 -0000	1.34
+++ CompactReader.java	14 Dec 2007 21:47:42 -0000	1.35
@@ -2,6 +2,7 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -27,7 +28,7 @@
  * org.lcsim.geometry.GeometryReader class, which extends this.
  *
  * @author tonyj
- * @version $Id: CompactReader.java,v 1.34 2007/12/08 02:08:24 jeremy Exp $
+ * @version $Id: CompactReader.java,v 1.35 2007/12/14 21:47:42 jeremy Exp $
  *
  */
 public class CompactReader
@@ -75,7 +76,8 @@
         builder.setFeature("http://apache.org/xml/features/validation/schema", true);
         
         // Add an EntityResolver that caches to ~/.cache
-        builder.setEntityResolver(new CachingEntityResolver());
+        //builder.setEntityResolver(new CachingEntityResolver());
+        builder.setEntityResolver(new ClasspathEntityResolver("/org/lcsim"));
        
         doc = builder.build(in);
         
@@ -91,6 +93,7 @@
         readVisAttributes(lccdd, det);
         readSubdetectors(lccdd, det, readoutMap);        
         readFields(lccdd, det);
+        readIncludes(lccdd, det);
         
         return det;
     }
@@ -282,6 +285,27 @@
         return doc;
     }
     
+    void readIncludes(Element lccdd, Detector det)
+    {
+        Element includes = lccdd.getChild("includes");
+        
+        if (includes == null)
+            return;
+        
+        for (Object o : includes.getChildren("gdmlFile"))
+        {
+            Element gdmlFile = (Element)o;
+            String ref = gdmlFile.getAttributeValue("ref");
+            try {
+                det.addGDMLReference(new URL(ref));
+            }
+            catch (Exception x)
+            {
+                throw new RuntimeException(x);
+            }
+        }
+    }
+    
     /**
      * Setup scaling variables for compact description.
      * These are usable within subsequent <detector> elements. 
CVSspam 0.2.8