1
22
23 package com.liferay.portal.webdav.methods;
24
25 import com.liferay.portal.kernel.util.StringMaker;
26 import com.liferay.portal.webdav.InvalidRequestException;
27 import com.liferay.portal.webdav.Resource;
28 import com.liferay.portal.webdav.WebDAVException;
29 import com.liferay.portal.webdav.WebDAVRequest;
30 import com.liferay.portal.webdav.WebDAVStorage;
31 import com.liferay.portal.webdav.WebDAVUtil;
32
33 import javax.servlet.http.HttpServletRequest;
34 import javax.servlet.http.HttpServletResponse;
35
36 import org.apache.commons.logging.Log;
37 import org.apache.commons.logging.LogFactory;
38
39
46 public class CopyMethodImpl implements Method {
47
48 public int process(WebDAVRequest webDavReq) throws WebDAVException {
49 WebDAVStorage storage = webDavReq.getWebDAVStorage();
50 HttpServletRequest req = webDavReq.getHttpServletRequest();
51
52 String destination = WebDAVUtil.getDestination(
53 req, storage.getRootPath());
54
55 StringMaker sm = new StringMaker();
56
57 if (_log.isInfoEnabled()) {
58 sm.append("Destination is " + destination);
59 }
60
61 int status = HttpServletResponse.SC_FORBIDDEN;
62
63 if ((!destination.equals(webDavReq.getPath())) &&
64 (WebDAVUtil.getGroupId(destination) == webDavReq.getGroupId())) {
65
66 Resource resource = storage.getResource(webDavReq);
67
68 if (resource == null) {
69 status = HttpServletResponse.SC_NOT_FOUND;
70 }
71 else if (resource.isCollection()) {
72 try {
73 boolean overwrite = WebDAVUtil.isOverwrite(req);
74 long depth = WebDAVUtil.getDepth(req);
75
76 if (_log.isInfoEnabled()) {
77 sm.append(", overwrite is " + overwrite);
78 sm.append(", depth is " + depth);
79
80 _log.info(sm.toString());
81 }
82
83 status = storage.copyCollectionResource(
84 webDavReq, resource, destination, overwrite, depth);
85 }
86 catch (InvalidRequestException ire) {
87 status = HttpServletResponse.SC_BAD_REQUEST;
88 }
89 }
90 else {
91 boolean overwrite = WebDAVUtil.isOverwrite(req);
92
93 if (_log.isInfoEnabled()) {
94 sm.append(", overwrite is " + overwrite);
95
96 _log.info(sm.toString());
97 }
98
99 status = storage.copySimpleResource(
100 webDavReq, resource, destination, overwrite);
101 }
102 }
103
104 return status;
105 }
106
107 private static Log _log = LogFactory.getLog(CopyMethodImpl.class);
108
109 }