View Javadoc

1   /***
2    * $Id: Servlet.java,v 1.1 2004/11/08 23:15:38 mch Exp $
3    */
4   package org.astrogrid.store.browser;
5   
6   import java.io.IOException;
7   import java.io.PrintWriter;
8   import java.io.Writer;
9   import java.net.URL;
10  import java.text.DateFormat;
11  import java.text.SimpleDateFormat;
12  import java.util.Date;
13  import java.util.Vector;
14  import javax.servlet.ServletException;
15  import javax.servlet.http.HttpServlet;
16  import javax.servlet.http.HttpServletRequest;
17  import javax.servlet.http.HttpServletResponse;
18  import org.astrogrid.community.User;
19  import org.astrogrid.store.Agsl;
20  import org.astrogrid.store.Ivorn;
21  import org.astrogrid.store.Msrl;
22  import org.astrogrid.store.VoSpaceClient;
23  import org.astrogrid.store.delegate.StoreClient;
24  import org.astrogrid.store.delegate.StoreDelegateFactory;
25  import org.astrogrid.store.delegate.StoreFile;
26  import java.net.URISyntaxException;
27  
28  /***
29   * A servlet that displays a file browser for stores, including myspace
30   */
31  public class Servlet extends HttpServlet {
32  
33     private Browser browser = new Browser();
34     
35     /*** post = get */
36     public void doPost(HttpServletRequest request, HttpServletResponse response)
37        throws IOException, ServletException  {
38        doGet(request, response);
39     }
40     
41     
42     /*** Gets parameter - looks in request first, if it's not there looks in session */
43     public String getParameter(HttpServletRequest request, String key) {
44        String value = request.getParameter(key);
45        if (value == null) {
46           value = (String) request.getSession().getValue(key);
47           
48        }
49        return value;
50     }
51     
52     /*** Gets multiple parameter - looks in request first, if it's not there looks in session */
53     public String[] getParameterValues(HttpServletRequest request, String key) {
54        String[] values = request.getParameterValues(key);
55        if (values == null) {
56           values = (String[]) request.getSession().getValue(key);
57        }
58        return values;
59     }
60     
61  
62     /***
63      * One day I'll work out how to do this as a popup
64      */
65     public void writeMessageBox(HttpServletResponse response, String title, String header, String message) throws IOException {
66        response.getWriter().print(
67           "<html>"+
68           "<head><title>"+title+"</title></head>"+
69           "<body>"+
70           "<h1>"+header+"</h1>"+
71           message+
72           "</body>"+
73           "</html>"
74        );
75     }
76     
77     /***
78      * Confirms with the user and then deletes the currently selected file
79      */
80     public void confirmDelete(HttpServletRequest request, HttpServletResponse response) throws IOException {
81        delete(request, response);
82     }
83     
84     /***
85      * deletes the currently selected file
86      */
87     public void delete(HttpServletRequest request, HttpServletResponse response) throws IOException {
88        StoreFile file = browser.getStoreClient(request).getFile(browser.filesView.getSelectedPath(request));
89        if (file.listFiles().length>0) {
90           //directory with children - refuse to delete until contents are deleted.  Temporary safety measure
91           writeMessageBox(response, "Delete Refused", "Folder contains files",
92                           "Folder "+file+" contains "+file.listFiles().length+" files.  They must be deleted before the folder can be deleted");
93        }
94        else {
95           //delete
96           browser.getStoreClient(request).delete(browser.filesView.getSelectedPath(request));
97           //redraw browser
98           browser.writeBrowser(request, response);
99        }
100    }
101 
102    
103    /***
104     * Asks the user for a target ready to copy a file to
105     */
106    public void copy(HttpServletRequest request, HttpServletResponse response) throws IOException {
107       throw new UnsupportedOperationException();
108    }
109 
110    /***
111     * Asks the user for a target ready to copy a file to
112     */
113    public void newFileFolder(HttpServletRequest request, HttpServletResponse response) throws IOException {
114       throw new UnsupportedOperationException();
115    }
116 
117    /*** Called when someone accesses the servlet - ie the main entry point for the servlet. */
118    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException  {
119       
120       //refresh file tree if refresh pressed or store has changed
121       if ((request.getParameter("refresh") != null)  ||
122              (request.getParameter(browser.STORE_KEY) != null) &&
123              (!request.getParameter(browser.STORE_KEY).equals(request.getSession().getValue(browser.STORE_KEY)))) {
124          browser.filesView.refreshTree(request);
125          
126       }
127       
128       //store in session
129       request.getSession().putValue(browser.STORE_KEY, getParameter(request, browser.STORE_KEY));
130       request.getSession().putValue(browser.STORE_NAME_KEY, getParameter(request, browser.STORE_NAME_KEY));
131       request.getSession().putValue(browser.SELECTED_PATH_KEY, getParameter(request, browser.SELECTED_PATH_KEY));
132       request.getSession().putValue(browser.CANCEL_ACTION_KEY, getParameter(request, browser.CANCEL_ACTION_KEY));
133       request.getSession().putValue(browser.OK_ACTION_KEY, getParameter(request, browser.OK_ACTION_KEY));
134       request.getSession().putValue(browser.OK_NAME_KEY, getParameter(request, browser.OK_NAME_KEY));
135 
136       //interpret command
137       if (request.getParameter("open") != null) { browser.filesView.openPath(request.getParameter("open"), request); }
138       if (request.getParameter("close") != null) { browser.filesView.closePath(request.getParameter("close"), request); }
139 
140       try {
141          if (request.getParameter("delete") != null) {
142             confirmDelete(request, response);
143          }
144          else if (request.getParameter("copy") != null) {
145             copy(request, response);
146          }
147             
148          else if (request.getParameter("newFileForm") != null) {
149             browser.newFileForm(request, response);
150          }
151          else if (request.getParameter("newFile") != null) {
152             browser.newFile(request, response);
153          }
154          else if (request.getParameter("newFolder") != null) {
155             newFileFolder(request, response);
156          }
157          else {
158             browser.writeBrowser(request, response);
159          }
160       }
161       catch (Throwable th) {
162          response.getWriter().write("Exception: "+th+"<br><pre>");
163          th.printStackTrace(new PrintWriter(response.getWriter()));
164          response.getWriter().write("</pre>");
165       }
166    }
167    
168    
169    
170 }