KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > coldcore > coloradoftp > filter > impl > GenericDataFilterApplicator


1 /**
2  * @see com.coldcore.coloradoftp.filter.DataFilterApplicator
3  */

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 JavaDoc;
16 import java.nio.channels.WritableByteChannel JavaDoc;
17
18 public class GenericDataFilterApplicator implements DataFilterApplicator {
19
20   private static Logger log = Logger.getLogger(GenericDataFilterApplicator.class);
21
22
23   /** Load filter for TYPE
24    * @param session User session
25    * @return Data filter (never NULL)
26    */

27   protected DataFilter getTypeFilter(Session session) {
28     String JavaDoc type = (String JavaDoc) 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   /** Load filter for MODE
36    * @param session User session
37    * @return Data filter (never NULL)
38    */

39   protected DataFilter getModeFilter(Session session) {
40     String JavaDoc mode = (String JavaDoc) 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   /** Load filter for STRUcture
48    * @param session User session
49    * @return Data filter (never NULL)
50    */

51   protected DataFilter getStruFilter(Session session) {
52     String JavaDoc stru = (String JavaDoc) 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 JavaDoc applyFilters(ReadableByteChannel JavaDoc 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 JavaDoc)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 JavaDoc)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 JavaDoc)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 JavaDoc applyFilters(WritableByteChannel JavaDoc 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 JavaDoc) 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 JavaDoc) 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 JavaDoc) 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