1 package org.astrogrid.portal.myspace.acting.framework;
2
3 import java.io.InputStream;
4 import java.io.OutputStream;
5 import java.util.Map;
6
7 /***
8 * Upload a file into MySpace.
9 *
10 * @author peter.shillan
11 */
12 public class UploadHandler extends AbstractMySpaceHandler {
13
14 /***
15 * @see org.astrogrid.portal.myspace.acting.framework.AbstractMySpaceHandler#AbstractMySpaceHandler(org.astrogrid.portal.myspace.acting.framework.ContextWrapper)
16 * @param context
17 */
18 public UploadHandler(ContextWrapper context) {
19 super(context);
20 }
21
22 /***
23 * Upload a file into MySpace.
24 *
25 * @see org.astrogrid.portal.myspace.acting.framework.AbstractMySpaceHandler#executeTemplateMethod(java.util.Map)
26 */
27 protected void executeTemplateMethod(Map results) throws Throwable {
28 String dest = context.getParameter(MySpaceHandler.PARAM_DEST);
29 String fileName = context.getParameter(MySpaceHandler.PARAM_FILE);
30
31 if(dest != null && dest.length() > 0 &&
32 fileName != null && fileName.length() > 0) {
33
34 InputStream fileInputStream = null;
35 OutputStream outputStream = null;
36
37 try {
38 fileInputStream = context.getFileInputStream(MySpaceHandler.PARAM_FILE);
39 outputStream = context.getStoreClient().putStream(dest, false);
40
41
42 byte[] bytesRead = null;
43 int bytesAvailable = fileInputStream.available();
44 while(bytesAvailable > 0) {
45 bytesRead = new byte[bytesAvailable];
46 fileInputStream.read(bytesRead);
47 outputStream.write(bytesRead);
48
49 bytesAvailable = fileInputStream.available();
50 }
51 }
52 catch(Exception e) {
53 throw new MySpaceHandlerException("error uploading file", e);
54 }
55 finally {
56 try {
57 if(fileInputStream != null) {
58 fileInputStream.close();
59 }
60 }
61 catch(Throwable t){
62
63 }
64
65 try {
66 if(outputStream != null) {
67 outputStream.close();
68 }
69 }
70 catch(Throwable t){
71
72 }
73 }
74 }
75 else {
76 throw new MySpaceHandlerException("invalid destination or file name");
77 }
78 }
79 }