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.Collection;
19
20 import org.supercsv.cellprocessor.CellProcessorAdaptor;
21 import org.supercsv.cellprocessor.ift.BoolCellProcessor;
22 import org.supercsv.cellprocessor.ift.CellProcessor;
23 import org.supercsv.cellprocessor.ift.DateCellProcessor;
24 import org.supercsv.cellprocessor.ift.DoubleCellProcessor;
25 import org.supercsv.cellprocessor.ift.LongCellProcessor;
26 import org.supercsv.cellprocessor.ift.StringCellProcessor;
27 import org.supercsv.exception.SuperCsvConstraintViolationException;
28 import org.supercsv.util.CsvContext;
29
30
31
32
33
34
35
36
37
38 public class IsElementOf extends CellProcessorAdaptor implements BoolCellProcessor, DateCellProcessor,
39 DoubleCellProcessor, LongCellProcessor, StringCellProcessor {
40
41 private final Collection<Object> collection;
42
43
44
45
46
47
48
49
50
51 public IsElementOf(final Collection<Object> collection) {
52 super();
53 checkPreconditions(collection);
54 this.collection = collection;
55 }
56
57
58
59
60
61
62
63
64
65
66
67
68 public IsElementOf(final Collection<Object> collection, final CellProcessor next) {
69 super(next);
70 checkPreconditions(collection);
71 this.collection = collection;
72 }
73
74
75
76
77
78
79
80
81
82 private static void checkPreconditions(final Collection<Object> collection) {
83 if( collection == null ) {
84 throw new NullPointerException("collection should not be null");
85 }
86 }
87
88
89
90
91
92
93
94 public Object execute(final Object value, final CsvContext context) {
95
96 if( !collection.contains(value) ) {
97 throw new SuperCsvConstraintViolationException(String.format(
98 "'%s' is not an element of the supplied Collection", value), context, this);
99 }
100
101 return next.execute(value, context);
102 }
103
104 }