1 package net.sourceforge.pmd;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.Reader;
6 import java.io.StringReader;
7 import java.util.HashSet;
8 import java.util.Set;
9
10 public class ExcludeLines {
11
12 public static final String EXCLUDE_MARKER = "NOPMD";
13
14 private Set lines = new HashSet();
15 private String copy;
16
17 public ExcludeLines(Reader r, String marker) throws IOException {
18 BufferedReader br = new BufferedReader(r);
19 StringBuffer copyBuffer = new StringBuffer();
20 String tmp;
21 int counter = 1;
22 while ((tmp = br.readLine()) != null) {
23 copyBuffer.append(tmp + PMD.EOL);
24 if (tmp.indexOf(marker) != -1) {
25 lines.add(new Integer(counter));
26 }
27 counter++;
28 }
29 copy = copyBuffer.toString();
30 }
31
32 public ExcludeLines(Reader r) throws IOException {
33 this(r, EXCLUDE_MARKER);
34 }
35
36 public Reader getCopyReader() {
37 return new StringReader(copy);
38 }
39
40 public Set getLinesToExclude() {
41 return lines;
42 }
43 }