GeomConverter/src/org/lcsim/geometry/compact
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.