1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.rat.header;
20
21 import java.io.IOException;
22 import java.io.Reader;
23 import java.nio.CharBuffer;
24
25 class FilteringSequenceFactory {
26
27 private static final int BUFFER_CAPACITY = 5000;
28
29 private final CharBuffer buffer;
30 private final CharFilter filter;
31
32 public FilteringSequenceFactory(final CharFilter filter) {
33 this(BUFFER_CAPACITY, filter);
34 }
35
36 public FilteringSequenceFactory(final int capacity, final CharFilter filter) {
37 this.buffer = CharBuffer.allocate(capacity);
38 this.filter = filter;
39 }
40
41 public CharSequence filter(Reader reader) throws IOException {
42 buffer.clear();
43 boolean eof = false;
44 while(!eof) {
45 final int next = reader.read();
46 if (next == -1 || !buffer.hasRemaining()) {
47 eof = true;
48 } else {
49 final char character = (char) next;
50 if (!filter.isFilteredOut(character))
51 {
52 buffer.put(character);
53 }
54 }
55 }
56 buffer.limit(buffer.position()).rewind();
57 return buffer;
58 }
59 }