diff --git a/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java b/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java index c51b610f10db74c58ade2bf386cce1fb0eae1ddb..94ebe956ccb263891df1823fb168875ee280a084 100644 --- a/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java +++ b/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java @@ -352,6 +352,10 @@ public class HTMLAServProfile implements AlignmentServiceProfile { return adminAnswer( uri, uri.substring(start), header, params ); } else if ( oper.equals( "html" ) ){ return htmlAnswer( uri, uri.substring(start), header, params ); + } else if ( oper.equals( "rest" ) ){ + params.setParameter( "restful", "true" ); + return htmlAnswer( uri, uri.substring(start), header, params ); + // This already seems RESTful } else if ( oper.equals( "alid" ) ){ return returnAlignment( uri ); } else if ( oper.equals( "wsdl" ) ){ @@ -463,6 +467,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { */ public Response htmlAnswer( String uri, String perf, Properties header, Parameters params ) { //System.err.println("HTML["+perf+"]"); + // REST get String msg = ""; if ( perf.equals("prmstore") ) { msg = "<h1>Store an alignment</h1><form action=\"store\">"; @@ -484,7 +489,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { if ( url != null && !url.equals("") ) { // Load the URL Message answer = manager.load( new Message(newId(),(Message)null,myId,serverId,"", params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { id = answer.getContent(); } @@ -492,10 +497,10 @@ public class HTMLAServProfile implements AlignmentServiceProfile { if ( id != null ){ // Store it Message answer = manager.store( new Message(newId(),(Message)null,myId,serverId,id, params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { msg = "<h1>Alignment stored</h1>"; - msg += displayAnswer( answer ); + msg += displayAnswer( answer, params ); } } } else if ( perf.equals("prmcut") ) { @@ -518,10 +523,10 @@ public class HTMLAServProfile implements AlignmentServiceProfile { if ( id != null && !id.equals("") && threshold != null && !threshold.equals("") ){ // Trim it Message answer = manager.cut( new Message(newId(),(Message)null,myId,serverId,id, params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { msg = "<h1>Alignment trimed</h1>"; - msg += displayAnswer( answer ); + msg += displayAnswer( answer, params ); } } } else if ( perf.equals("prminv") ) { @@ -538,10 +543,10 @@ public class HTMLAServProfile implements AlignmentServiceProfile { if ( id != null && !id.equals("") ){ // Trim it Message answer = manager.inverse( new Message(newId(),(Message)null,myId,serverId,id, params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { msg = "<h1>Alignment inverted</h1>"; - msg += displayAnswer( answer ); + msg += displayAnswer( answer, params ); } } } else if ( perf.equals("prmalign") ) { @@ -562,20 +567,20 @@ public class HTMLAServProfile implements AlignmentServiceProfile { } else if ( perf.equals("align") ) { Message answer = manager.align( new Message(newId(),(Message)null,myId,serverId,"", params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { msg = "<h1>Alignment results</h1>"; - msg += displayAnswer( answer ); + msg += displayAnswer( answer, params ); } } else if ( perf.equals("prmfind") ) { msg ="<h1>Find alignments between ontologies</h1><form action=\"find\">Ontology 1: <input type=\"text\" name=\"onto1\" size=\"80\"/> (uri)<br />Ontology 2: <input type=\"text\" name=\"onto2\" size=\"80\"/> (uri)<br /><small>These are the URI identifying the ontologies. Not those of places where to upload them.</small><br /><input type=\"submit\" name=\"action\" value=\"Find\"/></form>"; } else if ( perf.equals("find") ) { Message answer = manager.existingAlignments( new Message(newId(),(Message)null,myId,serverId,"", params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { msg = "<h1>Found alignments</h1>"; - msg += displayAnswer( answer ); + msg += displayAnswer( answer, params ); } } else if ( perf.equals("prmretrieve") ) { String sel = (String)params.getParameter("id"); @@ -599,7 +604,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { } else if ( perf.equals("retrieve") ) { Message answer = manager.render( new Message(newId(),(Message)null,myId,serverId,"", params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { // Depending on the type we should change the MIME type // This should be returned in answer.getParameters() @@ -618,7 +623,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { Message answer = manager.render( new Message(newId(),(Message)null,myId,serverId,"", params) ); //System.err.println("Content: "+answer.getContent()); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { // Depending on the type we should change the MIME type return new Response( HTTP_OK, MIME_HTML, answer.getContent() ); @@ -639,10 +644,10 @@ public class HTMLAServProfile implements AlignmentServiceProfile { // load Message answer = manager.load( new Message(newId(),(Message)null,myId,serverId,"", params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { msg = "<h1>Alignment loaded</h1>"; - msg += displayAnswer( answer ); + msg += displayAnswer( answer, params ); } } else if ( perf.equals("prmtranslate") ) { msg = "<h1>Translate query</h1><form action=\"translate\">"; @@ -656,7 +661,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { } else if ( perf.equals("translate") ) { Message answer = manager.translate( new Message(newId(),(Message)null,myId,serverId,"", params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { msg = "<h1>Message translation</h1>"; msg += "<h2>Initial message</h2><pre>"+((String)params.getParameter("query")).replaceAll("&", "&").replaceAll("<", "<")+"</pre>"; @@ -676,7 +681,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { Message answer = manager.render( new Message(newId(),(Message)null,myId,serverId,"", params) ); //System.err.println("Content: "+answer.getContent()); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { // Depending on the type we should change the MIME type return new Response( HTTP_OK, MIME_HTML, answer.getContent() ); @@ -710,10 +715,10 @@ public class HTMLAServProfile implements AlignmentServiceProfile { } else if ( perf.equals("eval") ) { Message answer = manager.eval( new Message(newId(),(Message)null,myId,serverId,"", params) ); if ( answer instanceof ErrorMsg ) { - msg = testErrorMessages( answer ); + msg = testErrorMessages( answer, params ); } else { msg = "<h1>Evaluation results</h1>"; - msg += displayAnswer( answer ); + msg += displayAnswer( answer, params ); } } else if ( perf.equals("saveeval") ) { } else if ( perf.equals("prmgrpeval") ) { @@ -760,31 +765,40 @@ public class HTMLAServProfile implements AlignmentServiceProfile { return new Response( HTTP_OK, MIME_XML, WSAServProfile.wsdlAnswer() ); } - private String testErrorMessages( Message answer ) { - return "<h1>Alignment error</h1>"+answer.HTMLString(); + private String testErrorMessages( Message answer, Parameters param ) { + if ( param.getParameter("restful") != null ) { + return answer.RESTString(); + } else { + return "<h1>Alignment error</h1>"+answer.HTMLString(); + } } - private String displayAnswer ( Message answer ) { - String result = answer.HTMLString(); - // Improved return - if ( answer instanceof AlignmentId && ( answer.getParameters() == null || answer.getParameters().getParameter("async") == null ) ){ - result += "<table><tr>"; - // STORE - result += "<td><form action=\"store\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Store\"/></form></td>"; - // TRIM (2) - result += "<td><form action=\"prmcut\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Trim\"/></form></td>"; - // RETRIEVE (1) - result += "<td><form action=\"prmretrieve\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Show\"/></form></td>"; - // Note at that point it is not possible to get the methods - // COMPARE (2) - // INV - result += "<td><form action=\"inv\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Invert\"/></form></td>"; - result += "</tr></table>"; - } else if ( answer instanceof EvaluationId && ( answer.getParameters() == null || answer.getParameters().getParameter("async") == null ) ){ - result += "<table><tr>"; - // STORE (the value should be the id here, not the content) - result += "<td><form action=\"saveeval\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Store\"/></form></td>"; - result += "</tr></table>"; + private String displayAnswer( Message answer, Parameters param ) { + String result = null; + if ( param.getParameter("restful") != null ) { + result = answer.RESTString(); + } else { + result = answer.HTMLString(); + // Improved return + if ( answer instanceof AlignmentId && ( answer.getParameters() == null || answer.getParameters().getParameter("async") == null ) ){ + result += "<table><tr>"; + // STORE + result += "<td><form action=\"store\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Store\"/></form></td>"; + // TRIM (2) + result += "<td><form action=\"prmcut\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Trim\"/></form></td>"; + // RETRIEVE (1) + result += "<td><form action=\"prmretrieve\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Show\"/></form></td>"; + // Note at that point it is not possible to get the methods + // COMPARE (2) + // INV + result += "<td><form action=\"inv\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Invert\"/></form></td>"; + result += "</tr></table>"; + } else if ( answer instanceof EvaluationId && ( answer.getParameters() == null || answer.getParameters().getParameter("async") == null ) ){ + result += "<table><tr>"; + // STORE (the value should be the id here, not the content) + result += "<td><form action=\"saveeval\"><input type=\"hidden\" name=\"id\" value=\""+answer.getContent()+"\"/><input type=\"submit\" name=\"action\" value=\"Store\"/></form></td>"; + result += "</tr></table>"; + } } return result; }