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 }