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());
}
}
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());
}
}
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());
}
}
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());
}
}
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());
}
}
Aggregations