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 }