View Javadoc

1   /*
2    * $Id: ResourceListServlet.java 1537 2011-07-27 15:34:04Z hoheisel $
3    *
4    * Copyright (c) 2007
5    * Fraunhofer Institute for Computer Architecture and Software Technology
6    * See http://www.first.fraunhofer.de for more details.
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   * Servlet that shows a list of all resources.
26   * Security should be implemented by means of the Servlet container (e.g. using tomcat-users.xml)
27   *
28   * @author Andreas Hoheisel
29   *         (<a href="http://www.andreas-hoheisel.de">www.andreas-hoheisel.de</a>)
30   * @version $Id: ResourceListServlet.java 1537 2011-07-27 15:34:04Z hoheisel $
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          //read gwes.properties
56          if (pr == null) pr = GWESProperties.getInstance("/gwes.properties");
57  
58          // get user
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              // listResources(menu,error,success,info,resources,gwesBaseUrlExternal)
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 }