Author: [log in to unmask]
Date: Thu Jan 15 17:32:50 2015
New Revision: 1944
Log:
Add utility class for getting the list of available steering resource files.
Added:
java/trunk/steering-files/src/main/java/
java/trunk/steering-files/src/main/java/org/
java/trunk/steering-files/src/main/java/org/hps/
java/trunk/steering-files/src/main/java/org/hps/steering/
java/trunk/steering-files/src/main/java/org/hps/steering/SteeringFileCatalog.java
Added: java/trunk/steering-files/src/main/java/org/hps/steering/SteeringFileCatalog.java
=============================================================================
--- java/trunk/steering-files/src/main/java/org/hps/steering/SteeringFileCatalog.java (added)
+++ java/trunk/steering-files/src/main/java/org/hps/steering/SteeringFileCatalog.java Thu Jan 15 17:32:50 2015
@@ -0,0 +1,60 @@
+package org.hps.steering;
+
+import java.io.IOException;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+/**
+ * This is a static utility class for getting the list of steering file resources.
+ *
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public final class SteeringFileCatalog {
+
+ private SteeringFileCatalog() {
+ }
+
+ /**
+ * Find the list of steering files in the standard resource directory.
+ * @return The list of steering files.
+ */
+ public static List<String> find() {
+ return find("org/hps/steering");
+ }
+
+ /**
+ * Find a list of steering files with the given resource directory.
+ * @param resourceDirectory The resource directory.
+ * @return The list of matching steering files.
+ */
+ public static List<String> find(String resourceDirectory) {
+ List<String> resources = new ArrayList<String>();
+ URL url = SteeringFileCatalog.class.getResource("SteeringFileCatalog.class");
+ String scheme = url.getProtocol();
+ if (!"jar".equals(scheme)) {
+ throw new IllegalArgumentException("Unsupported URL protocol: " + url.getProtocol());
+ }
+ try {
+ JarURLConnection con = (JarURLConnection) url.openConnection();
+ JarFile archive = con.getJarFile();
+ Enumeration<JarEntry> entries = archive.entries();
+ while (entries.hasMoreElements()) {
+ JarEntry entry = entries.nextElement();
+ if (entry.getName().endsWith(".lcsim") &&
+ (resourceDirectory == null || resourceDirectory.length() == 0 || entry.getName().contains(resourceDirectory))) {
+ // Accept the file if it ends with .lcsim and the resource directory matches or is not set (e.g. null or zero length string).
+ resources.add("/" + entry.getName());
+ }
+ }
+ archive.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return resources;
+ }
+}
|