5 added + 4 modified, total 9 files
java/sandbox/data-cat/src/main/java/org/hps/datacat
--- java/sandbox/data-cat/src/main/java/org/hps/datacat/EvioMetaDataExtractor.java (rev 0)
+++ java/sandbox/data-cat/src/main/java/org/hps/datacat/EvioMetaDataExtractor.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -0,0 +1,28 @@
+package org.hps.datacat;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+
+import org.srs.datacat.server.ContentChecker;
+import org.srs.datacat.server.EvioContentChecker;
+
+public class EvioMetaDataExtractor implements MetaDataExtractor {
+
+ static String extension = "evio";
+ ContentChecker contentChecker = new EvioContentChecker();
+
+ public Map<String,Object> getMetaData(String location) {
+ File file = new File(location);
+ try {
+ contentChecker.setLocation(0, file.toURI().toURL());
+ return contentChecker.getMetaData();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public String handlesExtension() {
+ return extension;
+ }
+}
java/sandbox/data-cat/src/main/java/org/hps/datacat
--- java/sandbox/data-cat/src/main/java/org/hps/datacat/LcioMetaDataExtractor.java (rev 0)
+++ java/sandbox/data-cat/src/main/java/org/hps/datacat/LcioMetaDataExtractor.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -0,0 +1,28 @@
+package org.hps.datacat;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+
+import org.srs.datacat.server.ContentChecker;
+import org.srs.datacat.server.LcioContentChecker;
+
+public class LcioMetaDataExtractor implements MetaDataExtractor {
+
+ static String extension = "slcio";
+ ContentChecker contentChecker = new LcioContentChecker();
+
+ public Map<String,Object> getMetaData(String location) {
+ File file = new File(location);
+ try {
+ contentChecker.setLocation(0, file.toURI().toURL());
+ return contentChecker.getMetaData();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public String handlesExtension() {
+ return extension;
+ }
+}
\ No newline at end of file
java/sandbox/data-cat/src/main/java/org/hps/datacat
--- java/sandbox/data-cat/src/main/java/org/hps/datacat/MetaDataExtractor.java (rev 0)
+++ java/sandbox/data-cat/src/main/java/org/hps/datacat/MetaDataExtractor.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -0,0 +1,20 @@
+package org.hps.datacat;
+
+import java.util.Map;
+
+
+interface MetaDataExtractor {
+
+ /**
+ * Extract meta data from a file.
+ * @param location
+ * @return
+ */
+ public Map<String,Object> getMetaData(String location);
+
+ /**
+ * Get the extension handled by this class e.g. 'slcio', etc.
+ * @return The extension handled by the class.
+ */
+ String handlesExtension();
+}
java/sandbox/data-cat/src/main/java/org/hps/datacat
--- java/sandbox/data-cat/src/main/java/org/hps/datacat/MetaDataExtractorMain.java (rev 0)
+++ java/sandbox/data-cat/src/main/java/org/hps/datacat/MetaDataExtractorMain.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -0,0 +1,44 @@
+package org.hps.datacat;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class has a main method which will print out the meta data
+ * information for a file given as a command line argument. The printed
+ * information is suitable for passing directly as an argument to the Python script
+ * that is used to register new data files.
+ *
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public final class MetaDataExtractorMain {
+
+ static List<MetaDataExtractor> metaDataExtractors = new ArrayList<MetaDataExtractor>();
+
+ static {
+ metaDataExtractors.add(new LcioMetaDataExtractor());
+ metaDataExtractors.add(new EvioMetaDataExtractor());
+ }
+
+ static MetaDataExtractor findMetaDataExtractor(String path) {
+ String extension = path.substring(path.lastIndexOf(".") + 1);
+ //System.out.println("extension: " + extension);
+ for (MetaDataExtractor extractor : metaDataExtractors) {
+ if (extractor.handlesExtension().equals(extension))
+ return extractor;
+ }
+ return null;
+ }
+
+ public static void main(String[] args) {
+ if (args.length == 0)
+ throw new IllegalArgumentException("Path to file is required.");
+ String path = args[0];
+ MetaDataExtractor e = findMetaDataExtractor(path);
+ if (e == null) {
+ System.err.println("Unknown extension on file: " + path);
+ throw new IllegalArgumentException("No handler found for file.");
+ }
+ System.out.println(MetaDataUtil.toString(e.getMetaData(path)));
+ }
+}
java/sandbox/data-cat/src/main/java/org/hps/datacat
--- java/sandbox/data-cat/src/main/java/org/hps/datacat/MetaDataUtil.java (rev 0)
+++ java/sandbox/data-cat/src/main/java/org/hps/datacat/MetaDataUtil.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -0,0 +1,23 @@
+package org.hps.datacat;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.Map.Entry;
+
+
+public class MetaDataUtil {
+
+ static String toString(Map<String,Object> metaData) {
+ StringBuffer buffer = new StringBuffer();
+ for (Entry<String,Object> entry : metaData.entrySet()) {
+ buffer.append(entry.getKey() + "=");
+ if (entry.getValue() instanceof String || entry.getValue() instanceof Date) {
+ buffer.append("\"" + entry.getValue() + "\" ");
+ } else {
+ buffer.append(entry.getValue() + " ");
+ }
+ }
+ buffer.setLength(buffer.length() - 1);
+ return buffer.toString();
+ }
+}
java/sandbox/data-cat/src/main/java/org/srs/datacat/server
--- java/sandbox/data-cat/src/main/java/org/srs/datacat/server/EvioContentChecker.java 2014-06-02 23:50:37 UTC (rev 653)
+++ java/sandbox/data-cat/src/main/java/org/srs/datacat/server/EvioContentChecker.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -7,7 +7,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.hps.evio.EventConstants;
import org.jlab.coda.jevio.EvioEvent;
import org.jlab.coda.jevio.EvioException;
import org.jlab.coda.jevio.EvioReader;
@@ -17,6 +16,11 @@
*/
public class EvioContentChecker implements ContentChecker {
+ static final int PRESTART_EVENT_TAG = 17;
+ static final int GO_EVENT_TAG = 18;
+ static final int END_EVENT_TAG = 20;
+ static final int PHYSICS_EVENT_TAG = 1;
+
long minRunNumber;
long maxRunNumber;
long nevents;
@@ -40,7 +44,7 @@
EvioEvent event = reader.nextEvent();
while (event != null) {
int[] data = event.getIntData();
- if (EventConstants.isPreStartEvent(event)) {
+ if (isPreStartEvent(event)) {
int runNumber = data[1];
if (runNumber < minRunNumber) {
minRunNumber = runNumber;
@@ -48,7 +52,7 @@
if (runNumber > maxRunNumber) {
maxRunNumber = runNumber;
}
- } else if (EventConstants.isGoEvent(event)) {
+ } else if (isGoEvent(event)) {
int seconds = data[0];
long time = ((long) seconds) * 1000000000;
if (!metadata.containsKey("tStart")) {
@@ -56,7 +60,7 @@
} else {
throw new RuntimeException("More than one Go record was found!");
}
- } else if (EventConstants.isEndEvent(event)) {
+ } else if (isEndEvent(event)) {
int seconds = data[0];
long time = ((long) seconds) * 1000000000;
if (!metadata.containsKey("tEnd")) {
@@ -77,10 +81,6 @@
}
}
- private boolean isPhysicsEvent(EvioEvent event) {
- return (event.getHeader().getTag() == EventConstants.PHYSICS_EVENT_TAG);
- }
-
@Override
public long getEventCount() throws IOException {
return nevents;
@@ -109,4 +109,21 @@
@Override
public void close() throws IOException {
}
+
+ static boolean isPreStartEvent(EvioEvent event) {
+ return event.getHeader().getTag() == PRESTART_EVENT_TAG;
+ }
+
+ static boolean isGoEvent(EvioEvent event) {
+ return event.getHeader().getTag() == GO_EVENT_TAG;
+ }
+
+ static boolean isEndEvent(EvioEvent event) {
+ return event.getHeader().getTag() == END_EVENT_TAG;
+ }
+
+ static boolean isPhysicsEvent(EvioEvent event) {
+ return event.getHeader().getTag() == PHYSICS_EVENT_TAG;
+ }
+
}
java/sandbox/data-cat/src/main/java/org/srs/datacat/server
--- java/sandbox/data-cat/src/main/java/org/srs/datacat/server/LcioContentChecker.java 2014-06-02 23:50:37 UTC (rev 653)
+++ java/sandbox/data-cat/src/main/java/org/srs/datacat/server/LcioContentChecker.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -16,24 +16,28 @@
public class LcioContentChecker implements ContentChecker {
- private long minRunNumber;
- private long maxRunNumber;
+ //private long minRunNumber;
+ //private long maxRunNumber;
+ private long runNumber;
private long nevents;
private String status;
private HashSet<String> uniqueCollections;
- private HashSet<String> uniqueDetectors;
+ //private HashSet<String> uniqueDetectors;
+ String detectorName;
Map<String, Object> metaData;
@Override
public void setLocation(long datasetVersion, URL url) throws IOException {
// Initialize variables for this file.
- minRunNumber = Integer.MAX_VALUE;
- maxRunNumber = Integer.MIN_VALUE;
+ //minRunNumber = Integer.MAX_VALUE;
+ //maxRunNumber = Integer.MIN_VALUE;
+ runNumber = -1;
nevents = 0;
status = "OK";
uniqueCollections = new HashSet<String>();
- uniqueDetectors = new HashSet<String>();
+ //uniqueDetectors = new HashSet<String>();
+ detectorName = null;
metaData = new HashMap<String, Object>();
// Open file from URL.
@@ -43,29 +47,38 @@
LCReader reader = LCFactory.getInstance().createLCReader();
reader.open(url.getPath());
- // Loop over all events.
- LCEvent event = reader.readNextEvent();
- while (event != null) {
+ // Get the first event.
+ LCEvent event = reader.readNextEvent();
- // Run number setting.
- int thisRunNumber = event.getRunNumber();
+ if (event == null)
+ throw new IllegalArgumentException("The event file has zero events.");
+
+ //while (event != null) {
+
+ // Run number setting.
+ //int thisRunNumber
+ runNumber = event.getRunNumber();
+ metaData.put("nRun", runNumber);
+ /*
if (thisRunNumber < minRunNumber)
minRunNumber = thisRunNumber;
if (thisRunNumber > maxRunNumber)
maxRunNumber = thisRunNumber;
+ */
- // Collection names.
- uniqueCollections.addAll(Arrays.asList(event.getCollectionNames()));
+ // Collection names.
+ uniqueCollections.addAll(Arrays.asList(event.getCollectionNames()));
- // Detectors.
- uniqueDetectors.add(event.getDetectorName());
+ // Detectors.
+ //uniqueDetectors.add(event.getDetectorName());
+ detectorName = event.getDetectorName();
- // Number of events.
- nevents++;
+ // Number of events.
+ //nevents++;
- // Get next event.
- event = reader.readNextEvent();
- }
+ // Get next event.
+ //event = reader.readNextEvent();
+ //}
// Close the reader.
reader.close();
@@ -82,6 +95,7 @@
metaData.put("sCollections", buff.toString());
// Sort detector names and insert into meta data.
+ /*
List<String> sortedDetectors = new ArrayList<String>(uniqueDetectors);
Collections.sort(sortedDetectors);
buff = new StringBuffer();
@@ -90,22 +104,28 @@
buff.append(',');
}
buff.setLength(buff.length() - 1);
- metaData.put("sDetectors", buff.toString());
+ */
+ metaData.put("sDetectorName", detectorName);
+
+
}
@Override
public long getEventCount() throws IOException {
- return nevents;
+ //return nevents;
+ return 0;
}
@Override
public long getRunMin() throws IOException {
- return minRunNumber;
+ //return minRunNumber;
+ return runNumber;
}
@Override
public long getRunMax() throws IOException {
- return maxRunNumber;
+ //return maxRunNumber;
+ return runNumber;
}
@Override
java/sandbox/data-cat/src/test/java/org/srs/datacat/server
--- java/sandbox/data-cat/src/test/java/org/srs/datacat/server/EvioContentCheckerTest.java 2014-06-02 23:50:37 UTC (rev 653)
+++ java/sandbox/data-cat/src/test/java/org/srs/datacat/server/EvioContentCheckerTest.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -12,7 +12,7 @@
public void testEvioContentChecker() throws Exception {
ContentChecker checker = new EvioContentCheckerCreator().create();
- checker.setLocation(-1, new File(filePath).toURL());
+ checker.setLocation(-1, new File(filePath).toURI().toURL());
System.out.println("event count: " + checker.getEventCount());
System.out.println("run max: " + checker.getRunMax());
System.out.println("run min: " + checker.getRunMin());
@@ -20,7 +20,7 @@
System.out.println("meta data ...");
Map<String, Object> metaData = checker.getMetaData();
for (String key : metaData.keySet()) {
- System.out.println(" " + key + ": " + metaData.get(key));
+ System.out.println(" " + key + "=" + metaData.get(key));
}
}
}
java/sandbox/data-cat/src/test/java/org/srs/datacat/server
--- java/sandbox/data-cat/src/test/java/org/srs/datacat/server/LcioContentCheckerTest.java 2014-06-02 23:50:37 UTC (rev 653)
+++ java/sandbox/data-cat/src/test/java/org/srs/datacat/server/LcioContentCheckerTest.java 2014-06-03 00:01:16 UTC (rev 654)
@@ -17,7 +17,7 @@
File file = cache.getCachedFile(new URL(TEST_FILE_URL));
ContentChecker checker = new LcioContentCheckerCreator().create();
- checker.setLocation(-1, file.toURL());
+ checker.setLocation(-1, file.toURI().toURL());
System.out.println("event count: " + checker.getEventCount());
System.out.println("run max: " + checker.getRunMax());
System.out.println("run min: " + checker.getRunMin());
SVNspam 0.1