use of org.restlet.resource.ResourceException in project qi4j-sdk by Qi4j.
the class SPARQLResource method get.
@Override
public Representation get(final Variant variant) throws ResourceException {
try {
// TODO There's probably a helper somewhere that can do this more nicely
if (getRequest().getOriginalRef().getLastSegment().equals("sparqlhtml.xsl")) {
InputStream resourceAsStream = getClass().getResourceAsStream("sparqlhtml.xsl");
return new InputRepresentation(resourceAsStream, MediaType.TEXT_XML);
}
Form form;
if (getRequest().getMethod().equals(Method.POST)) {
form = new Form(getRequest().getEntity());
} else {
form = getRequest().getResourceRef().getQueryAsForm();
}
final RepositoryConnection conn = repository.getConnection();
String queryStr = form.getFirstValue("query");
if (queryStr == null) {
InputStream resourceAsStream = getClass().getResourceAsStream("sparqlform.html");
return new InputRepresentation(resourceAsStream, MediaType.TEXT_HTML);
}
Query query = getQuery(repository, conn, queryStr);
if (query instanceof TupleQuery) {
TupleQuery tQuery = (TupleQuery) query;
final TupleQueryResult queryResult = tQuery.evaluate();
if (variant.getMediaType().equals(MediaType.TEXT_HTML)) {
return new OutputRepresentation(MediaType.TEXT_XML) {
@Override
public void write(OutputStream outputStream) throws IOException {
try {
PrintWriter out = new PrintWriter(outputStream);
out.println("<?xml version='1.0' encoding='UTF-8'?>");
out.println("<?xml-stylesheet type=\"text/xsl\" href=\"query/sparqlhtml.xsl\"?>");
out.flush();
TupleQueryResultWriter qrWriter = new SPARQLResultsXMLWriter(new XMLWriter(outputStream) {
@Override
public void startDocument() throws IOException {
// Ignore
}
});
QueryResultUtil.report(queryResult, qrWriter);
} catch (Exception e) {
throw new IOException(e);
} finally {
try {
conn.close();
} catch (RepositoryException e) {
// Ignore
}
}
}
};
} else if (variant.getMediaType().equals(MediaType.APPLICATION_RDF_XML)) {
return new OutputRepresentation(MediaType.APPLICATION_XML) {
@Override
public void write(OutputStream outputStream) throws IOException {
try {
TupleQueryResultWriter qrWriter = new SPARQLResultsXMLWriter(new XMLWriter(outputStream));
QueryResultUtil.report(queryResult, qrWriter);
} catch (Exception e) {
throw new IOException(e);
} finally {
try {
conn.close();
} catch (RepositoryException e) {
// Ignore
}
}
}
};
} else if (variant.getMediaType().equals(RestApplication.APPLICATION_SPARQL_JSON)) {
return new OutputRepresentation(RestApplication.APPLICATION_SPARQL_JSON) {
@Override
public void write(OutputStream outputStream) throws IOException {
try {
TupleQueryResultWriter qrWriter = new SPARQLResultsJSONWriterFactory().getWriter(outputStream);
QueryResultUtil.report(queryResult, qrWriter);
} catch (Exception e) {
throw new IOException(e);
} finally {
try {
conn.close();
} catch (RepositoryException e) {
// Ignore
}
}
}
};
}
} else if (query instanceof GraphQuery) {
GraphQuery gQuery = (GraphQuery) query;
/*
queryResult = gQuery.evaluate();
registry = RDFWriterRegistry.getInstance();
view = GraphQueryResultView.getInstance();
*/
conn.close();
} else if (query instanceof BooleanQuery) {
BooleanQuery bQuery = (BooleanQuery) query;
/*
queryResult = bQuery.evaluate();
registry = BooleanQueryResultWriterRegistry.getInstance();
view = BooleanQueryResultView.getInstance();
*/
conn.close();
} else {
conn.close();
throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, "Unsupported query type: " + query.getClass().getName());
}
} catch (RepositoryException e) {
throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e);
} catch (QueryEvaluationException e) {
throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e);
}
return null;
}
use of org.restlet.resource.ResourceException in project vcell by virtualcell.
the class OptimizationServerResource method get_json.
@Override
public JsonRepresentation get_json() {
try {
// VCellApiApplication application = ((VCellApiApplication)getApplication());
// User vcellUser = application.getVCellUser(getChallengeResponse(),AuthenticationPolicy.prohibitInvalidCredentials);
String optimizationId = (String) getRequestAttributes().get(VCellApiApplication.OPTIMIZATIONID);
VCellOptClient optClient = new VCellOptClient("opt", 8080);
String optRunString = optClient.getOptRunJson(optimizationId);
JsonRepresentation optRunJsonRep = new JsonRepresentation(optRunString);
return optRunJsonRep;
// } catch (PermissionException e) {
// e.printStackTrace();
// throw new ResourceException(Status.CLIENT_ERROR_UNAUTHORIZED, "permission denied to requested resource");
} 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 PublicationsServerResource method getPublicationRepresentations.
private PublicationRepresentation[] getPublicationRepresentations(User vcellUser) {
ArrayList<PublicationRepresentation> publicationRepresentations = new ArrayList<PublicationRepresentation>();
RestDatabaseService restDatabaseService = ((VCellApiApplication) getApplication()).getRestDatabaseService();
try {
PublicationRep[] publicationReps = restDatabaseService.query(this, vcellUser);
for (PublicationRep publicationRep : publicationReps) {
PublicationRepresentation publicationRepresentation = new PublicationRepresentation(publicationRep);
publicationRepresentations.add(publicationRepresentation);
}
} catch (PermissionException ee) {
ee.printStackTrace();
throw new ResourceException(Status.CLIENT_ERROR_UNAUTHORIZED, "not authorized");
} catch (DataAccessException | SQLException | ExpressionException e) {
e.printStackTrace();
throw new RuntimeException("failed to retrieve biomodels from VCell Database : " + e.getMessage());
}
return publicationRepresentations.toArray(new PublicationRepresentation[0]);
}
use of org.restlet.resource.ResourceException in project vcell by virtualcell.
the class SimDataServerResource method getSimDataRepresentation.
private SimDataRepresentation getSimDataRepresentation(User vcellUser) {
// if (!application.authenticate(getRequest(), getResponse())){
// // not authenticated
// return new SimulationTaskRepresentation[0];
// }else{
RestDatabaseService restDatabaseService = ((VCellApiApplication) getApplication()).getRestDatabaseService();
try {
DataSetMetadata dataSetMetadata = restDatabaseService.getDataSetMetadata(this, vcellUser);
SimulationRep simRep = restDatabaseService.getSimulationRep(dataSetMetadata.getSimKey());
SimDataRepresentation simDataRepresentation = new SimDataRepresentation(dataSetMetadata, simRep.getScanCount());
return simDataRepresentation;
} catch (PermissionException e) {
e.printStackTrace();
throw new ResourceException(Status.CLIENT_ERROR_UNAUTHORIZED, "not authorized");
} catch (ObjectNotFoundException e) {
e.printStackTrace();
throw new ResourceException(Status.CLIENT_ERROR_NOT_FOUND, "simulation metadata 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 BiomodelSBMLServerResource method getBiomodelSBML.
private String getBiomodelSBML(User vcellUser) {
RestDatabaseService restDatabaseService = ((VCellApiApplication) getApplication()).getRestDatabaseService();
try {
// Make temporary resource compatible with restDatabaseService so we can re-use
BiomodelVCMLServerResource bmsr = new BiomodelVCMLServerResource() {
@Override
public Map<String, Object> getRequestAttributes() {
HashMap<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put(VCellApiApplication.BIOMODELID, BiomodelSBMLServerResource.this.biomodelid);
return hashMap;
}
@Override
public Request getRequest() {
// TODO Auto-generated method stub
return BiomodelSBMLServerResource.this.getRequest();
}
};
String biomodelVCML = restDatabaseService.query(bmsr, vcellUser);
BioModel bioModel = XmlHelper.XMLToBioModel(new XMLSource(biomodelVCML));
// public SBMLExporter(BioModel argBioModel, int argSbmlLevel, int argSbmlVersion, boolean isSpatial) {
SimulationContext simulationContext = null;
if (appName != null) {
simulationContext = bioModel.getSimulationContext(appName);
} else {
simulationContext = bioModel.getSimulationContext(0);
}
SBMLExporter sbmlExporter = new SBMLExporter(simulationContext, 3, 1, simulationContext.getGeometryContext().getGeometry().getDimension() > 0);
return sbmlExporter.getSBMLString();
} catch (PermissionException e) {
e.printStackTrace();
throw new ResourceException(Status.CLIENT_ERROR_UNAUTHORIZED, "permission denied to requested resource");
} catch (Exception e) {
throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage());
}
}
Aggregations