1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.ftp.core.command.service;
21
22 import org.waarp.common.command.ReplyCode;
23 import org.waarp.common.command.exception.CommandAbstractException;
24 import org.waarp.common.command.exception.Reply501Exception;
25 import org.waarp.common.command.exception.Reply553Exception;
26 import org.waarp.ftp.core.command.AbstractCommand;
27 import org.waarp.ftp.core.exception.FtpNoFileException;
28 import org.waarp.ftp.core.exception.FtpNoTransferException;
29 import org.waarp.ftp.core.file.FtpFile;
30
31
32
33
34 public class RNTO extends AbstractCommand {
35 @Override
36 public final void exec() throws CommandAbstractException {
37 if (!hasArg()) {
38 invalidCurrentCommand();
39 throw new Reply501Exception("Need a pathname as argument");
40 }
41 final String filename = getArg();
42 FtpFile file = null;
43 try {
44 file = getSession().getDataConn().getFtpTransferControl()
45 .getExecutingFtpTransfer().getFtpFile();
46 } catch (final FtpNoFileException ignored) {
47
48 } catch (final FtpNoTransferException ignored) {
49
50 }
51 if (file != null) {
52 final String previousName = file.getFile();
53 if (file.renameTo(filename)) {
54 getSession().setReplyCode(
55 ReplyCode.REPLY_250_REQUESTED_FILE_ACTION_OKAY,
56 '"' + filename + "\" as new file name for \"" + previousName + '"');
57 return;
58 }
59 }
60
61 throw new Reply553Exception("Filename not allowed");
62 }
63
64 }