1
2
3
4
5
6
7
8
9 package net.kwfgrid.gwes.servlet;
10
11 import net.kwfgrid.gwes.client.RemoteGWES;
12 import net.kwfgrid.gwes.exception.GWESException;
13 import org.antlr.stringtemplate.StringTemplate;
14 import org.apache.log4j.Logger;
15 import org.jdom.transform.XSLTransformer;
16 import org.jdom.Document;
17 import org.jdom.output.XMLOutputter;
18 import org.jdom.output.Format;
19 import org.jdom.input.SAXBuilder;
20
21 import javax.servlet.ServletException;
22 import javax.servlet.http.HttpServlet;
23 import javax.servlet.http.HttpServletRequest;
24 import javax.servlet.http.HttpServletResponse;
25 import java.io.*;
26
27
28
29
30
31
32
33
34
35 public class ResourceDetailsServlet extends HttpServlet {
36
37 private static GWESProperties pr;
38 final static Logger logger = Logger.getLogger(ResourceDetailsServlet.class);
39
40 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
41 ServletLogger.log(request);
42
43 response.setContentType("text/html");
44 PrintWriter out = response.getWriter();
45 String error = null;
46 String success = null;
47 String info = null;
48
49 Object obj = request.getAttribute("error");
50 if (obj instanceof String) error = (String) obj;
51
52 obj = request.getAttribute("success");
53 if (obj instanceof String) success = (String) obj;
54
55 obj = request.getAttribute("info");
56 if (obj instanceof String) info = (String) obj;
57
58
59 if (pr == null) pr = GWESProperties.getInstance("/gwes.properties");
60
61
62 String userID = request.getRemoteUser();
63 if (userID == null) userID = "nn";
64
65
66 String resourceUri = request.getParameter("resourceuri");
67 if (resourceUri == null) {
68 obj = request.getSession().getAttribute("resourceuri");
69 if (obj instanceof String) resourceUri = (String) obj;
70 } else {
71 logger.debug("session resourceuri = " + resourceUri);
72 request.getSession().setAttribute("resourceuri", resourceUri);
73 }
74
75 String resourceHtml = null;
76 try {
77 resourceHtml = getDGRDLHTML(resourceUri, request.getUserPrincipal().getName());
78 } catch (Throwable e) {
79 logger.error("exception: " + e, e);
80 error = ((error == null) ? "" : error) + "Could not get resource information: " + e.getMessage();
81 info = "<p>Please select an available resource in the <a href=\"" + pr.gwesBaseUrlExternal + "/servlet/ResourceListServlet\">Resource List</a> or in the <a href=\"" + pr.gwesBaseUrlExternal + "/servlet/WorkflowActivityListServlet\">Activity List</a> first!</p>";
82 resourceUri = null;
83 }
84
85 if (error == null && (resourceUri == null || resourceUri.length() == 0)) {
86 info = "<p>Please select an available resource in the <a href=\"" + pr.gwesBaseUrlExternal + "/servlet/ResourceListServlet\">Resource List</a> or in the <a href=\"" + pr.gwesBaseUrlExternal + "/servlet/WorkflowActivityListServlet\">Activity List</a> first!</p>";
87 }
88
89 try {
90 StringTemplate t = Template.getStringTemplateGroup("html_gwes-servlets").getInstanceOf("resourceDetails");
91 if (resourceHtml != null) t.setAttribute("resourcehtml", resourceHtml);
92 if (success != null) t.setAttribute("success", success);
93 if (error != null) t.setAttribute("error", error);
94 if (info != null) t.setAttribute("info", info);
95 t.setAttribute("menu", new Menu(pr.gwesBaseUrlExternal, "Resource Details"));
96 out.print(t.toString());
97 } catch (Exception e) {
98 out.println("<hr><b>ERROR connecting to GWES: " + e + "</b>");
99 out.println("<pre>");
100 e.printStackTrace(out);
101 out.println("</pre>");
102 out.println("<hr>");
103 }
104 }
105
106 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
107 doGet(request, response);
108 }
109
110 private String getDGRDLHTML(String resourceUri, String userID) throws Exception, GWESException {
111 if (resourceUri == null) return null;
112
113
114 String xmlStr = RemoteGWES.getInstance().getResourceDescription(resourceUri, userID);
115
116
117 SAXBuilder builder = new SAXBuilder(false);
118 Document xmlJdom = builder.build(new StringReader(xmlStr));
119
120
121 System.setProperty( "javax.xml.transform.TransformerFactory", "org.apache.xalan.processor.TransformerFactoryImpl");
122 XSLTransformer transformer = new XSLTransformer(getClass().getResourceAsStream("/templates/dgrdl.xsl"));
123 Document htmlJdom = transformer.transform(xmlJdom);
124
125
126 Writer writer = new StringWriter();
127 XMLOutputter outp = new XMLOutputter(Format.getCompactFormat());
128 outp.output(htmlJdom, writer);
129 return writer.toString();
130 }
131
132 }