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