From 1710a94e8c70838f1d2880097fa17846f69887a4 Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Thu, 5 Nov 2015 03:57:41 +0000 Subject: [PATCH] introduced experiment DS rest api --- .../java/gov/anl/aps/dm/api/DmRestApi.java | 3 +- .../gov/anl/aps/dm/api/ExperimentDsApi.java | 78 +++++++++++++++++++ .../anl/aps/dm/common/constants/DmStatus.java | 7 +- .../common/exceptions/DmExceptionFactory.java | 15 ++++ .../anl/aps/dm/common/objects/Experiment.java | 17 ++++ 5 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 src/java/DmWebPortal/src/java/gov/anl/aps/dm/api/ExperimentDsApi.java create mode 100644 src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/objects/Experiment.java diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/api/DmRestApi.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/api/DmRestApi.java index 484c39a7..a1b89984 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/api/DmRestApi.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/api/DmRestApi.java @@ -666,8 +666,7 @@ public class DmRestApi { //client.login("sveseli", "sveseli"); HashMap<String, String> data = new HashMap<>(); //data.put("parentDirectory", "/"); - String drawing = client.invokeGetRequest("/pdmLink/drawings/D14100201-113160.asm"); - System.out.println("Drawing: \n" + drawing); + client.invokeGetRequest("/experiment/e1"); } catch (DmException ex) { System.out.println("Sorry: " + ex); } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/api/ExperimentDsApi.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/api/ExperimentDsApi.java new file mode 100644 index 00000000..de80845b --- /dev/null +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/api/ExperimentDsApi.java @@ -0,0 +1,78 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package gov.anl.aps.dm.api; + +import gov.anl.aps.dm.common.exceptions.ConfigurationError; +import gov.anl.aps.dm.common.exceptions.DmException; +import gov.anl.aps.dm.common.exceptions.InvalidArgument; +import gov.anl.aps.dm.common.exceptions.ObjectNotFound; +import gov.anl.aps.dm.common.objects.DmObjectFactory; +import gov.anl.aps.dm.common.objects.Experiment; +import gov.anl.aps.dm.common.utilities.ArgumentUtility; +import java.util.HashMap; + +/** + * + * @author sveseli + */ +public class ExperimentDsApi extends DmRestApi { + + /** + * Constructor. + * + * @throws ConfigurationError if web service URL property is malformed or + * null + */ + public ExperimentDsApi() throws ConfigurationError { + super(); + } + + /** + * Constructor. + * + * @param webServiceUrl web service URL + * @throws ConfigurationError if web service URL is malformed or null + */ + public ExperimentDsApi(String webServiceUrl) throws ConfigurationError { + super(webServiceUrl); + } + + /** + * Update experiment (group users, etc.). + * + * @param experimentName experiment name + * @return Experiment object + * @throws InvalidArgument if provided name is empty or null + * @throws ObjectNotFound when specified experiment does not exist + * @throws DmException in case of all other errors + */ + public Experiment updateExperiment(String experimentName) throws InvalidArgument, ObjectNotFound, DmException { + ArgumentUtility.verifyNonEmptyString("Experiment name", experimentName); + String requestUrl = "/experiments/update"; + HashMap<String, String> requestData = new HashMap<>(); + requestData.put("name", ArgumentUtility.encode(experimentName)); + String jsonString = invokeSessionPutRequest(requestUrl, requestData); + Experiment experiment = (Experiment) DmObjectFactory.createDmObject(jsonString, Experiment.class); + return experiment; + } + + /* + * Main method, used for simple testing. + * + * @param args main arguments + */ + public static void main(String[] args) { + try { + ExperimentDsApi client = new ExperimentDsApi("https://dmstorage.svdev.net:22236/dm"); + client.login("dm", "dm"); + Experiment experiment = client.updateExperiment("e1"); + System.out.println("Updated experiment: \n" + experiment); + } catch (DmException ex) { + System.out.println("Sorry: " + ex); + } + } + +} diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/constants/DmStatus.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/constants/DmStatus.java index 548722c9..b269968b 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/constants/DmStatus.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/constants/DmStatus.java @@ -19,9 +19,8 @@ public class DmStatus { public static final int DM_INVALID_REQUEST = 11; public static final int DM_INVALID_SESSION = 12; public static final int DM_COMMAND_FAILED = 13; - public static final int DM_OBJECT_ALREADY_EXISTS = 14; - public static final int DM_OBJECT_NOT_FOUND = 15; + public static final int DM_OBJECT_NOT_FOUND = 14; + public static final int DM_OBJECT_ALREADY_EXISTS = 15; public static final int DM_INVALID_OBJECT_STATE = 16; - public static final int DM_IMAGE_PROCESSING_FAILED = 17; - public static final int DM_EXTERNAL_SERVICE_ERROR = 18; + public static final int DM_FILE_PROCESSING_ERROR = 17; } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/exceptions/DmExceptionFactory.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/exceptions/DmExceptionFactory.java index 637c291c..d067c3a7 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/exceptions/DmExceptionFactory.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/exceptions/DmExceptionFactory.java @@ -35,12 +35,21 @@ public class DmExceptionFactory { case DmStatus.DM_COMMUNICATION_ERROR: exc = new CommunicationError(); break; + case DmStatus.DM_CONFIGURATION_ERROR: + exc = new ConfigurationError(); + break; case DmStatus.DM_INTERNAL_ERROR: exc = new InternalError(); break; + case DmStatus.DM_DB_ERROR: + exc = new DbError(); + break; case DmStatus.DM_INVALID_ARGUMENT: exc = new InvalidArgument(); break; + case DmStatus.DM_INVALID_REQUEST: + exc = new InvalidRequest(); + break; case DmStatus.DM_INVALID_SESSION: exc = new InvalidSession(); break; @@ -50,6 +59,12 @@ public class DmExceptionFactory { case DmStatus.DM_OBJECT_NOT_FOUND: exc = new ObjectNotFound(); break; + case DmStatus.DM_INVALID_OBJECT_STATE: + exc = new InvalidObjectState(); + break; + case DmStatus.DM_TIMEOUT_ERROR: + exc = new TimeoutError(); + break; default: exc = (DmException) Class.forName(fullType).newInstance(); } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/objects/Experiment.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/objects/Experiment.java new file mode 100644 index 00000000..cf334be8 --- /dev/null +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/common/objects/Experiment.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package gov.anl.aps.dm.common.objects; + +/** + * Experiment class. + */ +public class Experiment extends DmObject { + + public Experiment() { + } + +} -- GitLab