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
16 import javax.servlet.ServletException;
17 import javax.servlet.http.HttpServlet;
18 import javax.servlet.http.HttpServletRequest;
19 import javax.servlet.http.HttpServletResponse;
20 import java.io.IOException;
21 import java.io.PrintWriter;
22 import java.util.*;
23
24
25
26
27
28
29
30
31
32 public class ResourceListServlet extends HttpServlet {
33
34 private static GWESProperties pr;
35 final static Logger logger = Logger.getLogger(ResourceListServlet.class);
36
37 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
38 ServletLogger.log(request);
39
40 response.setContentType("text/html");
41 PrintWriter out = response.getWriter();
42 String error = null;
43 String success = null;
44 String info = null;
45
46 Object obj = request.getAttribute("error");
47 if (obj instanceof String) error = (String) obj;
48
49 obj = request.getAttribute("success");
50 if (obj instanceof String) success = (String) obj;
51
52 obj = request.getAttribute("info");
53 if (obj instanceof String) info = (String) obj;
54
55
56 if (pr == null) pr = GWESProperties.getInstance("/gwes.properties");
57
58
59 String userID = request.getRemoteUser();
60 if (userID == null) userID = "nn";
61
62 List<ResourceInformation> resources = null;
63
64 try {
65 resources = gatherResourcesArray(pr.gwesBaseUrlExternal, request.getUserPrincipal().getName());
66 } catch (Throwable e) {
67 out.println("<hr><b>ERROR connecting to GWES: " + e + "</b>");
68 out.println("<pre>");
69 e.printStackTrace(out);
70 out.println("</pre>");
71 out.println("<hr>");
72 }
73
74 try {
75 StringTemplate t = Template.getStringTemplateGroup("html_gwes-servlets").getInstanceOf("listResources");
76
77 t.setAttribute("menu", new Menu(pr.gwesBaseUrlExternal, "Resources"));
78 if (resources == null || resources.size() == 0) info = "Currently there are no resources available. Please check the resource registry.";
79 else t.setAttribute("resources", resources);
80 if (success != null) t.setAttribute("success", success);
81 if (error != null) t.setAttribute("error", error);
82 if (info != null) t.setAttribute("info", info);
83 t.setAttribute("gwesBaseUrlExternal", pr.gwesBaseUrlExternal);
84 out.print(t.toString());
85 } catch (Exception e) {
86 logger.error("exception: " + e, e);
87 error = ((error == null) ? "" : error) + "Could not display resource list: " + e.getMessage();
88 }
89 }
90
91 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
92 doGet(request, response);
93 }
94
95 private List<ResourceInformation> gatherResourcesArray(String gwesBaseUrlExternal, String userID) throws Exception, GWESException {
96 String[] resourceArray = RemoteGWES.getInstance().getAvailableResources(null, userID);
97 if (resourceArray == null) return null;
98 List<ResourceInformation> resources = new ArrayList<ResourceInformation>(resourceArray.length);
99 for (String resourceStr : resourceArray) {
100 ResourceInformation resource = new ResourceInformation(gwesBaseUrlExternal, resourceStr);
101 resources.add(resource);
102 }
103
104 Collections.sort(resources, new ResourceComparator(ResourceComparator.COMPARE_URI));
105
106 return resources;
107 }
108
109 }