1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package openr66.context.task;
22
23 import goldengate.common.command.exception.CommandAbstractException;
24 import goldengate.common.logging.GgInternalLogger;
25 import goldengate.common.logging.GgInternalLoggerFactory;
26 import openr66.context.R66Session;
27 import openr66.context.filesystem.R66Dir;
28 import openr66.protocol.exception.OpenR66ProtocolSystemException;
29
30
31
32
33
34
35
36 public class MoveTask extends AbstractTask {
37
38
39
40 private static final GgInternalLogger logger = GgInternalLoggerFactory
41 .getLogger(MoveTask.class);
42
43
44
45
46
47
48
49 public MoveTask(String argRule, int delay, String argTransfer,
50 R66Session session) {
51 super(TaskType.MOVE, delay, argRule, argTransfer, session);
52 }
53
54
55
56
57
58
59 @Override
60 public void run() {
61 logger.info("Move with " + argRule + ":" + argTransfer + " and {}",
62 session);
63 boolean success = false;
64 String directory = argRule;
65 directory = getReplacedValue(directory, argTransfer.split(" "));
66 String finalname = directory.split(" ")[0] + R66Dir.SEPARATOR +
67 session.getFile().getBasename();
68 try {
69 success = session.getFile().renameTo(finalname, true);
70 } catch (CommandAbstractException e) {
71 logger.error("Move with " + argRule + ":" + argTransfer + " and " +
72 session, e);
73 futureCompletion.setFailure(new OpenR66ProtocolSystemException(e));
74 return;
75 }
76 if (success) {
77 session.getRunner().setFileMoved(finalname, success);
78 futureCompletion.setSuccess();
79 } else {
80 logger.error("Cannot Move with " + argRule + ":" + argTransfer +
81 " and " + session);
82 futureCompletion.setFailure(new OpenR66ProtocolSystemException(
83 "Cannot move file"));
84 }
85 }
86
87 }