1 /*
2 * Copyright (C) 2019 sw4j.org
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 package org.sw4j.tool.barcode.random.codedata;
18
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.io.OutputStream;
22 import org.sw4j.tool.barcode.random.config.CodeType;
23 import org.sw4j.tool.barcode.random.config.EncodingConfig;
24
25 /**
26 * <p>
27 * This interface is an abstraction for the application to be able to read different input and output formats (e.g.
28 * streams from a file or from other transports like HTTP).
29 * </p>
30 * @author Uwe Plonus <u.plonus@gmail.com>
31 */
32 public interface CodeData {
33
34 /**
35 * <p>
36 * Returns an input stream for reading the source data.
37 * </p>
38 * @return an {@code InputStream} for reading the input data.
39 * @throws IOException if the creation of the {@code InputStream} fails.
40 */
41 InputStream getInput() throws IOException;
42
43 /**
44 * <p>
45 * Returns an output stream for writing the output csv data.
46 * </p>
47 * @return an {@code OutputStream} for writing the output csv data.
48 * @throws IOException if the creation of the {@code OutputStream} fails.
49 */
50 OutputStream getOutput() throws IOException;
51
52 /**
53 * <p>
54 * Returns an individual output stream for writing the barcode for the given identifier and format.
55 * </p>
56 * @param type the type of the code to write.
57 * @param format the format of the random number (e.g. hex)
58 * @param ident the identifier from the input file.
59 * @param suffix the suffix of the file.
60 * @return an {@code OutputStream} for writing the individual barcode.
61 * @throws IOException if the creation of the {@code OutputStream} fails.
62 */
63 OutputStream getOutputForIdent(CodeType type, EncodingConfig format, String ident, String suffix) throws IOException;
64
65 }