View Javadoc
1   /*
2    * Copyright 2013 the original author or authors.
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  
17  package com.orangesignal.csv.manager;
18  
19  import java.io.File;
20  import java.io.IOException;
21  import java.io.InputStream;
22  import java.io.Reader;
23  import java.util.List;
24  import java.util.zip.ZipFile;
25  import java.util.zip.ZipInputStream;
26  
27  import com.orangesignal.csv.LhaEntryFilter;
28  import com.orangesignal.csv.ZipEntryFilter;
29  import com.orangesignal.csv.filters.BeanFilter;
30  import com.orangesignal.csv.handlers.BeanOrder;
31  import com.orangesignal.jlha.LhaFile;
32  import com.orangesignal.jlha.LhaInputStream;
33  
34  /**
35   * 区切り文字形式データの統合入力インタフェースです。
36   *
37   * @param <T> 区切り文字形式データの型
38   * @author Koji Sugisawa
39   */
40  public interface CsvLoader<T> {
41  
42  	/**
43  	 * Java プログラム要素フィルタを設定します。
44  	 * 
45  	 * @param filter Java プログラム要素フィルタ
46  	 * @return このオブジェクトへの参照
47  	 * @since 1.3.0
48  	 */
49  	CsvLoader<T> filter(BeanFilter filter);
50  
51  	/**
52  	 * 並び替え条件を設定します。
53  	 * 
54  	 * @param orders 並び替え条件
55  	 * @return このオブジェクトへの参照
56  	 * @since 1.3.0
57  	 */
58  	CsvLoader<T> order(BeanOrder... orders);
59  
60  	/**
61  	 * 取得データの開始位置を設定します。
62  	 * 
63  	 * @param offset 取得データの開始位置
64  	 * @return このオブジェクトへの参照
65  	 * @since 1.3.0
66  	 */
67  	CsvLoader<T> offset(int offset);
68  
69  	/**
70  	 * 取得データの限度数を設定します。
71  	 * 
72  	 * @param limit 取得データの限度数
73  	 * @return このオブジェクトへの参照
74  	 * @since 1.3.0
75  	 */
76  	CsvLoader<T> limit(int limit);
77  
78  	/**
79  	 * 指定された文字入力ストリームを読込み、
80  	 * 変換された区切り文字形式データのインスタンスを返します。
81  	 *
82  	 * @param reader 文字入力ストリーム
83  	 * @return 変換された区切り文字形式データのインスタンス
84  	 * @throws IOException 入出力エラーが発生した場合
85  	 */
86  	List<T> from(Reader reader) throws IOException;
87  
88  	/**
89  	 * 指定された入力ストリームを指定されたエンコーディングで読込み、
90  	 * 変換された区切り文字形式データのインスタンスを返します。
91  	 *
92  	 * @param in 入力ストリーム
93  	 * @param encoding エンコーディング
94  	 * @return 変換された区切り文字形式データのインスタンス
95  	 * @throws IOException 入出力エラーが発生した場合
96  	 */
97  	List<T> from(InputStream in, String encoding) throws IOException;
98  
99  	/**
100 	 * 指定された入力ストリームをプラットフォームのデフォルトエンコーディングで読込み、
101 	 * 変換された区切り文字形式データのインスタンスを返します。
102 	 *
103 	 * @param in 入力ストリーム
104 	 * @return 変換された区切り文字形式データのインスタンス
105 	 * @throws IOException 入出力エラーが発生した場合
106 	 */
107 	List<T> from(InputStream in) throws IOException;
108 
109 	/**
110 	 * 指定されたファイルを指定されたエンコーディングで読込み、
111 	 * 変換された区切り文字形式データのインスタンスを返します。
112 	 *
113 	 * @param file 入力ファイル
114 	 * @param encoding エンコーディング
115 	 * @return 変換された区切り文字形式データのインスタンス
116 	 * @throws IOException 入出力エラーが発生した場合
117 	 */
118 	List<T> from(File file, String encoding) throws IOException;
119 
120 	/**
121 	 * 指定されたファイルをプラットフォームのデフォルトエンコーディングで読込み、
122 	 * 変換された区切り文字形式データのインスタンスを返します。
123 	 *
124 	 * @param file 入力ファイル
125 	 * @return 変換された区切り文字形式データのインスタンス
126 	 * @throws IOException 入出力エラーが発生した場合
127 	 */
128 	List<T> from(File file) throws IOException;
129 
130 	// ------------------------------------------------------------------------
131 	// static load (compress support)
132 
133 	/**
134 	 * 指定された LHA 入力ストリームから指定されたフィルタの基準を満たす LHA エントリを指定されたエンコーディングで読込み、
135 	 * 変換された区切り文字形式データのインスタンスを返します。
136 	 *
137 	 * @param in LHA 入力ストリーム
138 	 * @param encoding エンコーディング
139 	 * @param filter LHA エントリフィルタ
140 	 * @return 変換された区切り文字形式データのインスタンス
141 	 * @throws IOException 入出力エラーが発生した場合
142 	 * @since 1.2.1
143 	 */
144 	List<T> from(LhaInputStream in, String encoding, LhaEntryFilter filter) throws IOException;
145 
146 	/**
147 	 * 指定された LHA 入力ストリームからすべての LHA エントリを指定されたエンコーディングで読込み、
148 	 * 変換された区切り文字形式データのインスタンスを返します。
149 	 *
150 	 * @param in LHA 入力ストリーム
151 	 * @param encoding エンコーディング
152 	 * @return 変換された区切り文字形式データのインスタンス
153 	 * @throws IOException 入出力エラーが発生した場合
154 	 * @since 1.2.1
155 	 */
156 	List<T> from(LhaInputStream in, String encoding) throws IOException;
157 
158 	/**
159 	 * 指定された LHA 入力ストリームから指定されたフィルタの基準を満たす LHA エントリをプラットフォームのデフォルトエンコーディングで読込み、
160 	 * 変換された区切り文字形式データのインスタンスを返します。
161 	 *
162 	 * @param in LHA 入力ストリーム
163 	 * @param filter LHA エントリフィルタ
164 	 * @return 変換された区切り文字形式データのインスタンス
165 	 * @throws IOException 入出力エラーが発生した場合
166 	 */
167 	List<T> from(LhaInputStream in, LhaEntryFilter filter) throws IOException;
168 
169 	/**
170 	 * 指定された LHA 入力ストリームからすべての LHA エントリをプラットフォームのデフォルトエンコーディングで読込み、
171 	 * 変換された区切り文字形式データのインスタンスを返します。
172 	 *
173 	 * @param in LHA 入力ストリーム
174 	 * @return 変換された区切り文字形式データのインスタンス
175 	 * @throws IOException 入出力エラーが発生した場合
176 	 */
177 	List<T> from(LhaInputStream in) throws IOException;
178 
179 	/**
180 	 * 指定された LHA ファイルから指定されたフィルタの基準を満たす LHA エントリを指定されたエンコーディングで読込み、
181 	 * 変換された区切り文字形式データのインスタンスを返します。
182 	 *
183 	 * @param lhaFile LHA ファイル
184 	 * @param encoding エンコーディング
185 	 * @param filter LHA エントリフィルタ
186 	 * @return 変換された区切り文字形式データのインスタンス
187 	 * @throws IOException 入出力エラーが発生した場合
188 	 * @since 1.2.1
189 	 */
190 	List<T> from(LhaFile lhaFile, String encoding, LhaEntryFilter filter) throws IOException;
191 
192 	/**
193 	 * 指定された LHA ファイルから指定されたすべての LHA エントリを指定されたエンコーディングで読込み、
194 	 * 変換された区切り文字形式データのインスタンスを返します。
195 	 *
196 	 * @param lhaFile LHA ファイル
197 	 * @param encoding エンコーディング
198 	 * @return 変換された区切り文字形式データのインスタンス
199 	 * @throws IOException 入出力エラーが発生した場合
200 	 * @since 1.2.1
201 	 */
202 	List<T> from(LhaFile lhaFile, String encoding) throws IOException;
203 
204 	/**
205 	 * 指定された LHA ファイルから指定されたフィルタの基準を満たす LHA エントリをプラットフォームのデフォルトエンコーディングで読込み、
206 	 * 変換された区切り文字形式データのインスタンスを返します。
207 	 *
208 	 * @param lhaFile LHA ファイル
209 	 * @param filter LHA エントリフィルタ
210 	 * @return 変換された区切り文字形式データのインスタンス
211 	 * @throws IOException 入出力エラーが発生した場合
212 	 */
213 	List<T> from(LhaFile lhaFile, LhaEntryFilter filter) throws IOException;
214 
215 	/**
216 	 * 指定された LHA ファイルからすべての LHA エントリをプラットフォームのデフォルトエンコーディングで読込み、
217 	 * 変換された区切り文字形式データのインスタンスを返します。
218 	 *
219 	 * @param lhaFile LHA ファイル
220 	 * @return 変換された区切り文字形式データのインスタンス
221 	 * @throws IOException 入出力エラーが発生した場合
222 	 */
223 	List<T> from(LhaFile lhaFile) throws IOException;
224 
225 	/**
226 	 * 指定された ZIP 入力ストリームから指定されたフィルタの基準を満たす ZIP エントリを指定されたエンコーディングで読込み、
227 	 * 変換された区切り文字形式データのインスタンスを返します。
228 	 *
229 	 * @param in ZIP 入力ストリーム
230 	 * @param encoding エンコーディング
231 	 * @param filter ZIP エントリフィルタ
232 	 * @return 変換された区切り文字形式データのインスタンス
233 	 * @throws IOException 入出力エラーが発生した場合
234 	 * @since 1.2.1
235 	 */
236 	List<T> from(ZipInputStream in, String encoding, ZipEntryFilter filter) throws IOException;
237 
238 	/**
239 	 * 指定された ZIP 入力ストリームからすべての ZIP エントリを指定されたエンコーディングで読込み、
240 	 * 変換された区切り文字形式データのインスタンスを返します。
241 	 *
242 	 * @param in ZIP 入力ストリーム
243 	 * @param encoding エンコーディング
244 	 * @return 変換された区切り文字形式データのインスタンス
245 	 * @throws IOException 入出力エラーが発生した場合
246 	 * @since 1.2.1
247 	 */
248 	List<T> from(ZipInputStream in, String encoding) throws IOException;
249 
250 	/**
251 	 * 指定された ZIP 入力ストリームから指定されたフィルタの基準を満たす ZIP エントリをプラットフォームのデフォルトエンコーディングで読込み、
252 	 * 変換された区切り文字形式データのインスタンスを返します。
253 	 *
254 	 * @param in ZIP 入力ストリーム
255 	 * @param filter ZIP エントリフィルタ
256 	 * @return 変換された区切り文字形式データのインスタンス
257 	 * @throws IOException 入出力エラーが発生した場合
258 	 */
259 	List<T> from(ZipInputStream in, ZipEntryFilter filter) throws IOException;
260 
261 	/**
262 	 * 指定された ZIP 入力ストリームからすべての ZIP エントリをプラットフォームのデフォルトエンコーディングで読込み、
263 	 * 変換された区切り文字形式データのインスタンスを返します。
264 	 *
265 	 * @param in ZIP 入力ストリーム
266 	 * @return 変換された区切り文字形式データのインスタンス
267 	 * @throws IOException 入出力エラーが発生した場合
268 	 */
269 	List<T> from(ZipInputStream in) throws IOException;
270 
271 	/**
272 	 * 指定された ZIP ファイルから指定されたフィルタの基準を満たす ZIP エントリを指定されたエンコーディングで読込み、
273 	 * 変換された区切り文字形式データのインスタンスを返します。
274 	 *
275 	 * @param zipFile ZIP ファイル
276 	 * @param encoding エンコーディング
277 	 * @param filter ZIP エントリフィルタ
278 	 * @return 変換された区切り文字形式データのインスタンス
279 	 * @throws IOException 入出力エラーが発生した場合
280 	 * @since 1.2.1
281 	 */
282 	List<T> from(ZipFile zipFile, String encoding, ZipEntryFilter filter) throws IOException;
283 
284 	/**
285 	 * 指定された ZIP ファイルからすべての ZIP エントリを指定されたエンコーディングで読込み、
286 	 * 変換された区切り文字形式データのインスタンスを返します。
287 	 *
288 	 * @param zipFile ZIP ファイル
289 	 * @param encoding エンコーディング
290 	 * @return 変換された区切り文字形式データのインスタンス
291 	 * @throws IOException 入出力エラーが発生した場合
292 	 * @since 1.2.1
293 	 */
294 	List<T> from(ZipFile zipFile, String encoding) throws IOException;
295 
296 	/**
297 	 * 指定された ZIP ファイルから指定されたフィルタの基準を満たす ZIP エントリをプラットフォームのデフォルトエンコーディングで読込み、
298 	 * 変換された区切り文字形式データのインスタンスを返します。
299 	 *
300 	 * @param zipFile ZIP ファイル
301 	 * @param filter ZIP エントリフィルタ
302 	 * @return 変換された区切り文字形式データのインスタンス
303 	 * @throws IOException 入出力エラーが発生した場合
304 	 */
305 	List<T> from(ZipFile zipFile, ZipEntryFilter filter) throws IOException;
306 
307 	/**
308 	 * 指定された ZIP ファイルからすべての ZIP エントリをプラットフォームのデフォルトエンコーディングで読込み、
309 	 * 変換された区切り文字形式データのインスタンスを返します。
310 	 *
311 	 * @param zipFile ZIP ファイル
312 	 * @return 変換された区切り文字形式データのインスタンス
313 	 * @throws IOException 入出力エラーが発生した場合
314 	 */
315 	List<T> from(ZipFile zipFile) throws IOException;
316 
317 }