KickJava   Java API By Example, From Geeks To Geeks.

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


1 /**
2  * Command MODE.
3  * See FTP spec for details on the command.
4  *
5  * This implementation supports only stream mode "S".
6  */

7 package com.coldcore.coloradoftp.command.impl.ftp;
8
9 import com.coldcore.coloradoftp.command.Reply;
10 import com.coldcore.coloradoftp.command.impl.AbstractCommand;
11 import com.coldcore.coloradoftp.factory.ObjectFactory;
12 import com.coldcore.coloradoftp.factory.ObjectName;
13 import com.coldcore.coloradoftp.filter.DataFilterFactory;
14 import com.coldcore.coloradoftp.session.Session;
15 import com.coldcore.coloradoftp.session.SessionAttributeName;
16
17 import java.util.Iterator JavaDoc;
18
19 public class ModeCommand extends AbstractCommand {
20
21   public Reply execute() {
22     Reply reply = getReply();
23     if (!testLogin()) return reply;
24
25     String JavaDoc mode = getParameter();
26     mode = mode.toUpperCase();
27
28     if (mode.length() == 0) {
29       reply.setCode("501");
30       reply.setText("Syntax error in parameters or arguments.");
31       return reply;
32     }
33
34     DataFilterFactory factory = (DataFilterFactory) ObjectFactory.getObject(ObjectName.MODE_FILTER_FACTORY);
35     if (factory.listNames().contains(mode)) {
36       Session session = getConnection().getSession();
37       session.setAttribute(SessionAttributeName.DATA_MODE, mode);
38       reply.setCode("200");
39       reply.setText("Command okay.");
40     } else {
41       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
42       Iterator JavaDoc<String JavaDoc> it = factory.listNames().iterator();
43       while (it.hasNext()) {
44         sb.append("MODE ").append(it.next());
45         if (it.hasNext()) sb.append(", ");
46       }
47       reply.setCode("504");
48       reply.setText("Supported only "+sb.toString()+".");
49     }
50     return reply;
51   }
52 }
53
Popular Tags