Search in sources :

Example 1 with SimulationSaveResponse

use of org.vcell.rest.server.RestDatabaseService.SimulationSaveResponse in project vcell by virtualcell.

the class BiomodelSimulationSaveServerResource method save.

@Override
public void save(JsonRepresentation jsonOverrides) throws JSONException {
    VCellApiApplication application = ((VCellApiApplication) getApplication());
    User vcellUser = application.getVCellUser(getChallengeResponse(), AuthenticationPolicy.prohibitInvalidCredentials);
    ArrayList<OverrideRepresentation> overrideRepresentations = new ArrayList<OverrideRepresentation>();
    if (jsonOverrides != null && jsonOverrides.getMediaType().isCompatible(MediaType.APPLICATION_JSON)) {
        JSONObject obj = jsonOverrides.getJsonObject();
        JSONArray overrideArray = obj.getJSONArray("overrides");
        for (int i = 0; i < overrideArray.length(); i++) {
            JSONObject overrideObj = overrideArray.getJSONObject(i);
            String name = overrideObj.getString("name");
            String type = overrideObj.getString("type");
            int cardinality = overrideObj.getInt("cardinality");
            double[] values = new double[0];
            if (overrideObj.has("values")) {
                JSONArray valuesArray = overrideObj.getJSONArray("values");
                values = new double[valuesArray.length()];
                for (int j = 0; j < valuesArray.length(); j++) {
                    values[j] = valuesArray.getDouble(j);
                }
            }
            String expression = null;
            if (overrideObj.has("expression")) {
                expression = overrideObj.getString("expression");
            }
            OverrideRepresentation overrideRep = new OverrideRepresentation(name, type, cardinality, values, expression);
            overrideRepresentations.add(overrideRep);
        }
    }
    RestDatabaseService restDatabaseService = application.getRestDatabaseService();
    try {
        if (vcellUser == null) {
            throw new PermissionException("must be authenticated to copy simulation");
        }
        SimulationSaveResponse simulationSavedResponse = restDatabaseService.saveSimulation(this, vcellUser, overrideRepresentations);
        JSONObject responseJson = new JSONObject();
        String redirectURL = "/" + VCellApiApplication.BIOMODEL + "/" + simulationSavedResponse.newBioModel.getVersion().getVersionKey() + "/" + VCellApiApplication.SIMULATION + "/" + simulationSavedResponse.newSimulation.getKey().toString();
        responseJson.put("redirect", redirectURL);
        responseJson.put("status", "simulation saved");
        JsonRepresentation representation = new JsonRepresentation(responseJson);
        redirectSeeOther(redirectURL);
    // return representation;
    } catch (PermissionException e) {
        e.printStackTrace();
        throw new ResourceException(Status.CLIENT_ERROR_UNAUTHORIZED, "not authorized to save simulation");
    } catch (ObjectNotFoundException e) {
        e.printStackTrace();
        throw new ResourceException(Status.CLIENT_ERROR_NOT_FOUND, "simulation not found");
    } catch (Exception e) {
        e.printStackTrace(System.out);
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage());
    }
}
Also used : PermissionException(org.vcell.util.PermissionException) User(org.vcell.util.document.User) SimulationSaveResponse(org.vcell.rest.server.RestDatabaseService.SimulationSaveResponse) ArrayList(java.util.ArrayList) JSONArray(org.json.JSONArray) OverrideRepresentation(org.vcell.rest.common.OverrideRepresentation) PermissionException(org.vcell.util.PermissionException) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) JSONException(org.json.JSONException) ResourceException(org.restlet.resource.ResourceException) JSONObject(org.json.JSONObject) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) VCellApiApplication(org.vcell.rest.VCellApiApplication) ResourceException(org.restlet.resource.ResourceException) JsonRepresentation(org.restlet.ext.json.JsonRepresentation)

Aggregations

ArrayList (java.util.ArrayList)1 JSONArray (org.json.JSONArray)1 JSONException (org.json.JSONException)1 JSONObject (org.json.JSONObject)1 JsonRepresentation (org.restlet.ext.json.JsonRepresentation)1 ResourceException (org.restlet.resource.ResourceException)1 VCellApiApplication (org.vcell.rest.VCellApiApplication)1 OverrideRepresentation (org.vcell.rest.common.OverrideRepresentation)1 SimulationSaveResponse (org.vcell.rest.server.RestDatabaseService.SimulationSaveResponse)1 ObjectNotFoundException (org.vcell.util.ObjectNotFoundException)1 PermissionException (org.vcell.util.PermissionException)1 User (org.vcell.util.document.User)1