1 package org
.argeo
.server
.jcr
.mvc
;
4 import java
.util
.StringTokenizer
;
6 import javax
.servlet
.http
.HttpServletRequest
;
7 import javax
.servlet
.http
.HttpServletResponse
;
9 import org
.apache
.commons
.fileupload
.FileItem
;
10 import org
.apache
.commons
.fileupload
.FileItemFactory
;
11 import org
.apache
.commons
.fileupload
.disk
.DiskFileItemFactory
;
12 import org
.apache
.commons
.fileupload
.servlet
.ServletFileUpload
;
13 import org
.apache
.commons
.logging
.Log
;
14 import org
.apache
.commons
.logging
.LogFactory
;
15 import org
.argeo
.server
.ServerAnswer
;
16 import org
.argeo
.server
.jcr
.JcrResourceAdapter
;
17 import org
.argeo
.server
.mvc
.MvcConstants
;
18 import org
.springframework
.core
.io
.ByteArrayResource
;
19 import org
.springframework
.stereotype
.Controller
;
20 import org
.springframework
.web
.bind
.annotation
.ModelAttribute
;
21 import org
.springframework
.web
.bind
.annotation
.RequestMapping
;
24 public class JcrManagerController
implements MvcConstants
{
25 private final static Log log
= LogFactory
26 .getLog(JcrManagerController
.class);
28 private JcrResourceAdapter resourceAdapter
;
30 // Create a factory for disk-based file items
31 private FileItemFactory factory
= new DiskFileItemFactory();
33 // Create a new file upload handler
34 private ServletFileUpload upload
= new ServletFileUpload(factory
);
36 @SuppressWarnings("unchecked")
37 @RequestMapping("/upload/**")
38 @ModelAttribute(ANSWER_MODEL_KEY_AS_HTML
)
39 public ServerAnswer
upload(HttpServletRequest request
,
40 HttpServletResponse response
) throws Exception
{
42 List
<FileItem
> items
= upload
.parseRequest(request
);
45 for (FileItem item
: items
) {
46 if (!item
.isFormField()) {
52 ByteArrayResource res
= new ByteArrayResource(arr
);
53 // String pathInfo = request.getPathInfo();
55 StringBuffer path
= new StringBuffer("/");
56 StringTokenizer st
= new StringTokenizer(request
.getPathInfo(), "/");
57 st
.nextToken();// skip /upload/
58 while (st
.hasMoreTokens()) {
59 String token
= st
.nextToken();
60 if (!st
.hasMoreTokens()) {
61 resourceAdapter
.mkdirs(path
.toString());
64 path
.append(token
).append('/');
67 // String path = '/' + pathInfo.substring(1).substring(
68 // pathInfo.indexOf('/'));
69 if (log
.isDebugEnabled())
70 log
.debug("Upload to " + path
);
71 resourceAdapter
.update(path
.toString(), res
);
72 return ServerAnswer
.ok("File " + path
+ " imported");
75 public void setResourceAdapter(JcrResourceAdapter resourceAdapter
) {
76 this.resourceAdapter
= resourceAdapter
;