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 CopyTask extends AbstractTask {
35
36
37
38 private static final WaarpLogger logger =
39 WaarpLoggerFactory.getLogger(CopyTask.class);
40
41
42
43
44
45
46
47 public CopyTask(final String argRule, final int delay,
48 final String argTransfer, final R66Session session) {
49 super(TaskType.COPY, delay, argRule, argTransfer, session);
50 }
51
52 @Override
53 public final void run() {
54 if (argRule == null) {
55 logger.error(
56 "Copy cannot be done with " + argRule + ':' + argTransfer + " and " +
57 session);
58 futureCompletion.setFailure(
59 new OpenR66ProtocolSystemException("Copy cannot be done"));
60 return;
61 }
62 logger.info("Copy with " + argRule + ':' + argTransfer + " and {}",
63 session);
64 final File from = session.getFile().getTrueFile();
65 final String directory = argRule.replace('\\', '/');
66 final File to = new File(directory, session.getFile().getBasename());
67 try {
68 FileUtils.copy(from, to, false, false);
69 } catch (final Reply550Exception e1) {
70 logger.error(
71 "Copy with " + argRule + ':' + argTransfer + " and " + session, e1);
72 futureCompletion.setFailure(new OpenR66ProtocolSystemException(e1));
73 return;
74 }
75 futureCompletion.setSuccess();
76 }
77
78 }