KickJava   Java API By Example, From Geeks To Geeks.

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


1 /**
2  * Command REST.
3  * See FTP spec for details on the command.
4  */

5 package com.coldcore.coloradoftp.command.impl.ftp;
6
7 import com.coldcore.coloradoftp.command.Reply;
8 import com.coldcore.coloradoftp.command.impl.AbstractCommand;
9 import com.coldcore.coloradoftp.session.Session;
10 import com.coldcore.coloradoftp.session.SessionAttributeName;
11 import com.coldcore.coloradoftp.filter.DataFilter;
12 import com.coldcore.coloradoftp.filter.DataFilterFactory;
13 import com.coldcore.coloradoftp.factory.ObjectFactory;
14 import com.coldcore.coloradoftp.factory.ObjectName;
15
16 public class RestCommand extends AbstractCommand {
17              
18   public Reply execute() {
19     Reply reply = getReply();
20     if (!testLogin()) return reply;
21
22     String JavaDoc marker = getParameter();
23     if (marker.equals("")) {
24       reply.setCode("501");
25       reply.setText("Send correct marker.");
26       return reply;
27     }
28
29     Session session = getConnection().getSession();
30     session.removeAttribute(SessionAttributeName.DATA_MARKER);
31
32     DataFilter filter = getTypeFilter(session);
33     if (filter != null && filter.mayModifyDataLength() && !marker.equals("0")) {
34       reply.setCode("550");
35       reply.setText("REST unavailable for TYPE "+filter.getName()+".");
36       return reply;
37     }
38
39     try {
40       long l = Long.parseLong(marker);
41       if (l < 0) throw new Exception JavaDoc();
42       session.setAttribute(SessionAttributeName.DATA_MARKER, l);
43     } catch (Throwable JavaDoc e) {
44       reply.setCode("501");
45       reply.setText("Send correct marker.");
46       return reply;
47     }
48
49     reply.setCode("350");
50     reply.setText("Marker set.");
51     return reply;
52   }
53
54
55   /** Load filter for TYPE
56    * @param session User session
57    * @return Data filter (never NULL)
58    */

59   protected DataFilter getTypeFilter(Session session) {
60     String JavaDoc type = (String JavaDoc) session.getAttribute(SessionAttributeName.DATA_TYPE);
61     if (type == null) type = "A";
62     DataFilterFactory factory = (DataFilterFactory) ObjectFactory.getObject(ObjectName.TYPE_FILTER_FACTORY);
63     return factory.create(type);
64   }
65 }
66
Popular Tags