1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.orangesignal.csv.filters;
18
19 import java.util.List;
20 import java.util.regex.Pattern;
21
22
23
24
25
26
27
28 public class ColumnNameRegexExpression extends ColumnNameExpression {
29
30
31
32
33 private Pattern pattern;
34
35
36
37
38
39
40
41
42 protected ColumnNameRegexExpression(final String name, final String pattern) {
43 this(name, pattern, 0);
44 }
45
46
47
48
49
50
51
52
53
54 protected ColumnNameRegexExpression(final String name, final String pattern, final boolean ignoreCase) {
55 this(name, pattern, ignoreCase ? Pattern.CASE_INSENSITIVE : 0);
56 }
57
58
59
60
61
62
63
64
65
66 protected ColumnNameRegexExpression(final String name, final String pattern, final int flags) {
67 super(name);
68 if (pattern == null) {
69 throw new IllegalArgumentException("Pattern must not be null");
70 }
71 this.pattern = Pattern.compile(pattern, flags);
72 }
73
74
75
76
77
78
79
80
81 protected ColumnNameRegexExpression(final String name, final Pattern pattern) {
82 super(name);
83 if (pattern == null) {
84 throw new IllegalArgumentException("Pattern must not be null");
85 }
86 this.pattern = pattern;
87 }
88
89 @Override
90 public boolean accept(final List<String> header, final List<String> values) {
91 final int position = header.indexOf(name);
92 if (position == -1) {
93 throw new IllegalArgumentException(String.format("Invalid column name %s", name));
94 }
95 return CsvExpressionUtils.regex(values, position, pattern);
96 }
97
98 }