KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > coldcore > coloradoftp > command > impl > ftp > OptsCommand


1 package com.coldcore.coloradoftp.command.impl.ftp;
2
3 import com.coldcore.coloradoftp.command.impl.AbstractCommand;
4 import com.coldcore.coloradoftp.command.Reply;
5 import com.coldcore.coloradoftp.command.CommandFactory;
6 import com.coldcore.coloradoftp.command.Command;
7 import com.coldcore.coloradoftp.factory.ObjectFactory;
8 import com.coldcore.coloradoftp.factory.ObjectName;
9 import org.apache.log4j.Logger;
10
11 import java.util.List JavaDoc;
12 import java.util.ArrayList JavaDoc;
13 import java.util.Collections JavaDoc;
14 import java.util.Comparator JavaDoc;
15
16 /**
17  * Command OPTS.
18  * See FTP spec for details on the command.
19  *
20  * This implementation can also be used as FEAT command.
21  */

22 public class OptsCommand extends AbstractCommand {
23
24   private static Logger log = Logger.getLogger(OptsCommand.class);
25
26
27   public Reply execute() {
28     Reply reply = getReply();
29
30     String JavaDoc pcmd = getParameter().toUpperCase();
31     if (pcmd.equals("")) {
32       reply.setCode("501");
33       reply.setText("Send another command as parameter.");
34       return reply;
35     }
36
37     //Get all available commands
38
CommandFactory commandFactory = (CommandFactory) ObjectFactory.getObject(ObjectName.COMMAND_FACTORY);
39     List JavaDoc<String JavaDoc> commandNames = new ArrayList JavaDoc<String JavaDoc>(commandFactory.listNames());
40
41     String JavaDoc tpcmd = pcmd;
42     int ind = tpcmd.indexOf(" ");
43     if (ind != -1) tpcmd = tpcmd.substring(0, ind);
44
45     if (commandNames.contains(tpcmd)) {
46       //Command is supported
47
log.debug("Command "+tpcmd+" is supported");
48       replyOnExistingCommand(pcmd);
49       return reply;
50     } else {
51       //Command is not supported
52
log.debug("Command "+tpcmd+" is not supported");
53       replyOnUnexistingCommand(pcmd);
54       return reply;
55     }
56
57   }
58
59
60   /** Called when existing/supported command provided as an argument to form an appropriare reply
61    * @param command Command name
62    */

63   protected void replyOnExistingCommand(String JavaDoc command) {
64     //Create a child command
65
CommandFactory commandFactory = (CommandFactory) ObjectFactory.getObject(ObjectName.COMMAND_FACTORY);
66     Command cmd = commandFactory.create(command+"\r\n");
67     cmd.setConnection(getConnection());
68
69     Reply reply = getReply();
70
71     //Execute the child
72
Reply rpl = cmd.executeOnParent(this);
73     if (rpl != null) {
74       //Child provided a reply - use it
75
reply.setCode(rpl.getCode());
76       reply.setText(rpl.getText());
77     } else {
78       //Child dit not provided a reply - use the default
79
reply.setCode("504");
80       reply.setText("Command not implemented for that parameter.");
81     }
82   }
83
84
85   /** Called when unexisting/unsupported command provided as an argument to form an appropriare reply
86    * @param command Command name
87    */

88   protected void replyOnUnexistingCommand(String JavaDoc command) {
89     Reply reply = getReply();
90     reply.setCode("504");
91     reply.setText("Command not implemented for that parameter.");
92   }
93
94 }
95
Popular Tags