Search in sources :

Example 61 with ResourceException

use of org.restlet.resource.ResourceException 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)

Example 62 with ResourceException

use of org.restlet.resource.ResourceException in project vcell by virtualcell.

the class BiomodelSimulationStartServerResource method start.

@Override
public Representation start() {
    VCellApiApplication application = ((VCellApiApplication) getApplication());
    User vcellUser = application.getVCellUser(getChallengeResponse(), AuthenticationPolicy.prohibitInvalidCredentials);
    RestDatabaseService restDatabaseService = application.getRestDatabaseService();
    try {
        SimulationRep simRep = restDatabaseService.startSimulation(this, vcellUser);
        Representation representation = new StringRepresentation("simulation started", MediaType.TEXT_PLAIN);
        redirectSeeOther("/" + VCellApiApplication.SIMTASK + "?" + SimulationTasksServerResource.PARAM_SIM_ID + "=" + simRep.getKey().toString() + "&" + SimulationTasksServerResource.PARAM_STATUS_COMPLETED + "=on" + "&" + SimulationTasksServerResource.PARAM_STATUS_DISPATCHED + "=on" + "&" + SimulationTasksServerResource.PARAM_STATUS_FAILED + "=on" + "&" + SimulationTasksServerResource.PARAM_STATUS_QUEUED + "=on" + "&" + SimulationTasksServerResource.PARAM_STATUS_RUNNING + "=on" + "&" + SimulationTasksServerResource.PARAM_STATUS_STOPPED + "=on" + "&" + SimulationTasksServerResource.PARAM_STATUS_WAITING + "=on" + "&" + SimulationTasksServerResource.PARAM_START_ROW + "=1" + "&" + SimulationTasksServerResource.PARAM_MAX_ROWS + "=" + Integer.toString(simRep.getScanCount() * 4));
        return representation;
    } catch (PermissionException e) {
        e.printStackTrace();
        throw new ResourceException(Status.CLIENT_ERROR_UNAUTHORIZED, "not authorized to start simulation");
    } catch (ObjectNotFoundException e) {
        e.printStackTrace();
        throw new ResourceException(Status.CLIENT_ERROR_NOT_FOUND, "simulation not found");
    } catch (Exception e) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage());
    }
}
Also used : PermissionException(org.vcell.util.PermissionException) User(org.vcell.util.document.User) StringRepresentation(org.restlet.representation.StringRepresentation) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) VCellApiApplication(org.vcell.rest.VCellApiApplication) StringRepresentation(org.restlet.representation.StringRepresentation) Representation(org.restlet.representation.Representation) ResourceException(org.restlet.resource.ResourceException) SimulationRep(cbit.vcell.modeldb.SimulationRep) PermissionException(org.vcell.util.PermissionException) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) ResourceException(org.restlet.resource.ResourceException)

Example 63 with ResourceException

use of org.restlet.resource.ResourceException in project vcell by virtualcell.

the class BiomodelVCMLModelInfoResource method getBiomodel.

private BioModel getBiomodel(KeyValue bmKey, User vcellUser) {
    RestDatabaseService restDatabaseService = ((VCellApiApplication) getApplication()).getRestDatabaseService();
    try {
        // VCellApiApplication application = ((VCellApiApplication)getApplication());
        BigString cachedVcml = restDatabaseService.getBioModelXML(bmKey, vcellUser);
        BioModel bioModel = XmlHelper.XMLToBioModel(new XMLSource(cachedVcml.toString()));
        return bioModel;
    } catch (PermissionException e) {
        e.printStackTrace();
        throw new ResourceException(Status.CLIENT_ERROR_UNAUTHORIZED, "permission denied to requested resource");
    } catch (ObjectNotFoundException e) {
        e.printStackTrace();
        throw new ResourceException(Status.CLIENT_ERROR_NOT_FOUND, "biomodel not found");
    } catch (Exception e) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage());
    }
}
Also used : PermissionException(org.vcell.util.PermissionException) BioModel(cbit.vcell.biomodel.BioModel) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) VCellApiApplication(org.vcell.rest.VCellApiApplication) ResourceException(org.restlet.resource.ResourceException) BigString(org.vcell.util.BigString) XMLSource(cbit.vcell.xml.XMLSource) PermissionException(org.vcell.util.PermissionException) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) ResourceException(org.restlet.resource.ResourceException)

Example 64 with ResourceException

use of org.restlet.resource.ResourceException in project vcell by virtualcell.

the class BiomodelVCMLModelInfoResource method getBiomodel.

