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; + } + } + }