Author: [log in to unmask] Date: Tue Sep 1 18:59:42 2015 New Revision: 3486 Log: Fixup JSON for adding datasets. Modified: java/trunk/datacat-client/src/main/java/org/hps/datacat/client/JSONUtilities.java Modified: java/trunk/datacat-client/src/main/java/org/hps/datacat/client/JSONUtilities.java ============================================================================= --- java/trunk/datacat-client/src/main/java/org/hps/datacat/client/JSONUtilities.java (original) +++ java/trunk/datacat-client/src/main/java/org/hps/datacat/client/JSONUtilities.java Tue Sep 1 18:59:42 2015 @@ -1,5 +1,6 @@ package org.hps.datacat.client; +import java.util.HashMap; import java.util.Map; import org.json.JSONArray; @@ -20,21 +21,37 @@ * @return the created JSON dataset object */ static JSONObject createJSONDataset(Map<String, Object> parameters, Map<String, Object> metadata) { + 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("resource", parameters.get("resource")); + dataset.put("site", parameters.get("site")); dataset.put("fileFormat", parameters.get("fileFormat")); dataset.put("name", parameters.get("name")); - if (metadata != null) { - JSONArray jsonMetadata = createJSONMetadataArray(metadata); + + Map<String, Object> metadataCopy = new HashMap<String, Object>(); + metadataCopy.putAll(metadata); + + // This metadata needs to be set at the top-level and not in versionMetadata. + if (metadataCopy.containsKey("runMin")) { + dataset.put("runMin", metadataCopy.get("runMin")); + metadataCopy.remove("runMin"); + } + if (metadataCopy.containsKey("runMax")) { + dataset.put("runMax", metadataCopy.get("runMax")); + metadataCopy.remove("runMax"); + } + if (metadataCopy.containsKey("eventCount")) { + dataset.put("eventCount", metadataCopy.get("eventCount")); + metadataCopy.remove("eventCount"); + } + + if (metadata != null && metadata.size() != 0) { + JSONArray jsonMetadata = createJSONMetadataArray(metadataCopy); dataset.put("versionMetadata", jsonMetadata); } + return dataset; } @@ -62,7 +79,6 @@ JSONArray array = new JSONArray(); for (Map.Entry<String, Object> entry : metadata.entrySet()) { JSONObject metadataObject = new JSONObject(); - metadataObject.put(entry.getKey(), entry.getValue()); metadataObject.put("key", entry.getKey()); Object rawValue = entry.getValue(); if (rawValue instanceof String) {