1
19
20 package com.liferay.portal.webdav.methods;
21
22 import com.liferay.portal.kernel.log.Log;
23 import com.liferay.portal.kernel.log.LogFactoryUtil;
24 import com.liferay.portal.webdav.Resource;
25 import com.liferay.portal.webdav.WebDAVException;
26 import com.liferay.portal.webdav.WebDAVRequest;
27 import com.liferay.portal.webdav.WebDAVStorage;
28 import com.liferay.portal.webdav.WebDAVUtil;
29
30 import javax.servlet.http.HttpServletRequest;
31 import javax.servlet.http.HttpServletResponse;
32
33
40 public class CopyMethodImpl implements Method {
41
42 public int process(WebDAVRequest webDavRequest) throws WebDAVException {
43 WebDAVStorage storage = webDavRequest.getWebDAVStorage();
44 HttpServletRequest request = webDavRequest.getHttpServletRequest();
45
46 String destination = WebDAVUtil.getDestination(
47 request, storage.getRootPath());
48
49 StringBuilder sb = new StringBuilder();
50
51 if (_log.isInfoEnabled()) {
52 sb.append("Destination is " + destination);
53 }
54
55 int status = HttpServletResponse.SC_FORBIDDEN;
56
57 if ((!destination.equals(webDavRequest.getPath())) &&
58 (WebDAVUtil.getGroupId(destination) ==
59 webDavRequest.getGroupId())) {
60
61 Resource resource = storage.getResource(webDavRequest);
62
63 if (resource == null) {
64 status = HttpServletResponse.SC_NOT_FOUND;
65 }
66 else if (resource.isCollection()) {
67 boolean overwrite = WebDAVUtil.isOverwrite(request);
68 long depth = WebDAVUtil.getDepth(request);
69
70 if (_log.isInfoEnabled()) {
71 sb.append(", overwrite is " + overwrite);
72 sb.append(", depth is " + depth);
73
74 _log.info(sb.toString());
75 }
76
77 status = storage.copyCollectionResource(
78 webDavRequest, resource, destination, overwrite, depth);
79 }
80 else {
81 boolean overwrite = WebDAVUtil.isOverwrite(request);
82
83 if (_log.isInfoEnabled()) {
84 sb.append(", overwrite is " + overwrite);
85
86 _log.info(sb.toString());
87 }
88
89 status = storage.copySimpleResource(
90 webDavRequest, resource, destination, overwrite);
91 }
92 }
93
94 return status;
95 }
96
97 private static Log _log = LogFactoryUtil.getLog(CopyMethodImpl.class);
98
99 }