private BioModel getBiomodel(String modelName, User vcellUser) {
    RestDatabaseService restDatabaseService = ((VCellApiApplication) getApplication()).getRestDatabaseService();
    try {
        // VCellApiApplication application = ((VCellApiApplication)getApplication());
        final VCInfoContainer vcInfoContainer = restDatabaseService.getVCInfoContainer(vcellUser);
        for (int i = 0; i < vcInfoContainer.getBioModelInfos().length; i++) {
            if (vcInfoContainer.getBioModelInfos()[i].getVersion().getName().equals(modelName)) {
                BigString cachedVcml = restDatabaseService.getBioModelXML(vcInfoContainer.getBioModelInfos()[i].getVersion().getVersionKey(), vcellUser);
                BioModel bioModel = XmlHelper.XMLToBioModel(new XMLSource(cachedVcml.toString()));
                return bioModel;
            }
        }
        throw new Exception("VCDocument named '" + modelName + "'" + " not found");
    } catch (PermissionException e) {
        e.printStackTrace();
        throw new ResourceException(Status.CLIENT_ERROR_UNAUTHORIZED, "permission denied to requested resource");
    } catch (ObjectNotFoundException e) {
        e.printStackTrace();
        throw new ResourceException(Status.CLIENT_ERROR_NOT_FOUND, "biomodel not found");
    } catch (Exception e) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage());
    }
}
Also used : PermissionException(org.vcell.util.PermissionException) BioModel(cbit.vcell.biomodel.BioModel) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) VCInfoContainer(org.vcell.util.document.VCInfoContainer) VCellApiApplication(org.vcell.rest.VCellApiApplication) ResourceException(org.restlet.resource.ResourceException) BigString(org.vcell.util.BigString) XMLSource(cbit.vcell.xml.XMLSource) PermissionException(org.vcell.util.PermissionException) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) ResourceException(org.restlet.resource.ResourceException)

Example 65 with ResourceException

use of org.restlet.resource.ResourceException in project vcell by virtualcell.

the class BiomodelVCMLModelInfoResource method get_html.

@Get("text/html")
public StringRepresentation get_html() {
    try {
        // VCellApiApplication application = ((VCellApiApplication)getApplication());
        // User vcellUser = application.getVCellUser(getChallengeResponse(),AuthenticationPolicy.ignoreInvalidCredentials);
        String biomodelid = getQueryValue(VCellApiApplication.BIOMODELID);
        String modelName = getQueryValue(VCellApiApplication.MODELNAME);
        // Create User so we don't need authentication for ModelBricks
        User modelBrickUser = new User("ModelBrick", new KeyValue("101222366"));
        BioModel bm = null;
        if (biomodelid != null) {
            bm = getBiomodel(new KeyValue(biomodelid), modelBrickUser);
        } else if (modelName != null) {
            bm = getBiomodel(modelName, modelBrickUser);
        } else {
            throw new Exception("expecting '" + VCellApiApplication.BIOMODELID + "' or '" + VCellApiApplication.MODELNAME + "' in query parameters, " + getRequest().getResourceRef().getQuery());
        }
        StringBuffer sb = createHtml(bm);
        return new StringRepresentation(sb.toString(), MediaType.TEXT_HTML);
    } catch (Exception e) {
        e.printStackTrace();
        if (e instanceof ResourceException) {
            throw (ResourceException) e;
        }
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage());
    }
}
Also used : User(org.vcell.util.document.User) KeyValue(org.vcell.util.document.KeyValue) StringRepresentation(org.restlet.representation.StringRepresentation) BioModel(cbit.vcell.biomodel.BioModel) ResourceException(org.restlet.resource.ResourceException) BigString(org.vcell.util.BigString) PermissionException(org.vcell.util.PermissionException) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) ResourceException(org.restlet.resource.ResourceException) Get(org.restlet.resource.Get)

Aggregations

ResourceException (org.restlet.resource.ResourceException)70 Representation (org.restlet.representation.Representation)20 PermissionException (org.vcell.util.PermissionException)20 VCellApiApplication (org.vcell.rest.VCellApiApplication)18 ObjectNotFoundException (org.vcell.util.ObjectNotFoundException)15 IOException (java.io.IOException)13 StringRepresentation (org.restlet.representation.StringRepresentation)12 ArrayList (java.util.ArrayList)10 Reference (org.restlet.data.Reference)8 BioModel (cbit.vcell.biomodel.BioModel)7 Writer (java.io.Writer)7 HashMap (java.util.HashMap)7 JSONObject (org.json.JSONObject)7 WriterRepresentation (org.restlet.representation.WriterRepresentation)7 XMLSource (cbit.vcell.xml.XMLSource)6 Response (org.restlet.Response)6 User (org.vcell.util.document.User)6 EntitlementException (com.sun.identity.entitlement.EntitlementException)4 EntityReference (org.qi4j.api.entity.EntityReference)4 EntityTypeNotFoundException (org.qi4j.api.unitofwork.EntityTypeNotFoundException)4