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
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
96 browser.getStoreClient(request).delete(browser.filesView.getSelectedPath(request));
97
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
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
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
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 }