View Javadoc
1   package com.opencsv.bean;
2   
3   /*
4    * Copyright 2005 Bytecode Pty Ltd.
5    * 
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * 
10   * http://www.apache.org/licenses/LICENSE-2.0
11   * 
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import com.opencsv.CSVReader;
20  import com.opencsv.ICSVParser;
21  import org.apache.commons.lang3.ObjectUtils;
22  
23  import java.util.Locale;
24  import java.util.ResourceBundle;
25  
26  /**
27   * Builder for creating an IterableCSVToBean.
28   * This should be the preferred method of creating an IterableCSVToBean to keep
29   * the number of constructors to a minimum.
30   *
31   * <pre>
32   * {@code
33   * IterableCSVToBean bean =
34   * new IterableCSVToBean()
35   * .withReader(csvReader)
36   * .withMapper(mappingStrategy)
37   * .withFilter(csvToBeanFilter)
38   * .build();
39   * }
40   * </pre>
41   *
42   * @see IterableCSVToBean
43   *
44   * @param <T> Type of the bean to be iterated over
45   * @deprecated Use {@link CsvToBeanBuilder} instead, then call
46   *   {@link CsvToBean#iterator() } on the result
47   */
48  @Deprecated
49  public class IterableCSVToBeanBuilder<T> {
50  
51      private MappingStrategy<T> mapper;
52      private CSVReader csvReader;
53      private CsvToBeanFilter filter;
54      private Locale errorLocale = Locale.getDefault();
55  
56      /**
57       * Default constructor.
58       */
59      public IterableCSVToBeanBuilder() {
60      }
61  
62      /**
63       * Creates the IterableCSVToBean.
64       *
65       * Will throw a runtime exception if the MappingStrategy or CSVReader is not set.
66       *
67       * @return An instance of IterableCSVToBean
68       */
69      public IterableCSVToBean<T> build() {
70          if (mapper == null) {
71              throw new RuntimeException(ResourceBundle.getBundle(ICSVParser.DEFAULT_BUNDLE_NAME, errorLocale).getString("strategy.undefined"));
72          }
73          if (csvReader == null) {
74              throw new RuntimeException(ResourceBundle.getBundle(ICSVParser.DEFAULT_BUNDLE_NAME, errorLocale).getString("csvreader.null"));
75          }
76          IterableCSVToBean<T> result = new IterableCSVToBean<>(csvReader, mapper, filter);
77          result.setErrorLocale(errorLocale);
78          return result;
79      }
80  
81      /**
82       * Sets the MappingStrategy to be used by the builder.
83       *
84       * @param mappingStrategy An object that implements
85       *   {@link com.opencsv.bean.MappingStrategy}
86       * @return The builder with the MappingStrategy set
87       */
88      public IterableCSVToBeanBuilder<T> withMapper(final MappingStrategy<T> mappingStrategy) {
89          this.mapper = mappingStrategy;
90          return this;
91      }
92  
93      /**
94       * Sets the reader to be used by the builder.
95       * @param reader CSVReader to be incorporated in the builder.
96       * @return The builder with the CSVReader set
97       */
98      public IterableCSVToBeanBuilder<T> withReader(final CSVReader reader) {
99          this.csvReader = reader;
100         return this;
101     }
102 
103     /**
104      * Used by unit tests.
105      * @return The MappingStrategy to be used by the builder.
106      */
107     protected MappingStrategy<T> getStrategy() {
108         return mapper;
109     }
110 
111     /**
112      * Used by unit tests.
113      * @return The csvReader to be used by the builder.
114      */
115     protected CSVReader getCsvReader() {
116         return csvReader;
117     }
118 
119     /**
120      * Used by unit tests.
121      *
122      * @return Filter to be used by the builder.
123      */
124     protected Object getFilter() {
125         return filter;
126     }
127 
128     /**
129      * Sets the filter used to remove unwanted data from the CSV file.
130      *
131      * @param filter An object implementing CsvToBeanFilter
132      * @return The builder with the filter set
133      */
134     public IterableCSVToBeanBuilder<T> withFilter(final CsvToBeanFilter filter) {
135         this.filter = filter;
136         return this;
137     }
138     
139     /**
140      * Sets the locale for all error messages.
141      * @param errorLocale The locale to be used for all error messages. If null,
142      *   the default locale is used.
143      * @return this
144      * @since 4.0
145      */
146     public IterableCSVToBeanBuilder<T> withErrorLocale(Locale errorLocale) {
147         this.errorLocale = ObjectUtils.defaultIfNull(errorLocale, Locale.getDefault());
148         return this;
149     }
150 }