View Javadoc
1   /*
2    * Copyright 2016 Andrew Rucker Jones.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package com.opencsv.bean.mocks;
17  
18  import com.opencsv.bean.CsvBindByName;
19  import com.opencsv.bean.CsvBindByPosition;
20  import com.opencsv.bean.CsvDate;
21  
22  import javax.xml.datatype.XMLGregorianCalendar;
23  import java.math.BigDecimal;
24  import java.math.BigInteger;
25  import java.sql.Time;
26  import java.sql.Timestamp;
27  import java.util.Calendar;
28  import java.util.Currency;
29  import java.util.Date;
30  import java.util.GregorianCalendar;
31  
32  /**
33   * A test class that should provide full coverage for tests of the opencsv
34   * annotations and their functions excepting
35   * {@link java.time.temporal.TemporalAccessor}-based types.
36   *
37   * @see AnnotatedMockBeanTemporal
38   * @author Andrew Rucker Jones
39   */
40  public class AnnotatedMockBeanFull {
41  
42      /**
43       * Field for annotation tests.
44       * <p>Used for the following test cases, reading:</p>
45       * <ul>
46       * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
47       * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
48       * </ul>
49       * <p>Used for the following test cases, writing:</p>
50       * <ul>
51       * <li>Writing every wrapped primitive data type</li>
52       * </ul>
53       */
54      @CsvBindByName(column = "bool1", capture = "^[A-Za-z ]*value: (.*)$", format = "value: %s")
55      @CsvBindByPosition(position = 1, capture = "(?:[A-Za-z ]*value: ){1}(.*)", format = "value: %s")
56      private Boolean boolWrapped;
57  
58      /**
59       * Field for annotation tests.
60       * <p>Used for the following test cases, reading:</p>
61       * <ul>
62       * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
63       * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
64       * </ul>
65       * <p>Used for the following test cases, writing:</p>
66       * <ul>
67       * <li>Writing every primitive data type</li>
68       * </ul>
69       */
70      @CsvBindByName(capture = "couldn't possibly match (anything)")
71      @CsvBindByPosition(position = 2, capture = "couldn't possibly match (anything)")
72      private boolean boolPrimitive;
73  
74      /**
75       * Field for annotation tests.
76       * <p>Used for the following test cases, reading:</p>
77       * <ul>
78       * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
79       * <li>{@link com.opencsv.bean.AnnotationTest#testMapByNameMismatchingType()}</li>
80       * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
81       * <li>{@link com.opencsv.bean.AnnotationTest#testMapByPositionMismatchingType()}</li>
82       * </ul>
83       * <p>Used for the following test cases, writing:</p>
84       * <ul>
85       * <li>Writing every wrapped primitive data type</li>
86       * </ul>
87       */
88      @CsvBindByName(column = "byte1")
89      @CsvBindByPosition(position = 3)
90      private Byte byteWrappedDefaultLocale;
91  
92      /**
93       * Field for annotation tests.
94       * <p>Used for the following test cases, reading:</p>
95       * <ul>
96       * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
97       * <li>{@link com.opencsv.bean.AnnotationTest#testMapRequiredByNameMissingData()}</li>
98       * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
99       * <li>{@link com.opencsv.bean.AnnotationTest#testMapRequiredByPositionMissingData()}</li>
100      * </ul>
101      * <p>Used for the following test cases, writing:</p>
102      * <ul>
103      * <li>Writing a required wrapped primitive field that is null</li>
104      * <li>Writing bad data with exceptions captured</li>
105      * <li>Writing multiple times with exceptions from each write</li>
106      * </ul>
107      */
108     @CsvBindByName(required = true, column = "byte2", locale = "de")
109     @CsvBindByPosition(required = true, position = 4, locale = "de")
110     private Byte byteWrappedSetLocale;
111 
112     /**
113      * Field for annotation tests.
114      * <p>Used for the following test cases, reading:</p>
115      * <ul>
116      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
117      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
118      * </ul>
119      * <p>Used for the following test cases, writing:</p>
120      * <ul>
121      * <li>Writing every primitive data type</li>
122      * </ul>
123      */
124     @CsvBindByName(required = true, column = "byte3")
125     @CsvBindByPosition(required = true, position = 5)
126     private byte bytePrimitiveDefaultLocale;
127 
128     /**
129      * Field for annotation tests.
130      * <p>Used for the following test cases, reading:</p>
131      * <ul>
132      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
133      * </ul>
134      */
135     @CsvBindByName(column = "byte4", locale = "de")
136     @CsvBindByPosition(position = 6, locale = "de")
137     private byte bytePrimitiveSetLocale;
138 
139     /**
140      * Field for annotation tests.
141      * <p>Used for the following test cases, reading:</p>
142      * <ul>
143      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
144      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
145      * </ul>
146      * <p>Used for the following test cases, writing:</p>
147      * <ul>
148      * <li>Writing every wrapped primitive data type</li>
149      * </ul>
150      */
151     @CsvBindByName(column = "double1", locale = "en_US")
152     @CsvBindByPosition(position = 7, locale = "en_US")
153     private Double doubleWrappedDefaultLocale;
154 
155     /**
156      * Field for annotation tests.
157      * <p>Used for the following test cases, reading:</p>
158      * <ul>
159      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
160      * </ul>
161      */
162     @CsvBindByName(column = "double2", locale = "de")
163     @CsvBindByPosition(position = 8, locale = "de")
164     private Double doubleWrappedSetLocale;
165 
166     /**
167      * Field for annotation tests.
168      * <p>Used for the following test cases, reading:</p>
169      * <ul>
170      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
171      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
172      * </ul>
173      * <p>Used for the following test cases, writing:</p>
174      * <ul>
175      * <li>Writing every primitive data type</li>
176      * </ul>
177      */
178     @CsvBindByName(column = "double3")
179     @CsvBindByPosition(position = 9)
180     private double doublePrimitiveDefaultLocale;
181 
182     /**
183      * Field for annotation tests.
184      * <p>Used for the following test cases, reading:</p>
185      * <ul>
186      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
187      * </ul>
188      */
189     @CsvBindByName(
190             column = "double4",
191             locale = "de",
192             writeLocaleEqualsReadLocale = false,
193             writeLocale = "fr")
194     @CsvBindByPosition(
195             position = 10,
196             locale = "de",
197             writeLocaleEqualsReadLocale = false,
198             writeLocale = "fr")
199     private double doublePrimitiveSetLocale;
200 
201     /**
202      * Field for annotation tests.
203      * <p>Used for the following test cases, reading:</p>
204      * <ul>
205      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
206      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
207      * </ul>
208      * <p>Used for the following test cases, writing:</p>
209      * <ul>
210      * <li>Writing every wrapped primitive data type</li>
211      * <li>Writing an optional wrapped primitive field that is null</li>
212      * </ul>
213      */
214     @CsvBindByName(column = "float1")
215     @CsvBindByPosition(position = 11)
216     private Float floatWrappedDefaultLocale;
217 
218     /**
219      * Field for annotation tests.
220      * <p>Used for the following test cases, reading:</p>
221      * <ul>
222      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
223      * </ul>
224      */
225     @CsvBindByName(column = "float2", locale = "de")
226     @CsvBindByPosition(position = 12, locale = "de")
227     private Float floatWrappedSetLocale;
228 
229     /**
230      * Field for annotation tests.
231      * <p>Used for the following test cases, reading:</p>
232      * <ul>
233      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
234      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
235      * </ul>
236      * <p>Used for the following test cases, writing:</p>
237      * <ul>
238      * <li>Writing every primitive data type</li>
239      * </ul>
240      */
241     @CsvBindByName(column = "float3")
242     @CsvBindByPosition(position = 13)
243     private float floatPrimitiveDefaultLocale;
244 
245     /**
246      * Field for annotation tests.
247      * <p>Used for the following test cases, reading:</p>
248      * <ul>
249      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
250      * </ul>
251      */
252     @CsvBindByName(column = "float4", locale = "de")
253     @CsvBindByPosition(position = 14, locale = "de")
254     private float floatPrimitiveSetLocale;
255 
256     /**
257      * Field for annotation tests.
258      * <p>Used for the following test cases, reading:</p>
259      * <ul>
260      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
261      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
262      * </ul>
263      * <p>Used for the following test cases, writing:</p>
264      * <ul>
265      * <li>Writing every wrapped primitive data type</li>
266      * </ul>
267      */
268     @CsvBindByName(column = "integer1")
269     @CsvBindByPosition(position = 15)
270     private Integer integerWrappedDefaultLocale;
271 
272     /**
273      * Field for annotation tests.
274      * <p>Used for the following test cases, reading:</p>
275      * <ul>
276      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
277      * </ul>
278      */
279     @CsvBindByName(column = "integer2", locale = "de")
280     @CsvBindByPosition(position = 16, locale = "de")
281     private Integer integerWrappedSetLocale;
282 
283     /**
284      * Field for annotation tests.
285      * <p>Used for the following test cases, reading:</p>
286      * <ul>
287      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
288      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
289      * </ul>
290      * <p>Used for the following test cases, writing:</p>
291      * <ul>
292      * <li>Writing every primitive data type</li>
293      * </ul>
294      */
295     @CsvBindByName(column = "integer3")
296     @CsvBindByPosition(position = 17)
297     private int integerPrimitiveDefaultLocale;
298 
299     /**
300      * Field for annotation tests.
301      * <p>Used for the following test cases, reading:</p>
302      * <ul>
303      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
304      * </ul>
305      */
306     @CsvBindByName(column = "integer4", locale = "de")
307     @CsvBindByPosition(position = 18, locale = "de")
308     private int integerPrimitiveSetLocale;
309 
310     /**
311      * Field for annotation tests.
312      * <p>Used for the following test cases, reading:</p>
313      * <ul>
314      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
315      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
316      * </ul>
317      * <p>Used for the following test cases, writing:</p>
318      * <ul>
319      * <li>Writing every wrapped primitive data type</li>
320      * </ul>
321      */
322     @CsvBindByName(column = "long1")
323     @CsvBindByPosition(position = 19)
324     private Long longWrappedDefaultLocale;
325 
326     /**
327      * Field for annotation tests.
328      * <p>Used for the following test cases, reading:</p>
329      * <ul>
330      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
331      * </ul>
332      */
333     @CsvBindByName(column = "long2", locale = "de")
334     @CsvBindByPosition(position = 20, locale = "de")
335     private Long longWrappedSetLocale;
336 
337     /**
338      * Field for annotation tests.
339      * <p>Used for the following test cases, reading:</p>
340      * <ul>
341      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
342      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
343      * </ul>
344      * <p>Used for the following test cases, writing:</p>
345      * <ul>
346      * <li>Writing every primitive data type</li>
347      * </ul>
348      */
349     @CsvBindByName(column = "long3")
350     @CsvBindByPosition(position = 21)
351     private long longPrimitiveDefaultLocale;
352 
353     /**
354      * Field for annotation tests.
355      * <p>Used for the following test cases, reading:</p>
356      * <ul>
357      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
358      * </ul>
359      */
360     @CsvBindByName(column = "long4", locale = "de")
361     @CsvBindByPosition(position = 22, locale = "de")
362     private long longPrimitiveSetLocale;
363 
364     /**
365      * Field for annotation tests.
366      * <p>Used for the following test cases, reading:</p>
367      * <ul>
368      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
369      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
370      * </ul>
371      * <p>Used for the following test cases, writing:</p>
372      * <ul>
373      * <li>Writing every wrapped primitive data type</li>
374      * </ul>
375      */
376     @CsvBindByName(column = "short1")
377     @CsvBindByPosition(position = 23)
378     private Short shortWrappedDefaultLocale;
379 
380     /**
381      * Field for annotation tests.
382      * <p>Used for the following test cases, reading:</p>
383      * <ul>
384      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
385      * </ul>
386      */
387     @CsvBindByName(column = "short2", locale = "de")
388     @CsvBindByPosition(position = 24, locale = "de")
389     private Short shortWrappedSetLocale;
390 
391     /**
392      * Field for annotation tests.
393      * <p>Used for the following test cases, reading:</p>
394      * <ul>
395      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
396      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
397      * </ul>
398      * <p>Used for the following test cases, writing:</p>
399      * <ul>
400      * <li>Writing every primitive data type</li>
401      * </ul>
402      */
403     @CsvBindByName(column = "short3")
404     @CsvBindByPosition(position = 25)
405     private short shortPrimitiveDefaultLocale;
406 
407     /**
408      * Field for annotation tests.
409      * <p>Used for the following test cases, reading:</p>
410      * <ul>
411      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
412      * </ul>
413      */
414     @CsvBindByName(column = "short4", locale = "de")
415     @CsvBindByPosition(position = 26, locale = "de")
416     private short shortPrimitiveSetLocale;
417 
418     /**
419      * Field for annotation tests.
420      * <p>Used for the following test cases, reading:</p>
421      * <ul>
422      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
423      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
424      * </ul>
425      * <p>Used for the following test cases, writing:</p>
426      * <ul>
427      * <li>Writing every wrapped primitive data type</li>
428      * </ul>
429      */
430     @CsvBindByName(column = "char1")
431     @CsvBindByPosition(position = 27)
432     private Character characterWrapped;
433 
434     /**
435      * Field for annotation tests.
436      * <p>Used for the following test cases, reading:</p>
437      * <ul>
438      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
439      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
440      * </ul>
441      * <p>Used for the following test cases, writing:</p>
442      * <ul>
443      * <li>Writing every primitive data type</li>
444      * </ul>
445      */
446     @CsvBindByName(column = "char2")
447     @CsvBindByPosition(position = 28)
448     private char characterPrimitive;
449 
450     /**
451      * Field for annotation tests.
452      * <p>Used for the following test cases, reading:</p>
453      * <ul>
454      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
455      * </ul>
456      * <p>Used for the following test cases, writing:</p>
457      * <ul>
458      * <li>Writing String, BigDecimal and BigInteger</li>
459      * </ul>
460      */
461     @CsvBindByName(column = "bigdecimal1")
462     @CsvBindByPosition(position = 29)
463     private BigDecimal bigdecimalDefaultLocale;
464 
465     /**
466      * Field for annotation tests.
467      * <p>Used for the following test cases, reading:</p>
468      * <ul>
469      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
470      * </ul>
471      */
472     @CsvBindByName(column = "bigdecimal2", locale = "de")
473     @CsvBindByPosition(position = 30, locale = "de")
474     private BigDecimal bigdecimalSetLocale;
475 
476     /**
477      * Field for annotation tests.
478      * <p>Used for the following test cases, reading:</p>
479      * <ul>
480      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
481      * </ul>
482      * <p>Used for the following test cases, writing:</p>
483      * <ul>
484      * <li>Writing String, BigDecimal and BigInteger</li>
485      * </ul>
486      */
487     @CsvBindByName(column = "biginteger1")
488     @CsvBindByPosition(position = 31)
489     private BigInteger bigintegerDefaultLocale;
490 
491     /**
492      * Field for annotation tests.
493      * <p>Used for the following test cases, reading:</p>
494      * <ul>
495      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
496      * </ul>
497      */
498     @CsvBindByName(column = "biginteger2", locale = "de")
499     @CsvBindByPosition(position = 32, locale = "de")
500     private BigInteger bigintegerSetLocale;
501 
502     /**
503      * Field for annotation tests.
504      * <p>Used for the following test cases, reading:</p>
505      * <ul>
506      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
507      * <li>{@link com.opencsv.bean.AnnotationTest#testRequiredDateEmptyInput()}</li>
508      * <li>{@link com.opencsv.bean.AnnotationTest#testUnparseableLocaleInspecificDate()}</li>
509      * </ul>
510      * <p>Used for the following test cases, writing:</p>
511      * <ul>
512      * <li>Writing a required date field that is null</li>
513      * <li>Writing multiple times with exceptions from each write</li>
514      * </ul>
515      */
516     @CsvBindByName(column = "date1", required = true)
517     @CsvBindByPosition(position = 33, required = true)
518     @CsvDate
519     private Date dateDefaultLocale;
520 
521     /**
522      * Field for annotation tests.
523      * <p>Used for the following test cases, reading:</p>
524      * <ul>
525      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
526      * </ul>
527      */
528     @CsvBindByName(column = "date2")
529     @CsvBindByPosition(position = 34)
530     @CsvDate
531     private GregorianCalendar gcalDefaultLocale;
532 
533     /**
534      * Field for annotation tests.
535      * <p>Used for the following test cases, reading:</p>
536      * <ul>
537      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
538      * </ul>
539      * <p>Used for the following test cases, writing:</p>
540      * <ul>
541      * <li>Writing an optional date field that is null</li>
542      * </ul>
543      */
544     @CsvBindByName(column = "date3")
545     @CsvBindByPosition(position = 35)
546     @CsvDate
547     private Calendar calDefaultLocale;
548 
549     /**
550      * Field for annotation tests.
551      * <p>Used for the following test cases, reading:</p>
552      * <ul>
553      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
554      * </ul>
555      */
556     @CsvBindByName(column = "date4")
557     @CsvBindByPosition(position = 36)
558     @CsvDate
559     private XMLGregorianCalendar xmlcalDefaultLocale;
560 
561     /**
562      * Field for annotation tests.
563      * <p>Used for the following test cases, reading:</p>
564      * <ul>
565      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
566      * </ul>
567      */
568     @CsvBindByName(column = "date5")
569     @CsvBindByPosition(position = 37)
570     @CsvDate
571     private Time sqltimeDefaultLocale;
572 
573     /**
574      * Field for annotation tests.
575      * <p>Used for the following test cases, reading:</p>
576      * <ul>
577      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
578      * </ul>
579      */
580     @CsvBindByName(column = "date6")
581     @CsvBindByPosition(position = 38)
582     @CsvDate
583     private Timestamp sqltimestampDefaultLocale;
584 
585     /**
586      * Field for annotation tests.
587      * <p>Used for the following test cases, reading:</p>
588      * <ul>
589      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
590      * <li>82</li>
591      * </ul>
592      */
593     @CsvBindByName(column = "date7", locale = "de")
594     @CsvBindByPosition(position = 39, locale = "de")
595     @CsvDate
596     private Date dateSetLocale;
597 
598     /**
599      * Field for annotation tests.
600      * <p>Used for the following test cases, reading:</p>
601      * <ul>
602      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
603      * </ul>
604      */
605     @CsvBindByName(column = "date8", locale = "de")
606     @CsvBindByPosition(position = 40, locale = "de")
607     @CsvDate
608     private GregorianCalendar gcalSetLocale;
609 
610     /**
611      * Field for annotation tests.
612      * <p>Used for the following test cases, reading:</p>
613      * <ul>
614      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
615      * </ul>
616      */
617     @CsvBindByName(column = "date9", locale = "de")
618     @CsvBindByPosition(position = 41, locale = "de")
619     @CsvDate
620     private Calendar calSetLocale;
621 
622     /**
623      * Field for annotation tests.
624      * <p>Used for the following test cases, reading:</p>
625      * <ul>
626      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
627      * </ul>
628      */
629     @CsvBindByName(column = "date10", locale = "de")
630     @CsvBindByPosition(position = 42, locale = "de")
631     @CsvDate
632     private XMLGregorianCalendar xmlcalSetLocale;
633 
634     /**
635      * Field for annotation tests.
636      * <p>Used for the following test cases, reading:</p>
637      * <ul>
638      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
639      * </ul>
640      */
641     @CsvBindByName(column = "date11", locale = "de")
642     @CsvBindByPosition(position = 43, locale = "de")
643     @CsvDate
644     private Time sqltimeSetLocale;
645 
646     /**
647      * Field for annotation tests.
648      * <p>Used for the following test cases, reading:</p>
649      * <ul>
650      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
651      * </ul>
652      */
653     @CsvBindByName(column = "date12", locale = "de")
654     @CsvBindByPosition(position = 44, locale = "de")
655     @CsvDate
656     private Timestamp sqltimestampSetLocale;
657 
658     /**
659      * Field for annotation tests.
660      * <p>Used for the following test cases, reading:</p>
661      * <ul>
662      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
663      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
664      * </ul>
665      * <p>Used for the following test cases, writing:</p>
666      * <ul>
667      * <li>Writing String, BigDecimal and BigInteger</li>
668      * </ul>
669      */
670     @CsvBindByName(column = "string1")
671     @CsvBindByPosition(position = 0)
672     private String stringClass;
673 
674     /**
675      * Field for annotation tests.
676      * <p>Used for the following test cases, reading:</p>
677      * <ul>
678      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
679      * </ul>
680      */
681     @CsvBindByName(column = "date13")
682     @CsvBindByPosition(position = 45)
683     @CsvDate("MM/dd/yyyy")
684     private GregorianCalendar gcalFormatDefaultLocale;
685 
686     /**
687      * Field for annotation tests.
688      * <p>Used for the following test cases, reading:</p>
689      * <ul>
690      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
691      * </ul>
692      */
693     @CsvBindByName(column = "date14", locale = "de-DE")
694     @CsvBindByPosition(position = 46, locale = "de-DE")
695     @CsvDate("dd. MMMM yyyy")
696     private GregorianCalendar gcalFormatSetLocale;
697 
698     /**
699      * Field for annotation tests.
700      * <p>Used for the following test cases, reading:</p>
701      * <ul>
702      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
703      * </ul>
704      */
705     @CsvBindByName(column = "date15")
706     @CsvBindByPosition(position = 47)
707     @CsvDate
708     private java.sql.Date sqldateDefaultLocale;
709 
710     /**
711      * Field for annotation tests.
712      * <p>Used for the following test cases, reading:</p><ul>
713      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
714      * </ul>
715      */
716     @CsvBindByName(column = "date16", locale = "de-DE")
717     @CsvBindByPosition(position = 48, locale = "de-DE")
718     @CsvDate
719     private java.sql.Date sqldateSetLocale;
720 
721     /**
722      * Field for annotation tests.
723      * <p>Used for the following test cases, reading:</p>
724      * <ul>
725      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
726      * </ul>
727      */
728     @CsvBindByName(column = "float5", locale = "doesntexistquitecertain")
729     @CsvBindByPosition(position = 49, locale = "doesntexistquitecertain")
730     private float floatBadLocale;
731 
732     /**
733      * Field for annotation tests.
734      * <p>Used for the following test cases, reading:</p>
735      * <ul>
736      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
737      * </ul>
738      */
739     @CsvBindByName(column = "enum1")
740     @CsvBindByPosition(position = 50)
741     private TestEnum testEnum;
742 
743     /**
744      * Field for annotation tests.
745      * <p>Used for the following test cases, reading:</p>
746      * <ul>
747      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
748      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
749      * </ul>
750      */
751     @CsvBindByName(column = "currency1")
752     @CsvBindByPosition(position = 51)
753     private Currency testCurrency;
754 
755     /**
756      * Field for annotation tests.
757      * <p>Used for the following test cases, reading:</p>
758      * <ul>
759      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
760      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
761      * </ul>
762      */
763     @CsvBindByName(column = "itnogoodcolumnitverybad")
764     @CsvBindByPosition(position = 100)
765     private String columnDoesntExist;
766 
767     /**
768      * Field for annotation tests.
769      * <p>Used for the following test cases, reading:</p>
770      * <ul>
771      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByName()}</li>
772      * <li>{@link com.opencsv.bean.AnnotationTest#testGoodDataByPosition()}</li>
773      * </ul>
774      */
775     private String unmapped;
776 
777     public Boolean getBoolWrapped() {
778         return boolWrapped;
779     }
780 
781     public void setBoolWrapped(Boolean boolWrapped) {
782         this.boolWrapped = boolWrapped;
783     }
784 
785     /**
786      * For reading test case: Verify that reflection is being used for setter, and
787      * not introspection. I have read that introspection is used on beans, and
788      * that beans are only allowed a single setter method for any member variable
789      * that must have the same type as the member variable. Introspection fails to
790      * find the setter otherwise.
791      *
792      * @see <a href="http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/org/apache/commons/beanutils/package-summary.html#FAQ.property">Apache BeanUtils documentation</a>
793      */
794     public void setBoolWrapped(String boolWrapped) {
795         this.boolWrapped = Boolean.valueOf(boolWrapped);
796     }
797 
798     public boolean isBoolPrimitive() {
799         return boolPrimitive;
800     }
801 
802     public void setBoolPrimitive(boolean boolPrimitive) {
803         this.boolPrimitive = boolPrimitive;
804     }
805 
806     public Byte getByteWrappedDefaultLocale() {
807         return byteWrappedDefaultLocale;
808     }
809 
810     public void setByteWrappedDefaultLocale(Byte byteWrappedDefaultLocale) {
811         this.byteWrappedDefaultLocale = byteWrappedDefaultLocale;
812     }
813 
814     public Byte getByteWrappedSetLocale() {
815         return byteWrappedSetLocale;
816     }
817 
818     public void setByteWrappedSetLocale(Byte byteWrappedSetLocale) {
819         this.byteWrappedSetLocale = byteWrappedSetLocale;
820     }
821 
822     public byte getBytePrimitiveDefaultLocale() {
823         return bytePrimitiveDefaultLocale;
824     }
825 
826     public void setBytePrimitiveDefaultLocale(byte bytePrimitiveDefaultLocale) {
827         this.bytePrimitiveDefaultLocale = bytePrimitiveDefaultLocale;
828     }
829 
830     public byte getBytePrimitiveSetLocale() {
831         return bytePrimitiveSetLocale;
832     }
833 
834     public void setBytePrimitiveSetLocale(byte bytePrimitiveSetLocale) {
835         this.bytePrimitiveSetLocale = bytePrimitiveSetLocale;
836     }
837 
838     public Double getDoubleWrappedDefaultLocale() {
839         return doubleWrappedDefaultLocale;
840     }
841 
842     public void setDoubleWrappedDefaultLocale(Double doubleWrappedDefaultLocale) {
843         this.doubleWrappedDefaultLocale = doubleWrappedDefaultLocale;
844     }
845 
846     public Double getDoubleWrappedSetLocale() {
847         return doubleWrappedSetLocale;
848     }
849 
850     public void setDoubleWrappedSetLocale(Double doubleWrappedSetLocale) {
851         this.doubleWrappedSetLocale = doubleWrappedSetLocale;
852     }
853 
854     public double getDoublePrimitiveDefaultLocale() {
855         return doublePrimitiveDefaultLocale;
856     }
857 
858     public void setDoublePrimitiveDefaultLocale(double doublePrimitiveDefaultLocale) {
859         this.doublePrimitiveDefaultLocale = doublePrimitiveDefaultLocale;
860     }
861 
862     public double getDoublePrimitiveSetLocale() {
863         return doublePrimitiveSetLocale;
864     }
865 
866     public void setDoublePrimitiveSetLocale(double doublePrimitiveSetLocale) {
867         this.doublePrimitiveSetLocale = doublePrimitiveSetLocale;
868     }
869 
870     public Float getFloatWrappedDefaultLocale() {
871         return floatWrappedDefaultLocale;
872     }
873 
874     public void setFloatWrappedDefaultLocale(Float floatWrappedDefaultLocale) {
875         this.floatWrappedDefaultLocale = floatWrappedDefaultLocale;
876     }
877 
878     public Float getFloatWrappedSetLocale() {
879         return floatWrappedSetLocale;
880     }
881 
882     public void setFloatWrappedSetLocale(Float floatWrappedSetLocale) {
883         this.floatWrappedSetLocale = floatWrappedSetLocale;
884     }
885 
886     public float getFloatPrimitiveDefaultLocale() {
887         return floatPrimitiveDefaultLocale;
888     }
889 
890     /* Commented out for reading test case assigning to private field without setter method.
891     public void setFloatPrimitiveDefaultLocale(float floatPrimitiveDefaultLocale) {
892         this.floatPrimitiveDefaultLocale = floatPrimitiveDefaultLocale;
893     }
894     */
895 
896     public float getFloatPrimitiveSetLocale() {
897         return floatPrimitiveSetLocale;
898     }
899 
900     public void setFloatPrimitiveSetLocale(float floatPrimitiveSetLocale) {
901         this.floatPrimitiveSetLocale = floatPrimitiveSetLocale;
902     }
903 
904     public Integer getIntegerWrappedDefaultLocale() {
905         return integerWrappedDefaultLocale;
906     }
907 
908     public void setIntegerWrappedDefaultLocale(Integer integerWrappedDefaultLocale) {
909         this.integerWrappedDefaultLocale = integerWrappedDefaultLocale;
910     }
911 
912     public Integer getIntegerWrappedSetLocale() {
913         return integerWrappedSetLocale;
914     }
915 
916     public void setIntegerWrappedSetLocale(Integer integerWrappedSetLocale) {
917         this.integerWrappedSetLocale = integerWrappedSetLocale;
918     }
919 
920     public int getIntegerPrimitiveDefaultLocale() {
921         return integerPrimitiveDefaultLocale;
922     }
923 
924     public void setIntegerPrimitiveDefaultLocale(int integerPrimitiveDefaultLocale) {
925         this.integerPrimitiveDefaultLocale = Integer.MAX_VALUE - integerPrimitiveDefaultLocale;
926     }
927 
928     public int getIntegerPrimitiveSetLocale() {
929         return integerPrimitiveSetLocale;
930     }
931 
932     public void setIntegerPrimitiveSetLocale(int integerPrimitiveSetLocale) {
933         this.integerPrimitiveSetLocale = integerPrimitiveSetLocale;
934     }
935 
936     public Long getLongWrappedDefaultLocale() {
937         return longWrappedDefaultLocale;
938     }
939 
940     public void setLongWrappedDefaultLocale(Long longWrappedDefaultLocale) {
941         this.longWrappedDefaultLocale = longWrappedDefaultLocale;
942     }
943 
944     public Long getLongWrappedSetLocale() {
945         return longWrappedSetLocale;
946     }
947 
948     public void setLongWrappedSetLocale(Long longWrappedSetLocale) {
949         this.longWrappedSetLocale = longWrappedSetLocale;
950     }
951 
952     public long getLongPrimitiveDefaultLocale() {
953         return longPrimitiveDefaultLocale;
954     }
955 
956     /* Private for test case mapping to primitive type with private access and private setter. */
957     @SuppressWarnings("unused")
958     private void setLongPrimitiveDefaultLocale(long longPrimitiveDefaultLocale) {
959         this.longPrimitiveDefaultLocale = Long.MAX_VALUE - longPrimitiveDefaultLocale;
960     }
961 
962     public long getLongPrimitiveSetLocale() {
963         return longPrimitiveSetLocale;
964     }
965 
966     public void setLongPrimitiveSetLocale(long longPrimitiveSetLocale) {
967         this.longPrimitiveSetLocale = longPrimitiveSetLocale;
968     }
969 
970     public Short getShortWrappedDefaultLocale() {
971         return shortWrappedDefaultLocale;
972     }
973 
974     public void setShortWrappedDefaultLocale(Short shortWrappedDefaultLocale) {
975         this.shortWrappedDefaultLocale = shortWrappedDefaultLocale;
976     }
977 
978     public Short getShortWrappedSetLocale() {
979         return shortWrappedSetLocale;
980     }
981 
982     public void setShortWrappedSetLocale(Short shortWrappedSetLocale) {
983         this.shortWrappedSetLocale = shortWrappedSetLocale;
984     }
985 
986     public short getShortPrimitiveDefaultLocale() {
987         return shortPrimitiveDefaultLocale;
988     }
989 
990     public void setShortPrimitiveDefaultLocale(short shortPrimitiveDefaultLocale) {
991         this.shortPrimitiveDefaultLocale = shortPrimitiveDefaultLocale;
992     }
993 
994     public short getShortPrimitiveSetLocale() {
995         return shortPrimitiveSetLocale;
996     }
997 
998     public void setShortPrimitiveSetLocale(short shortPrimitiveSetLocale) {
999         this.shortPrimitiveSetLocale = shortPrimitiveSetLocale;
1000     }
1001 
1002     public Character getCharacterWrapped() {
1003         return characterWrapped;
1004     }
1005 
1006     public void setCharacterWrapped(Character characterWrapped) {
1007         this.characterWrapped = characterWrapped;
1008     }
1009 
1010     public char getCharacterPrimitive() {
1011         return characterPrimitive;
1012     }
1013 
1014     public void setCharacterPrimitive(char characterPrimitive) {
1015         this.characterPrimitive = characterPrimitive;
1016     }
1017 
1018     public BigDecimal getBigdecimalDefaultLocale() {
1019         return bigdecimalDefaultLocale;
1020     }
1021 
1022     public void setBigdecimalDefaultLocale(BigDecimal bigdecimalDefaultLocale) {
1023         this.bigdecimalDefaultLocale = bigdecimalDefaultLocale;
1024     }
1025 
1026     public BigDecimal getBigdecimalSetLocale() {
1027         return bigdecimalSetLocale;
1028     }
1029 
1030     public void setBigdecimalSetLocale(BigDecimal bigdecimalSetLocale) {
1031         this.bigdecimalSetLocale = bigdecimalSetLocale;
1032     }
1033 
1034     public BigInteger getBigintegerDefaultLocale() {
1035         return bigintegerDefaultLocale;
1036     }
1037 
1038     public void setBigintegerDefaultLocale(BigInteger bigintegerDefaultLocale) {
1039         this.bigintegerDefaultLocale = bigintegerDefaultLocale;
1040     }
1041 
1042     public BigInteger getBigintegerSetLocale() {
1043         return bigintegerSetLocale;
1044     }
1045 
1046     public void setBigintegerSetLocale(BigInteger bigintegerSetLocale) {
1047         this.bigintegerSetLocale = bigintegerSetLocale;
1048     }
1049 
1050     public Date getDateDefaultLocale() {
1051         return dateDefaultLocale;
1052     }
1053 
1054     public void setDateDefaultLocale(Date dateDefaultLocale) {
1055         this.dateDefaultLocale = dateDefaultLocale;
1056     }
1057 
1058     public GregorianCalendar getGcalDefaultLocale() {
1059         return gcalDefaultLocale;
1060     }
1061 
1062     public void setGcalDefaultLocale(GregorianCalendar gcalDefaultLocale) {
1063         this.gcalDefaultLocale = gcalDefaultLocale;
1064     }
1065 
1066     public Calendar getCalDefaultLocale() {
1067         return calDefaultLocale;
1068     }
1069 
1070     public void setCalDefaultLocale(Calendar calDefaultLocale) {
1071         this.calDefaultLocale = calDefaultLocale;
1072     }
1073 
1074     public XMLGregorianCalendar getXmlcalDefaultLocale() {
1075         return xmlcalDefaultLocale;
1076     }
1077 
1078     public void setXmlcalDefaultLocale(XMLGregorianCalendar xmlcalDefaultLocale) {
1079         this.xmlcalDefaultLocale = xmlcalDefaultLocale;
1080     }
1081 
1082     public Time getSqltimeDefaultLocale() {
1083         return sqltimeDefaultLocale;
1084     }
1085 
1086     public void setSqltimeDefaultLocale(Time sqltimeDefaultLocale) {
1087         this.sqltimeDefaultLocale = sqltimeDefaultLocale;
1088     }
1089 
1090     public Timestamp getSqltimestampDefaultLocale() {
1091         return sqltimestampDefaultLocale;
1092     }
1093 
1094     public void setSqltimestampDefaultLocale(Timestamp sqltimestampDefaultLocale) {
1095         this.sqltimestampDefaultLocale = sqltimestampDefaultLocale;
1096     }
1097 
1098     public Date getDateSetLocale() {
1099         return dateSetLocale;
1100     }
1101 
1102     public void setDateSetLocale(Date dateSetLocale) {
1103         this.dateSetLocale = dateSetLocale;
1104     }
1105 
1106     public GregorianCalendar getGcalSetLocale() {
1107         return gcalSetLocale;
1108     }
1109 
1110     public void setGcalSetLocale(GregorianCalendar gcalSetLocale) {
1111         this.gcalSetLocale = gcalSetLocale;
1112     }
1113 
1114     public Calendar getCalSetLocale() {
1115         return calSetLocale;
1116     }
1117 
1118     public void setCalSetLocale(Calendar calSetLocale) {
1119         this.calSetLocale = calSetLocale;
1120     }
1121 
1122     public XMLGregorianCalendar getXmlcalSetLocale() {
1123         return xmlcalSetLocale;
1124     }
1125 
1126     public void setXmlcalSetLocale(XMLGregorianCalendar xmlcalSetLocale) {
1127         this.xmlcalSetLocale = xmlcalSetLocale;
1128     }
1129 
1130     public Time getSqltimeSetLocale() {
1131         return sqltimeSetLocale;
1132     }
1133 
1134     public void setSqltimeSetLocale(Time sqltimeSetLocale) {
1135         this.sqltimeSetLocale = sqltimeSetLocale;
1136     }
1137 
1138     public Timestamp getSqltimestampSetLocale() {
1139         return sqltimestampSetLocale;
1140     }
1141 
1142     public void setSqltimestampSetLocale(Timestamp sqltimestampSetLocale) {
1143         this.sqltimestampSetLocale = sqltimestampSetLocale;
1144     }
1145 
1146     public String getStringClass() {
1147         return stringClass;
1148     }
1149 
1150     public void setStringClass(String stringClass) {
1151         this.stringClass = stringClass;
1152     }
1153 
1154     public String getColumnDoesntExist() {
1155         return columnDoesntExist;
1156     }
1157 
1158     public void setColumnDoesntExist(String columnDoesntExist) {
1159         this.columnDoesntExist = columnDoesntExist;
1160     }
1161 
1162     public String getUnmapped() {
1163         return unmapped;
1164     }
1165 
1166     public GregorianCalendar getGcalFormatDefaultLocale() {
1167         return gcalFormatDefaultLocale;
1168     }
1169 
1170     public void setGcalFormatDefaultLocale(GregorianCalendar gcalFormatDefaultLocale) {
1171         this.gcalFormatDefaultLocale = gcalFormatDefaultLocale;
1172     }
1173 
1174     public GregorianCalendar getGcalFormatSetLocale() {
1175         return gcalFormatSetLocale;
1176     }
1177 
1178     public void setGcalFormatSetLocale(GregorianCalendar gcalFormatSetLocale) {
1179         this.gcalFormatSetLocale = gcalFormatSetLocale;
1180     }
1181 
1182     public java.sql.Date getSqldateDefaultLocale() {
1183         return sqldateDefaultLocale;
1184     }
1185 
1186     public void setSqldateDefaultLocale(java.sql.Date sqldateDefaultLocale) {
1187         this.sqldateDefaultLocale = sqldateDefaultLocale;
1188     }
1189 
1190     public java.sql.Date getSqldateSetLocale() {
1191         return sqldateSetLocale;
1192     }
1193 
1194     public void setSqldateSetLocale(java.sql.Date sqldateSetLocale) {
1195         this.sqldateSetLocale = sqldateSetLocale;
1196     }
1197 
1198     public float getFloatBadLocale() {
1199         return floatBadLocale;
1200     }
1201 
1202     public void setFloatBadLocale(float floatBadLocale) {
1203         this.floatBadLocale = floatBadLocale;
1204     }
1205 
1206     public TestEnum getTestEnum() {return testEnum;}
1207 
1208     public void setTestEnum(TestEnum testEnum) {this.testEnum = testEnum;}
1209 
1210     public Currency getTestCurrency() {return testCurrency;}
1211 
1212     public void setTestCurrency(Currency testCurrency) {this.testCurrency = testCurrency;}
1213 }