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.DirInterface;
24 import org.waarp.common.file.FileUtils;
25 import org.waarp.common.logging.WaarpLogger;
26 import org.waarp.common.logging.WaarpLoggerFactory;
27 import org.waarp.openr66.context.R66Session;
28
29 import java.io.File;
30
31
32
33
34 public class MoveTask extends AbstractTask {
35
36
37
38 private static final WaarpLogger logger =
39 WaarpLoggerFactory.getLogger(MoveTask.class);
40
41
42
43
44
45
46
47 public MoveTask(final String argRule, final int delay,
48 final String argTransfer, final R66Session session) {
49 super(TaskType.MOVE, delay, argRule, argTransfer, session);
50 }
51
52 @Override
53 public final void run() {
54 logger.info("Move with " + argRule + ':' + argTransfer + " and {}",
55 session);
56 String directory = argRule;
57 directory = getReplacedValue(directory, BLANK.split(argTransfer)).trim()
58 .replace(
59 '\\',
60 '/');
61 final String finalname =
62 directory + DirInterface.SEPARATOR + session.getFile().getBasename();
63 final File from = session.getFile().getTrueFile();
64 final File to = new File(finalname);
65 try {
66 FileUtils.copy(from, to, true, false);
67 } catch (final Reply550Exception e) {
68 logger.error(
69 "Move with " + argRule + ':' + argTransfer + " to " + finalname +
70 " and " + session + ": {}", e.getMessage());
71 futureCompletion.setFailure(e);
72 return;
73 }
74 session.getRunner().setFileMoved(finalname, true);
75 futureCompletion.setSuccess();
76
77 }
78
79 }