1
2
3
4
5
6
7
8
9
10
11 package org.eclipse.jgit.revwalk.filter;
12
13 import java.io.IOException;
14
15 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
16 import org.eclipse.jgit.errors.MissingObjectException;
17 import org.eclipse.jgit.revwalk.RevCommit;
18 import org.eclipse.jgit.revwalk.RevWalk;
19 import org.eclipse.jgit.util.RawCharSequence;
20 import org.eclipse.jgit.util.RawSubStringPattern;
21
22
23
24
25 public abstract class SubStringRevFilter extends RevFilter {
26
27
28
29
30
31
32
33
34
35 public static boolean safe(String pattern) {
36 for (int i = 0; i < pattern.length(); i++) {
37 final char c = pattern.charAt(i);
38 switch (c) {
39 case '.':
40 case '?':
41 case '*':
42 case '+':
43 case '{':
44 case '}':
45 case '(':
46 case ')':
47 case '[':
48 case ']':
49 case '\\':
50 return false;
51 }
52 }
53 return true;
54 }
55
56 private final RawSubStringPattern pattern;
57
58
59
60
61
62
63
64
65
66 protected SubStringRevFilter(String patternText) {
67 pattern = new RawSubStringPattern(patternText);
68 }
69
70
71 @Override
72 public boolean include(RevWalk walker, RevCommit cmit)
73 throws MissingObjectException, IncorrectObjectTypeException,
74 IOException {
75 return pattern.match(text(cmit)) >= 0;
76 }
77
78
79 @Override
80 public boolean requiresCommitBody() {
81 return true;
82 }
83
84
85
86
87
88
89
90
91 protected abstract RawCharSequence text(RevCommit cmit);
92
93
94 @Override
95 public RevFilter clone() {
96 return this;
97 }
98
99
100 @SuppressWarnings("nls")
101 @Override
102 public String toString() {
103 return super.toString() + "(\"" + pattern.pattern() + "\")";
104 }
105 }