001: /*
002: * Gruntspud
003: *
004: * Copyright (C) 2002 Brett Smith.
005: *
006: * Written by: Brett Smith <t_magicthize@users.sourceforge.net>
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU Library General Public License
010: * as published by the Free Software Foundation; either version 2 of
011: * the License, or (at your option) any later version.
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU Library General Public License for more details.
016: *
017: * You should have received a copy of the GNU Library General Public
018: * License along with this program; if not, write to the Free Software
019: * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
020: */
021:
022: package gruntspud.filter;
023:
024: import gruntspud.CVSFileNode;
025:
026: import java.util.ResourceBundle;
027: import java.util.StringTokenizer;
028:
029: /**
030: * Description of the Class
031: *
032: *@author magicthize
033: *@created 26 May 2002
034: */
035: public class CVSFileFilter implements CVSFilter {
036: static ResourceBundle res = ResourceBundle
037: .getBundle("gruntspud.filter.ResourceBundle");
038: private CVSFileSubstTypeFilter cvsFileSubstTypeFilter;
039: private CVSFileStatusFilter cvsFileStatusFilter;
040: private CVSFileDirectoryFilter cvsFileDirectoryFilter;
041: private String name;
042: private boolean preset;
043:
044: /**
045: * Constructor for the Filter object
046: */
047: public CVSFileFilter() {
048: this ("");
049: }
050:
051: /**
052: * Constructor for the Filter object
053: */
054: public CVSFileFilter(String name) {
055: this (name, new CVSFileStatusFilter(),
056: new CVSFileSubstTypeFilter(),
057: new CVSFileDirectoryFilter());
058: }
059:
060: /**
061: * Constructor for the Filter object
062: */
063: public CVSFileFilter(String name,
064: CVSFileStatusFilter fileStatusFilter,
065: CVSFileSubstTypeFilter substTypeFilter,
066: CVSFileDirectoryFilter directoryFilter) {
067: setName(name);
068: setCVSFileStatusFilter(fileStatusFilter);
069: setCVSFileSubstTypeFilter(substTypeFilter);
070: setCVSFileDirectoryFilter(directoryFilter);
071: }
072:
073: /**
074: * DOCUMENT ME!
075: *
076: * @param preset DOCUMENT ME!
077: */
078: public void setPreset(boolean preset) {
079: this .preset = preset;
080: }
081:
082: /**
083: * DOCUMENT ME!
084: *
085: * @return DOCUMENT ME!
086: */
087: public boolean isPreset() {
088: return preset;
089: }
090:
091: /**
092: * DOCUMENT ME!
093: *
094: * @param name DOCUMENT ME!
095: */
096: public void setName(String name) {
097: this .name = name;
098: }
099:
100: /**
101: * DOCUMENT ME!
102: *
103: * @return DOCUMENT ME!
104: */
105: public String getName() {
106: return name;
107: }
108:
109: /**
110: * DOCUMENT ME!
111: *
112: * @return DOCUMENT ME!
113: */
114: public String getPropertyString() {
115: StringBuffer buf = new StringBuffer();
116: buf.append(getName());
117: buf.append("|");
118: buf.append(getCVSFileSubstTypeFilter().getPropertyString());
119: buf.append("|");
120: buf.append(getCVSFileStatusFilter().getPropertyString());
121: buf.append("|");
122: buf.append(getCVSFileDirectoryFilter().getPropertyString());
123: return buf.toString();
124: }
125:
126: /**
127: * DOCUMENT ME!
128: *
129: * @param propertyString DOCUMENT ME!
130: */
131: public void setFromPropertyString(String propertyString) {
132: CVSFileSubstTypeFilter f1 = new CVSFileSubstTypeFilter();
133: CVSFileStatusFilter f2 = new CVSFileStatusFilter();
134: CVSFileDirectoryFilter f3 = new CVSFileDirectoryFilter();
135: StringTokenizer t = new StringTokenizer(propertyString, "|");
136: setName(res.getString("unknown"));
137:
138: try {
139: setName(t.nextToken());
140: f1.setFromPropertyString(t.nextToken());
141: f2.setFromPropertyString(t.nextToken());
142: if (t.hasMoreTokens())
143: f3.setFromPropertyString(t.nextToken());
144: } catch (Exception e) {
145: }
146:
147: setCVSFileSubstTypeFilter(f1);
148: setCVSFileStatusFilter(f2);
149: setCVSFileDirectoryFilter(f3);
150: }
151:
152: /**
153: * Gets the cVSFileStatusFilter attribute of the Filter object
154: *
155: *@return The cVSFileStatusFilter value
156: */
157: public CVSFileStatusFilter getCVSFileStatusFilter() {
158: return cvsFileStatusFilter;
159: }
160:
161: /**
162: * Gets the cVSFileStatusFilter attribute of the Filter object
163: *
164: *@return The cVSFileStatusFilter value
165: */
166: public CVSFileDirectoryFilter getCVSFileDirectoryFilter() {
167: return cvsFileDirectoryFilter;
168: }
169:
170: /**
171: * Gets the cVSFileTypeFilter attribute of the Filter object
172: *
173: *@return The cVSFileTypeFilter value
174: */
175: public CVSFileSubstTypeFilter getCVSFileSubstTypeFilter() {
176: return cvsFileSubstTypeFilter;
177: }
178:
179: /**
180: * Sets the cVSFileStatusFilter attribute of the Filter object
181: *
182: *@param cvsFileStatusFilter The new cVSFileStatusFilter value
183: */
184: public void setCVSFileStatusFilter(
185: CVSFileStatusFilter cvsFileStatusFilter) {
186: this .cvsFileStatusFilter = cvsFileStatusFilter;
187: }
188:
189: /**
190: * Sets the cVSFileStatusFilter attribute of the Filter object
191: *
192: *@param cvsFileStatusFilter The new cVSFileStatusFilter value
193: */
194: public void setCVSFileDirectoryFilter(
195: CVSFileDirectoryFilter cvsFileDirectoryFilter) {
196: this .cvsFileDirectoryFilter = cvsFileDirectoryFilter;
197: }
198:
199: /**
200: * Sets the cVSFileTypeFilter attribute of the Filter object
201: *
202: *@param cvsFileTypeFilter The new cVSFileTypeFilter value
203: */
204: public void setCVSFileSubstTypeFilter(
205: CVSFileSubstTypeFilter cvsFileSubstTypeFilter) {
206: this .cvsFileSubstTypeFilter = cvsFileSubstTypeFilter;
207: }
208:
209: /**
210: * Description of the Method
211: *
212: *@param node Description of the Parameter
213: *@return Description of the Return Value
214: */
215: public boolean acceptNode(CVSFileNode node) {
216: if (!node.isLeaf()) {
217: return cvsFileDirectoryFilter.acceptNode(node);
218: }
219:
220: if (!cvsFileSubstTypeFilter.acceptNode(node)) {
221: return false;
222: }
223:
224: if (!cvsFileStatusFilter.acceptNode(node)) {
225: return false;
226: }
227:
228: return true;
229: }
230:
231: public String toString() {
232: return getName();
233: }
234: }
|