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-04-11 19:35:41 UTC (rev 478)
+++ java/sandbox/data-cat/src/main/java/org/srs/datacat/server/LcioContentChecker.java 2014-04-11 22:06:07 UTC (rev 479)
@@ -16,55 +16,81 @@
public class LcioContentChecker implements ContentChecker {
- private long minRunNumber = Integer.MAX_VALUE;
- private long maxRunNumber = Integer.MIN_VALUE;
- private long nevents = 0;
+ private long minRunNumber;
+ private long maxRunNumber;
+ private long nevents;
private String status;
private HashSet<String> uniqueCollections;
+ private HashSet<String> uniqueDetectors;
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;
+ nevents = 0;
status = "OK";
uniqueCollections = new HashSet<String>();
+ uniqueDetectors = new HashSet<String>();
metaData = new HashMap<String, Object>();
+
+ // Open file from URL.
if (!url.getProtocol().equals("file")) {
throw new IOException("Only file protocol is supported.");
}
LCReader reader = LCFactory.getInstance().createLCReader();
reader.open(url.getPath());
- LCEvent event = reader.readNextEvent();
- minRunNumber = Integer.MAX_VALUE;
- maxRunNumber = Integer.MIN_VALUE;
+
+ // Loop over all events.
+ LCEvent event = reader.readNextEvent();
while (event != null) {
- int thisRunNumber = event.getRunNumber();
-
+ // Run number setting.
+ int thisRunNumber = event.getRunNumber();
if (thisRunNumber < minRunNumber)
minRunNumber = thisRunNumber;
if (thisRunNumber > maxRunNumber)
maxRunNumber = thisRunNumber;
+ // Collection names.
uniqueCollections.addAll(Arrays.asList(event.getCollectionNames()));
+ // Detectors.
+ uniqueDetectors.add(event.getDetectorName());
+
+ // Number of events.
nevents++;
+ // Get next event.
event = reader.readNextEvent();
}
+ // Close the reader.
+ reader.close();
+
+ // Sort collection names and insert into meta data.
List<String> sortedCollections = new ArrayList<String>(uniqueCollections);
- Collections.sort(sortedCollections);
-
+ Collections.sort(sortedCollections);
StringBuffer buff = new StringBuffer();
for (String collectionName : sortedCollections) {
buff.append(collectionName);
buff.append(',');
}
- buff.setLength(buff.length() - 1);
-
+ buff.setLength(buff.length() - 1);
metaData.put("sCollections", buff.toString());
- reader.close();
+ // Sort detector names and insert into meta data.
+ List<String> sortedDetectors = new ArrayList<String>(uniqueDetectors);
+ Collections.sort(sortedDetectors);
+ buff = new StringBuffer();
+ for (String detectorName : sortedDetectors) {
+ buff.append(detectorName);
+ buff.append(',');
+ }
+ buff.setLength(buff.length() - 1);
+ metaData.put("sDetectors", buff.toString());
}
@Override