Author: [log in to unmask] Date: Wed Jun 29 16:05:05 2016 New Revision: 4414 Log: Add example of getting datacat records for a run. Added: java/trunk/crawler/src/main/java/org/hps/crawler/DatacatPrintRun.java (with props) Added: java/trunk/crawler/src/main/java/org/hps/crawler/DatacatPrintRun.java ============================================================================= --- java/trunk/crawler/src/main/java/org/hps/crawler/DatacatPrintRun.java (added) +++ java/trunk/crawler/src/main/java/org/hps/crawler/DatacatPrintRun.java Wed Jun 29 16:05:05 2016 @@ -0,0 +1,81 @@ +package org.hps.crawler; + +import java.util.Map; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.srs.datacat.client.Client; +import org.srs.datacat.client.ClientBuilder; +import org.srs.datacat.model.DatasetModel; +import org.srs.datacat.model.DatasetResultSetModel; +import org.srs.datacat.model.dataset.DatasetLocationModel; +import org.srs.datacat.model.dataset.DatasetWithViewModel; + +/** + * Example of printing information from all files for a given run in the datacat. + * @author jeremym + */ +public class DatacatPrintRun { + + /* metadata fields that should be included in search results */ + private static final String[] METADATA_FIELDS = { + "BAD_EVENTS", + "BLINDED", + "END_EVENT_COUNT", + "END_TIMESTAMP", + "FILE", + "FIRST_HEAD_TIMESTAMP", + "FIRST_PHYSICS_EVENT", + "LAST_HEAD_TIMESTAMP", + "LAST_PHYSICS_EVENT", + "LED_COSMIC", + "PAIRS0", + "PAIRS1", + "PHYSICS_EVENTS", + "PULSER", + "SINGLES0", + "SINGLES1", + "TI_TIME_MAX_OFFSET", + "TI_TIME_MIN_OFFSET", + "TI_TIME_N_OUTLIERS", + "TRIGGER_RATE" + }; + + public static void main(String[] args) throws Exception { + if (args.length == 0) { + throw new RuntimeException("Missing run number argument."); + } + int run = Integer.parseInt(args[0]); + printRun(run); + } + + private static void printRun(int run) throws Exception { + + /* initialize datacat client */ + Client client = new ClientBuilder().setUrl("http://hpsweb.jlab.org/datacat/r").build(); + + /* perform dataset search */ + DatasetResultSetModel results = client.searchForDatasets( + "/HPS/data/raw", + "current", /* dataset version */ + "JLAB", + "fileFormat eq 'EVIO' AND dataType eq 'RAW' AND runMin eq " + run, /* basic query */ + new String[] {"FILE"}, /* sort on file number */ + METADATA_FIELDS /* metadata field values to return from query */ + ); + + /* print results including metadata */ + for (DatasetModel dataset : results) { + DatasetWithViewModel datasetView = (DatasetWithViewModel) dataset; + DatasetLocationModel loc = datasetView.getViewInfo().getLocations().iterator().next(); + System.out.println("name: " + datasetView.getName() + "; path: " + datasetView.getPath() + "; resource: " + loc.getResource()); + Map<String, Object> metadata = datasetView.getMetadataMap(); + SortedSet<String> keys = new TreeSet<String>(metadata.keySet()); + for (String key : keys) { + Object value = metadata.get(key); + System.out.println(" " + key + " = " + value); + } + System.out.println(); + } + } +}