LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  August 2015

HPS-SVN August 2015

Subject:

r3412 - in /java/trunk/record-util: ./ src/main/java/org/hps/datacat/

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Thu, 27 Aug 2015 02:32:53 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (940 lines)

Author: [log in to unmask]
Date: Wed Aug 26 19:32:50 2015
New Revision: 3412

Log:
Current working version of new datacat API.

Added:
    java/trunk/record-util/src/main/java/org/hps/datacat/DatacatFactory.java
    java/trunk/record-util/src/main/java/org/hps/datacat/Dataset.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatasetDataType.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatasetFileFormat.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatasetImpl.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatasetLocation.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatasetLocationImpl.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatasetMetadata.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatasetSite.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatasetUtilities.java
    java/trunk/record-util/src/main/java/org/hps/datacat/HttpUtilities.java
    java/trunk/record-util/src/main/java/org/hps/datacat/JSONUtilities.java
    java/trunk/record-util/src/main/java/org/hps/datacat/ScanStatus.java
Removed:
    java/trunk/record-util/src/main/java/org/hps/datacat/DatacatUtilities.java
Modified:
    java/trunk/record-util/pom.xml
    java/trunk/record-util/src/main/java/org/hps/datacat/DatacatClient.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatacatClientImpl.java
    java/trunk/record-util/src/main/java/org/hps/datacat/DatacatConstants.java

Modified: java/trunk/record-util/pom.xml
 =============================================================================
--- java/trunk/record-util/pom.xml	(original)
+++ java/trunk/record-util/pom.xml	Wed Aug 26 19:32:50 2015
@@ -45,5 +45,15 @@
 	    <artifactId>json</artifactId>
 	    <version>20140107</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.4.1</version>
+        </dependency>
+        <dependency>
+	    <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+        </dependency>
     </dependencies>
 </project>

Modified: java/trunk/record-util/src/main/java/org/hps/datacat/DatacatClient.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatacatClient.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatacatClient.java	Wed Aug 26 19:32:50 2015
@@ -1,6 +1,6 @@
 package org.hps.datacat;
 
-import java.net.URL;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -9,24 +9,78 @@
  * @author Jeremy McCormick, SLAC
  */
 public interface DatacatClient {
-    
-    int addDataset(String folder, Map<String, Object> parameters);
-    
+
+    /**
+     * Add a dataset to the data catalog.
+     * 
+     * @param folder the folder which must already exist
+     * @param dataType the data type
+     * @param resource the resource (path)
+     * @param site the site of the file 
+     * @param fileFormat the file format
+     * @param name the name of the dataset
+     * @return the HTTP status code from the request
+     */
+    int addDataset(String folder, DatasetDataType dataType, String resource, DatasetSite site, DatasetFileFormat fileFormat, String name);
+            
+    /**
+     * Create a folder in the data catalog.
+     * 
+     * @param folder the folder's path
+     * @return the HTTP status code from the request
+     */
     int makeFolder(String folder);
     
-    int patchDataset(String folder, String datasetName, Map<String, Object> metaData);
+    /**
+     * Add metadata to an existing dataset.
+     * 
+     * @param folder the folder
+     * @param datasetName the name of the dataset
+     * @param metaData the map of metadata where values can be <code>String</code>, <code>Integer</code> or <code>Float</code>
+     * @return the HTTP status code from the request
+     */
+    int addMetadata(String folder, String datasetName, Map<String, Object> metaData);
     
+    /**
+     * Remove a folder from the catalog.
+     * <p>
+     * It must be empty or an error will occur. 
+     * 
+     * @param folder the folder path
+     * @return the HHTP status code from the request
+     */
     int removeFolder(String folder);
     
+    /**
+     * Delete a dataset from the catalog.
+     * <p>
+     * This has no affect on the underlying resource (file).
+     * 
+     * @param path the path of the dataset
+     * @return the HTTP status code from the reqest
+     */
     int deleteDataset(String path);
+            
+    /**
+     * Find datasets in the catalog.
+     * <p>
+     * See <a href="http://docs.datacatalog.apiary.io/#search">Search Doc</a> for more details.
+     * 
+     * @param folder the folder path
+     * @param query the query to execute
+     * @return the HTTP status code from the request
+     */
+    List<Dataset> findDatasets(String folder, String query);
     
-    // TODO: get full info on dataset
+    // TODO: method to get dataset from path
+    // to get all metadata need site
+    // http://localhost:8080/datacat-v0.4-SNAPSHOT/r/path.json/HPS/derp/herp01;s=SLAC 
+    // use HTTP GET 
+    // Dataset getDataSet(String path);
     
-    // TODO: query for datasets on meta data or other info
-    
-    String getRootDir();
-    
-    URL getBaseUrl();
-    
-    String getSite();
+    // TODO: method to determine if folder or dataset exists
+    // http://localhost:8080/datacat-v0.4-SNAPSHOT/r/path.json/HPS/derp/derp
+    // will return 
+    // {"message":"File doesn't exist","type":"NoSuchFileException","cause":"Unable to resolve /HPS/derp/derp in parent Name: derp\tPath: /HPS/derp\t"}
+    // boolean exists(String path);
 }

