1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.openr66.context.task;
21
22 import org.waarp.common.command.exception.Reply550Exception;
23 import org.waarp.common.file.FileUtils;
24 import org.waarp.common.logging.WaarpLogger;
25 import org.waarp.common.logging.WaarpLoggerFactory;
26 import org.waarp.openr66.context.R66Session;
27 import org.waarp.openr66.protocol.exception.OpenR66ProtocolSystemException;
28
29 import java.io.File;
30
31
32
33
34 public class CopyRenameTask extends AbstractTask {
35
36
37
38 private static final WaarpLogger logger =
39 WaarpLoggerFactory.getLogger(CopyRenameTask.class);
40
41
42
43
44
45
46
47 public CopyRenameTask(final String argRule, final int delay,
48 final String argTransfer, final R66Session session) {
49 super(TaskType.COPYRENAME, delay, argRule, argTransfer, session);
50 }
51
52 @Override
53 public void run() {
54 if (argRule == null) {
55 logger.error(
56 "Copy and Rename cannot be done with " + argRule + ':' + argTransfer +
57 " and " + session);
58 futureCompletion.setFailure(
59 new OpenR66ProtocolSystemException("Copy and Rename cannot be done"));
60 return;
61 }
62 String finalname = argRule;
63 finalname = getReplacedValue(finalname, argTransfer == null? null :
64 argTransfer.split(" ")).trim().replace('\\', '/');
65 logger.info("Copy and Rename to {} with {}:{} and {}", finalname, argRule,
66 argTransfer, session);
67 final File from = session.getFile().getTrueFile();
68 final File to = new File(finalname);
69 try {
70 FileUtils.copy(from, to, false, false);
71 } catch (final Reply550Exception e1) {
72 logger.error(
73 "Copy and Rename to " + finalname + " with " + argRule + ':' +
74 argTransfer + " and " + session + ": {}", e1.getMessage());
75 futureCompletion.setFailure(new OpenR66ProtocolSystemException(e1));
76 return;
77 }
78 futureCompletion.setSuccess();
79 }
80
81 }