Print

Print


Author: [log in to unmask]
Date: Tue Mar 31 16:02:01 2015
New Revision: 2640

Log:
Add minor additional functionality to DataSourceType enum.

Modified:
    java/trunk/record-util/src/main/java/org/hps/record/enums/DataSourceType.java

Modified: java/trunk/record-util/src/main/java/org/hps/record/enums/DataSourceType.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/enums/DataSourceType.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/record/enums/DataSourceType.java	Tue Mar 31 16:02:01 2015
@@ -1,21 +1,24 @@
 package org.hps.record.enums;
+
+import java.io.File;
 
 /**
  * The type of data source that will supply events to the app.
  */
 public enum DataSourceType {
 
-    ET_SERVER("ET Server"), 
-    EVIO_FILE("EVIO File"), 
-    LCIO_FILE("LCIO File");
+    ET_SERVER("ET Server", null), 
+    EVIO_FILE("EVIO File", "evio"), 
+    LCIO_FILE("LCIO File", "slcio");
 
     String description;
+    String extension;
 
     /**
      * Constructor which takes a description.
      * @param description The description of the data source type.
      */
-    private DataSourceType(String description) {
+    private DataSourceType(String description, String extension) {
         this.description = description;
     }
 
@@ -28,6 +31,14 @@
     }
     
     /**
+     * Get the extension associated with this data source type.
+     * @return The file extension of the data source type.
+     */
+    public String getExtension() {
+        return extension;
+    }
+    
+    /**
      * True if the source is file-based 
      * (e.g. not an ET server).
      * @return
@@ -35,4 +46,24 @@
     public boolean isFile() {
         return this.ordinal() > ET_SERVER.ordinal();
     }
+    
+    /**
+     * Figure out a reasonable data source type for the path string.
+     * This defaults to an ET source ((perhaps unreasonably!) if the 
+     * file extension is unrecognized.
+     * @param path The data source path.
+     * @return The data source type.
+     */
+    public static DataSourceType getDataSourceType(String path) {
+        if (path.endsWith("." + DataSourceType.LCIO_FILE.getExtension())) { 
+            return DataSourceType.LCIO_FILE;
+        } else if (path.contains("." + DataSourceType.EVIO_FILE.getExtension())) {
+            // For EVIO files, only check that the extension appears someplace in the name
+            // as typically the files from the DAQ look like "file.evio.0" etc.
+            return DataSourceType.EVIO_FILE;
+        } else {
+            return DataSourceType.ET_SERVER;
+        }
+    }
+    
 }