Modified: java/trunk/record-util/src/main/java/org/hps/datacat/DatacatClientImpl.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatacatClientImpl.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatacatClientImpl.java	Wed Aug 26 19:32:50 2015
@@ -1,36 +1,43 @@
 package org.hps.datacat;
 
 import java.io.File;
+import java.io.UnsupportedEncodingException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.net.URLEncoder;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.json.JSONObject;
 
-
-public class DatacatClientImpl implements DatacatClient {
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+final class DatacatClientImpl implements DatacatClient {
 
     private URL url;
-    private String site;
+    private DatasetSite site;
     private String rootDir;
     
     /**
      * Create client with default parameters.
      */
     DatacatClientImpl() {        
-        this(DatacatConstants.BASE_URL, DatacatConstants.SLAC_SITE, DatacatConstants.ROOT_DIR);
+        this(DatacatConstants.BASE_URL, DatasetSite.SLAC, DatacatConstants.ROOT_DIR);
     }
     
     /**
      * Create client.
+     * 
      * @param baseUrl
      * @param site
      * @param rootDir
      */
-    DatacatClientImpl(String baseUrl, String site, String rootDir) {
+    DatacatClientImpl(String url, DatasetSite site, String rootDir) {
         try {
-            url = new URL(baseUrl);
+            this.url = new URL(url);
         } catch (MalformedURLException e) {
             throw new IllegalArgumentException("The URL is bad.", e);
         }
@@ -42,7 +49,7 @@
             throw new IllegalArgumentException("The root dir argument is null.");
         }
         this.rootDir = rootDir;
-        System.out.println("rootUrl: " + baseUrl);
+        System.out.println("url: " + url);
         System.out.println("site: " + site);
         System.out.println("rootDir: " + rootDir);
     }
@@ -50,19 +57,13 @@
     @Override
     public int removeFolder(String folder) {
         String fullUrl = url.toString() + "/r/folders.json/" + this.rootDir + folder;
-        return DatacatUtilities.doDelete(fullUrl);
+        return HttpUtilities.doDelete(fullUrl);
     }
 
     @Override
     public int deleteDataset(String path) {
         String fullUrl = url.toString() + "/r/datasets.json/" + this.rootDir + path;
-        return DatacatUtilities.doDelete(fullUrl);
-    }
-
-    @Override
-    public int addDataset(String folder, Map<String, Object> parameters) {
-        JSONObject dataset = DatacatUtilities.createJSONDataset(parameters);
-        return DatacatUtilities.doPost(url + "/r/datasets.json/" + this.rootDir + "/" + folder, dataset.toString());
+        return HttpUtilities.doDelete(fullUrl);
     }
         
     @Override
@@ -72,26 +73,57 @@
         String name = new File(path).getName();       
         parameters.put("name", name);
         parameters.put("_type", "folder");
-        JSONObject object = DatacatUtilities.createJSONFromMap(parameters);
-        return DatacatUtilities.doPost(url + "/r/folders.json/" + this.rootDir, object.toString());
-    }
-
-    @Override
-    public int patchDataset(String folder, String name, Map<String, Object> metaData) {
-        JSONObject object = DatacatUtilities.createJSONMetaData(metaData);
-        String patchUrl = this.url.toString() + "/r/datasets.json/" + this.rootDir + "/" + folder + "/" + name + ";v=current;s=" + this.site;
-        return DatacatUtilities.doPost(patchUrl, object.toString());
-    }      
-    
-    public String getRootDir() {
-        return this.rootDir;
+        JSONObject object = JSONUtilities.createJSONFromMap(parameters);
+        return HttpUtilities.doPost(url + "/r/folders.json/" + this.rootDir, object.toString());
     }
     
-    public URL getBaseUrl() {
-        return this.url;
-    }
+    @Override
+    public int addMetadata(String folder, String name, Map<String, Object> metaData) {
+        JSONObject object = JSONUtilities.createJSONMetaData(metaData);
+        String patchUrl = this.url.toString() + "/r/datasets.json/" + this.rootDir + "/" + folder + "/" + name + ";v=current;s=" + this.site;
+                
+        return HttpUtilities.doPatch(patchUrl, object.toString());
+    }      
+
+    // example
+    // http://localhost:8080/datacat-v0.4-SNAPSHOT/r/search.json/HPS/derp?filter=run+%3E+1000
+    @Override
+    public List<Dataset> findDatasets(String directory, String query) {
+        
+        String fullUrl = this.url.toString() + "/r/search.json/" + this.rootDir + "/";
+        if (directory != null) {
+            fullUrl += directory;
+        }
+        fullUrl += ";s=" + this.site.name();
+        if (query != null) {
+            String encoded = null;        
+            try {
+                encoded = URLEncoder.encode(query, "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                throw new RuntimeException(e);
+            }
+            fullUrl += "?filter=" + encoded;
+        }
+        System.out.println("query: " + fullUrl);
+        StringBuffer outputBuffer = new StringBuffer();
+        int response = HttpUtilities.doGet(fullUrl, outputBuffer);
+        System.out.println("response: " + response);
+        System.out.println("output: " + outputBuffer.toString());
+        
+        // Build and return dataset list
+        JSONObject searchResults = new JSONObject(outputBuffer.toString());
+        return DatasetUtilities.getDatasetsFromSearch(searchResults);
+    }    
     
-    public String getSite() {
-        return this.site;
+    @Override
+    public int addDataset(String folder, DatasetDataType dataType, String resource, DatasetSite site, DatasetFileFormat fileFormat, String name) {
+        Map<String, Object> parameters = new HashMap<String, Object>();
+        parameters.put("dataType", dataType.toString());
+        parameters.put("resource", resource);
+        parameters.put("site", DatasetSite.SLAC.name());
+        parameters.put("fileFormat", fileFormat.toString());        
+        parameters.put("name", name);           
+        JSONObject dataset = JSONUtilities.createJSONDataset(parameters);
+        return HttpUtilities.doPost(url + "/r/datasets.json/" + this.rootDir + "/" + folder, dataset.toString());
     }
 }

Modified: java/trunk/record-util/src/main/java/org/hps/datacat/DatacatConstants.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatacatConstants.java	(original)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatacatConstants.java	Wed Aug 26 19:32:50 2015
@@ -1,29 +1,20 @@
 package org.hps.datacat;
 
+/**
+ * Constants for the HPS datacat.
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+final class DatacatConstants {
 
-public class DatacatConstants {
-
+    /**
+     * The root directory in the catalog for HPS folders.
+     */
     public static final String ROOT_DIR = "HPS";
         
-    public static final String BASE_URL = "http://localhost:8080/datacat-v0.4-SNAPSHOT";
-    
-    public static final String SLAC_SITE = "SLAC";
-    
-    public static final String JLAB_SITE = "JLAB";
-    
-    public static final String EVIO_FORMAT = "EVIO";
-    
-    public static final String LCIO_FORMAT = "LCIO";
-    
-    public static final String ROOT_FORMAT = "ROOT";
-    
-    public static final String AIDA_FORMAT = "AIDA";
-    
-    public static final String DQM_TYPE = "DQM";
-    
-    public static final String RAW_TYPE = "RAW";
-    
-    public static final String RECON_TYPE = "RECON";
-    
-    public static final String DST_TYPE = "DST";        
+    /**
+     * The base URL of the datacat server.
+     */
+    // FIXME: This needs to be more easily configurable and not hard-coded.
+    public static final String BASE_URL = "http://localhost:8080/datacat-v0.4-SNAPSHOT";            
 }

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatacatFactory.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatacatFactory.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatacatFactory.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,18 @@
+package org.hps.datacat;
+
+/**
+ * Factory class for providing user access to interfaces with protected implementation classes.
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+public class DatacatFactory {
+        
+    /**
+     * Create a datacat client.
+     * 
+     * @return the datacat client
+     */
+    public DatacatClient createClient() {
+        return new DatacatClientImpl();
+    }
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/Dataset.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/Dataset.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/Dataset.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,26 @@
+package org.hps.datacat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ *
+ */
+public interface Dataset {
+    
+    String getName();
+    
+    String getPath();
+    
+    List<DatasetLocation> getLocations();
+        
+    DatasetFileFormat getFileFormat();
+    
+    DatasetDataType getDataType();
+    
+    Date getCreated();
+    
+    //DatasetMetadata getMetadata();
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatasetDataType.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatasetDataType.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatasetDataType.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,14 @@
+package org.hps.datacat;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ *
+ */
+public enum DatasetDataType {
+    DQM,
+    RAW,
+    RECON,
+    DST,
+    TEST;
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatasetFileFormat.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatasetFileFormat.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatasetFileFormat.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,14 @@
+package org.hps.datacat;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ *
+ */
+public enum DatasetFileFormat {
+    EVIO,
+    LCIO,
+    ROOT,
+    AIDA,
+    TEST;
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatasetImpl.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatasetImpl.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatasetImpl.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,81 @@
+package org.hps.datacat;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ *
+ */
+final class DatasetImpl implements Dataset {
+    
+    private String name;
+    private String path;
+    private DatasetDataType dataType;
+    private DatasetFileFormat fileFormat;
+    private List<DatasetLocation> locations = new ArrayList<DatasetLocation>();
+    private Date created;
+    
+    private static final SimpleDateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+    
+    DatasetImpl(JSONObject jsonObject) {
+        parse(jsonObject);
+    }
+        
+    private void parse(JSONObject jsonObject) {
+        if (!jsonObject.getString("_type").equals("dataset#full")) {
+            throw new IllegalArgumentException("Wrong _type in JSON data: " + jsonObject.getString("_type"));
+        }
+        name = jsonObject.getString("name");
+        path = jsonObject.getString("path");
+        dataType = DatasetDataType.valueOf(jsonObject.getString("dataType"));
+        fileFormat = DatasetFileFormat.valueOf(jsonObject.getString("fileFormat"));
+        try {
+            created = DATE_PARSER.parse(jsonObject.getString("created"));
+        } catch (ParseException e) {
+            throw new IllegalArgumentException("Bad created value: " + jsonObject.getString("created"), e);
+        }        
+        JSONArray locationsArray = jsonObject.getJSONArray("locations");
+        for (int i = 0; i < locationsArray.length(); i++) {
+            this.locations.add(new DatasetLocationImpl(locationsArray.getJSONObject(i)));
+        }        
+    }
+    
+    @Override
+    public String getName() {
+        return this.name;
+    }
+
+    @Override
+    public String getPath() {
+        return this.path;
+    }
+
+    @Override
+    public List<DatasetLocation> getLocations() {
+        return Collections.unmodifiableList(this.locations);
+    }
+
+    @Override
+    public DatasetFileFormat getFileFormat() {
+        return this.fileFormat;
+    }
+
+    @Override
+    public DatasetDataType getDataType() {
+        return this.dataType;
+    }
+
+    @Override
+    public Date getCreated() {
+        return this.created;
+    }
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatasetLocation.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatasetLocation.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatasetLocation.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,23 @@
+package org.hps.datacat;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ *
+ */
+public interface DatasetLocation {
+    
+    DatasetSite getSite();
+    
+    String getResource();
+    
+    ScanStatus getScanStatus();
+    
+    long getSize();
+    
+    int getRunMin();
+    
+    int getRunMax();
+    
+    int getEventCount();
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatasetLocationImpl.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatasetLocationImpl.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatasetLocationImpl.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,73 @@
+package org.hps.datacat;
+
+import org.json.JSONObject;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+final class DatasetLocationImpl implements DatasetLocation {
+
+    private DatasetSite site;
+    private String resource;
+    private ScanStatus scanStatus = ScanStatus.UNKNOWN;
+    private long size;
+    private int runMin;
+    private int runMax;
+    private int eventCount;
+    
+    DatasetLocationImpl(JSONObject jsonObject) {
+        parse(jsonObject);
+    }
+    
+    private void parse(JSONObject jsonObject) {
+        if (!jsonObject.getString("_type").equals("location")) {
+            throw new IllegalArgumentException("Wrong _type in JSON data: " + jsonObject.getString("_type"));
+        }
+        this.site = DatasetSite.valueOf(jsonObject.getString("name"));
+        this.resource = jsonObject.getString("resource");
+        this.size = jsonObject.getLong("size");        
+        if (!jsonObject.get("scanStatus").equals(JSONObject.NULL)) {            
+            this.scanStatus = ScanStatus.valueOf(jsonObject.getString("scanStatus"));
+        }
+        this.runMin = jsonObject.getInt("runMin");
+        this.runMax = jsonObject.getInt("runMax");
+        this.eventCount = jsonObject.getInt("eventCount");
+    }
+    
+    @Override
+    public DatasetSite getSite() {
+        return this.site;
+    }
+
+    @Override
+    public String getResource() {
+        return resource;
+    }
+
+    @Override
+    public ScanStatus getScanStatus() {
+        return scanStatus;
+    }
+
+    @Override
+    public long getSize() {
+        return this.size;
+    }
+
+    @Override
+    public int getRunMin() {
+        return this.runMin;
+    }
+
+    @Override
+    public int getRunMax() {
+        return this.runMax;
+    }
+
+    @Override
+    public int getEventCount() {
+        return this.eventCount;
+    }
+
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatasetMetadata.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatasetMetadata.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatasetMetadata.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,17 @@
+package org.hps.datacat;
+
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+public interface DatasetMetadata {
+        
+    float getFloat(String key);
+    
+    int getInt(String key);
+    
+    String getString(String key);
+    
+    boolean hasKey(String key);
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatasetSite.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatasetSite.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatasetSite.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,11 @@
+package org.hps.datacat;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ *
+ */
+public enum DatasetSite {
+    SLAC,
+    JLAB;
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/DatasetUtilities.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/DatasetUtilities.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/DatasetUtilities.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,23 @@
+package org.hps.datacat;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+final class DatasetUtilities {
+    
+    static List<Dataset> getDatasetsFromSearch(JSONObject searchResults) {
+        List<Dataset> datasets = new ArrayList<Dataset>();
+        JSONArray resultsArray = searchResults.getJSONArray("results");
+        for (int i = 0; i < resultsArray.length(); i++) {
+            datasets.add(new DatasetImpl(resultsArray.getJSONObject(i)));
+        }
+        return datasets;
+    }
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/HttpUtilities.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/HttpUtilities.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/HttpUtilities.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,141 @@
+package org.hps.datacat;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPatch;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.InputStreamEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+final class HttpUtilities {
+
+    static int doPost(String urlLocation, String data) {
+        int responseCode = 0;
+        try {
+            URL url = new URL(urlLocation);
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/json");
+            connection.setDoOutput(true);
+            if (data != null) {
+                OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
+                out.write(data);
+                out.close();
+            }
+            System.out.println("url: " + urlLocation);
+            System.out.println("data: " + data);
+            System.out.println("response: " + connection.getResponseCode());
+            System.out.println("message: " + connection.getResponseMessage());
+            responseCode = connection.getResponseCode();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return responseCode;
+    }
+    
+    static int doGet(String urlLocation, StringBuffer stringBuffer) {
+        HttpURLConnection connection = null;
+        int response = 0;
+        try {
+            //System.out.println("doGet: " + urlLocation);
+            connection = (HttpURLConnection) new URL(urlLocation).openConnection();
+            connection.setRequestMethod("GET");
+            connection.setRequestProperty("Content-Type", "application/json");
+            connection.setRequestProperty("Accept", "application/json");
+            connection.setDoInput(true);
+            connection.connect();
+            if (stringBuffer != null) {
+                String output = IOUtils.toString(connection.getInputStream(), "UTF-8");            
+                stringBuffer.append(output);
+            }
+            response = connection.getResponseCode();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } finally {
+            connection.disconnect();
+        }
+        return response;
+    }    
+    
+    
+    static int doPatch(String urlLocation, String data) {
+        int responseCode = 0;        
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        HttpPatch httpPatch = null;
+        try {
+            httpPatch = new HttpPatch(new URI(urlLocation));            
+            InputStreamEntity entity = 
+                    new InputStreamEntity(
+                            new ByteArrayInputStream(
+                                    data.getBytes("UTF-8")), 
+                                    -1, 
+                                    ContentType.APPLICATION_JSON);
+            httpPatch.setEntity(entity);            
+            CloseableHttpResponse response = httpClient.execute(httpPatch);
+            System.out.println("status: " + response.getStatusLine());
+            try {
+                EntityUtils.consume(response.getEntity());
+            } finally {
+                response.close();
+            }            
+        } catch (URISyntaxException e) {
+            throw new IllegalArgumentException(e);
+        } catch(IOException e) {
+            throw new RuntimeException(e);
+        } finally {
+            try {
+                httpClient.close();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        }                   
+        return responseCode;
+    }    
+    
+    
+    static int doDelete(String fullUrl) {
+        int responseCode = 0;
+        try {
+            URL url = new URL(fullUrl);
+            System.out.println("deleting url: " + fullUrl);
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+            connection.setDoOutput(true);
+            connection.setRequestMethod("DELETE");
+            connection.connect();
+            responseCode = connection.getResponseCode();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return responseCode;
+    }
+    
+    static URL createURL(String... chunks) {
+        if (chunks.length == 0) {
+            throw new IllegalArgumentException("No arguments provided.");
+        }
+        String urlString = "";
+        for (String chunk : chunks) {
+            urlString += chunk;
+        }
+        try {
+            return new URL(urlString);
+        } catch (MalformedURLException e) {
+            throw new IllegalArgumentException("Bad URL string: " + urlString);
+        }
+    }
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/JSONUtilities.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/JSONUtilities.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/JSONUtilities.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,48 @@
+package org.hps.datacat;
+
+import java.util.Map;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+/**
+ * 
+ * @author Jeremy McCormick, SLAC
+ */
+final class JSONUtilities {
+    
+    static JSONObject createJSONDataset(Map<String, Object> parameters) {
+        JSONObject dataset = new JSONObject();
+        dataset.put("dataType", parameters.get("dataType"));
+        dataset.put("versionId", "new");
+        JSONObject location = new JSONObject();
+        location.put("resource", parameters.get("resource"));
+        location.put("site", parameters.get("site"));
+        JSONArray array = new JSONArray();
+        array.put(location);
+        dataset.put("locations", array);                
+        dataset.put("fileFormat", parameters.get("fileFormat"));
+        dataset.put("name", parameters.get("name"));
+        return dataset;
+    }
+    
+    static JSONObject createJSONFromMap(Map<String, Object> parameters) {
+        JSONObject object = new JSONObject();
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            object.put(entry.getKey(), entry.getValue());
+        }
+        return object;
+    }
+    
+    static JSONObject createJSONMetaData(Map<String, Object> metaData) {
+        JSONObject object = new JSONObject();
+        JSONArray array = new JSONArray();
+        for (Map.Entry<String, Object> entry : metaData.entrySet()) {
+            JSONObject value = new JSONObject();
+            value.put(entry.getKey(), entry.getValue());
+            array.put(value);
+        }                
+        object.put("versionMetadata", array);
+        return object;
+    }
+}

Added: java/trunk/record-util/src/main/java/org/hps/datacat/ScanStatus.java
 =============================================================================
--- java/trunk/record-util/src/main/java/org/hps/datacat/ScanStatus.java	(added)
+++ java/trunk/record-util/src/main/java/org/hps/datacat/ScanStatus.java	Wed Aug 26 19:32:50 2015
@@ -0,0 +1,8 @@
+package org.hps.datacat;
+
+
+public enum ScanStatus {
+    UNKNOWN,
+    UNSCANNED,
+    OK
+}

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use