1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.supercsv.cellprocessor.constraint;
17
18 import java.util.Collections;
19 import java.util.HashSet;
20 import java.util.Set;
21
22 import org.supercsv.cellprocessor.CellProcessorAdaptor;
23 import org.supercsv.cellprocessor.ift.BoolCellProcessor;
24 import org.supercsv.cellprocessor.ift.CellProcessor;
25 import org.supercsv.cellprocessor.ift.DateCellProcessor;
26 import org.supercsv.cellprocessor.ift.DoubleCellProcessor;
27 import org.supercsv.cellprocessor.ift.LongCellProcessor;
28 import org.supercsv.cellprocessor.ift.StringCellProcessor;
29 import org.supercsv.exception.SuperCsvCellProcessorException;
30 import org.supercsv.exception.SuperCsvConstraintViolationException;
31 import org.supercsv.util.CsvContext;
32
33
34
35
36
37
38
39
40
41 public class IsIncludedIn extends CellProcessorAdaptor implements BoolCellProcessor, DateCellProcessor,
42 DoubleCellProcessor, LongCellProcessor, StringCellProcessor {
43
44 private final Set<Object> possibleValues = new HashSet<Object>();
45
46
47
48
49
50
51
52
53
54
55
56
57 public IsIncludedIn(final Set<Object> possibleValues) {
58 super();
59 checkPreconditions(possibleValues);
60 this.possibleValues.addAll(possibleValues);
61 }
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 public IsIncludedIn(final Set<Object> possibleValues, final CellProcessor next) {
77 super(next);
78 checkPreconditions(possibleValues);
79 this.possibleValues.addAll(possibleValues);
80 }
81
82
83
84
85
86
87
88
89
90
91
92
93 public IsIncludedIn(final Object[] possibleValues) {
94 super();
95 checkPreconditions(possibleValues);
96 Collections.addAll(this.possibleValues, possibleValues);
97 }
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 public IsIncludedIn(final Object[] possibleValues, final CellProcessor next) {
113 super(next);
114 checkPreconditions(possibleValues);
115 Collections.addAll(this.possibleValues, possibleValues);
116 }
117
118
119
120
121
122
123
124
125
126
127
128 private static void checkPreconditions(final Set<Object> possibleValues) {
129 if( possibleValues == null ) {
130 throw new NullPointerException("possibleValues Set should not be null");
131 } else if( possibleValues.isEmpty() ) {
132 throw new IllegalArgumentException("possibleValues Set should not be empty");
133 }
134 }
135
136
137
138
139
140
141
142
143
144
145
146 private static void checkPreconditions(final Object... possibleValues) {
147 if( possibleValues == null ) {
148 throw new NullPointerException("possibleValues array should not be null");
149 } else if( possibleValues.length == 0 ) {
150 throw new IllegalArgumentException("possibleValues array should not be empty");
151 }
152 }
153
154
155
156
157
158
159
160
161
162 public Object execute(final Object value, final CsvContext context) {
163 validateInputNotNull(value, context);
164
165 if( !possibleValues.contains(value) ) {
166 throw new SuperCsvConstraintViolationException(String.format(
167 "'%s' is not included in the allowed set of values", value), context, this);
168 }
169
170 return next.execute(value, context);
171 }
172 }