1 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 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 (); 42 session.setAttribute(SessionAttributeName.DATA_MARKER, l); 43 } catch (Throwable 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 59 protected DataFilter getTypeFilter(Session session) { 60 String type = (String ) 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 |