1 4 package com.coldcore.coloradoftp.filter.impl; 5 6 import com.coldcore.coloradoftp.factory.ObjectFactory; 7 import com.coldcore.coloradoftp.factory.ObjectName; 8 import com.coldcore.coloradoftp.filter.DataFilter; 9 import com.coldcore.coloradoftp.filter.DataFilterApplicator; 10 import com.coldcore.coloradoftp.filter.DataFilterFactory; 11 import com.coldcore.coloradoftp.session.Session; 12 import com.coldcore.coloradoftp.session.SessionAttributeName; 13 import org.apache.log4j.Logger; 14 15 import java.nio.channels.ReadableByteChannel ; 16 import java.nio.channels.WritableByteChannel ; 17 18 public class GenericDataFilterApplicator implements DataFilterApplicator { 19 20 private static Logger log = Logger.getLogger(GenericDataFilterApplicator.class); 21 22 23 27 protected DataFilter getTypeFilter(Session session) { 28 String type = (String ) session.getAttribute(SessionAttributeName.DATA_TYPE); 29 if (type == null) type = "A"; 30 DataFilterFactory factory = (DataFilterFactory) ObjectFactory.getObject(ObjectName.TYPE_FILTER_FACTORY); 31 return factory.create(type); 32 } 33 34 35 39 protected DataFilter getModeFilter(Session session) { 40 String mode = (String ) session.getAttribute(SessionAttributeName.DATA_MODE); 41 if (mode == null) mode = "S"; 42 DataFilterFactory factory = (DataFilterFactory) ObjectFactory.getObject(ObjectName.MODE_FILTER_FACTORY); 43 return factory.create(mode); 44 } 45 46 47 51 protected DataFilter getStruFilter(Session session) { 52 String stru = (String ) session.getAttribute(SessionAttributeName.DATA_STRUCTURE); 53 if (stru == null) stru = "F"; 54 DataFilterFactory factory = (DataFilterFactory) ObjectFactory.getObject(ObjectName.STRU_FILTER_FACTORY); 55 return factory.create(stru); 56 } 57 58 59 public ReadableByteChannel applyFilters(ReadableByteChannel rbc, Session userSession) { 60 DataFilter filter = null; 61 DataFilter append; 62 63 append = getStruFilter(userSession); 64 if (append != null) { 65 append.setChannel(filter == null ? rbc : (ReadableByteChannel )filter); 66 filter = append; 67 log.debug("Applied STRU data filter: "+filter.getName()); 68 } 69 70 append = getTypeFilter(userSession); 71 if (append != null) { 72 append.setChannel(filter == null ? rbc : (ReadableByteChannel )filter); 73 filter = append; 74 log.debug("Applied TYPE data filter: "+filter.getName()); 75 } 76 77 append = getModeFilter(userSession); 78 if (append != null) { 79 append.setChannel(filter == null ? rbc : (ReadableByteChannel )filter); 80 filter = append; 81 log.debug("Applied MODE data filter: "+filter.getName()); 82 } 83 84 return filter == null ? rbc : filter; 85 } 86 87 88 public WritableByteChannel applyFilters(WritableByteChannel wbc, Session userSession) { 89 DataFilter filter = null; 90 DataFilter append; 91 92 append = getStruFilter(userSession); 93 if (append != null) { 94 append.setChannel(filter == null ? wbc : (WritableByteChannel ) filter); 95 filter = append; 96 log.debug("Applied STRU data filter: "+filter.getName()); 97 } 98 99 append = getTypeFilter(userSession); 100 if (append != null) { 101 append.setChannel(filter == null ? wbc : (WritableByteChannel ) filter); 102 filter = append; 103 log.debug("Applied TYPE data filter: "+filter.getName()); 104 } 105 106 append = getModeFilter(userSession); 107 if (append != null) { 108 append.setChannel(filter == null ? wbc : (WritableByteChannel ) filter); 109 filter = append; 110 log.debug("Applied MODE data filter: "+filter.getName()); 111 } 112 113 return filter == null ? wbc : filter; 114 } 115 } 116 | Popular Tags |