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.parameter;
21
22 import org.waarp.common.command.ReplyCode;
23 import org.waarp.common.command.exception.Reply501Exception;
24 import org.waarp.common.command.exception.Reply504Exception;
25 import org.waarp.common.exception.InvalidArgumentException;
26 import org.waarp.ftp.core.command.AbstractCommand;
27 import org.waarp.ftp.core.command.FtpArgumentCode;
28
29
30
31
32 public class STRU extends AbstractCommand {
33 @Override
34 public final void exec() throws Reply501Exception, Reply504Exception {
35
36 if (!hasArg()) {
37 getSession().getDataConn()
38 .setStructure(FtpArgumentCode.TransferStructure.FILE);
39 getSession().setReplyCode(ReplyCode.REPLY_200_COMMAND_OKAY,
40 "Structure set to " +
41 FtpArgumentCode.TransferStructure.FILE.name());
42 return;
43 }
44 final FtpArgumentCode.TransferStructure transferStructure;
45 try {
46 transferStructure =
47 FtpArgumentCode.getTransferStructure(getArg().charAt(0));
48 } catch (final InvalidArgumentException e) {
49 throw new Reply501Exception("Unrecognize Structure: " + getArg());
50 }
51 if (transferStructure == FtpArgumentCode.TransferStructure.FILE) {
52 getSession().getDataConn()
53 .setStructure(FtpArgumentCode.TransferStructure.FILE);
54 } else if (transferStructure == FtpArgumentCode.TransferStructure.RECORD) {
55 getSession().getDataConn()
56 .setStructure(FtpArgumentCode.TransferStructure.RECORD);
57 } else {
58 throw new Reply504Exception(
59 "Structure not implemented: " + transferStructure.name());
60 }
61 getSession().setReplyCode(ReplyCode.REPLY_200_COMMAND_OKAY,
62 "Structure set to " + transferStructure.name());
63 }
64
65 }