OSDN Git Service

46cfd521401cf24fef0e49d61f8b45d9131f4dc7
[jindolf/JinArchiver.git] / src / main / java / jp / sourceforge / jindolf / archiver / MultiPlexer.java
1 /*\r
2  * Multiplex Writer\r
3  *\r
4  * Copyright(c) 2008 olyutorskii\r
5  */\r
6 \r
7 package jp.sourceforge.jindolf.archiver;\r
8 \r
9 import java.io.IOException;\r
10 import java.io.Writer;\r
11 import java.util.Collections;\r
12 import java.util.LinkedList;\r
13 import java.util.List;\r
14 \r
15 /**\r
16  * Writerのマルチプレクサ。\r
17  */\r
18 public class MultiPlexer extends Writer{\r
19 \r
20     private final List<Writer> childs = new LinkedList<Writer>();\r
21 \r
22     /**\r
23      * コンストラクタ。\r
24      */\r
25     public MultiPlexer(){\r
26         this(null);\r
27         return;\r
28     }\r
29 \r
30     /**\r
31      * コンストラクタ。\r
32      * @param writer 初期Writer\r
33      */\r
34     public MultiPlexer(Writer writer){\r
35         super();\r
36 \r
37         if(writer != null){\r
38             this.childs.add(writer);\r
39         }\r
40 \r
41         return;\r
42     }\r
43 \r
44     /**\r
45      * Writerを追加する。\r
46      * @param writer 追加するWriter。nullなら無視。\r
47      */\r
48     public void addWriter(Writer writer){\r
49         if(writer == null) return;\r
50         this.childs.add(writer);\r
51         return;\r
52     }\r
53 \r
54     /**\r
55      * 出力するWriterの一覧を得る。\r
56      * @return Writer一覧。\r
57      */\r
58     public List<Writer> getWriterList(){\r
59         return Collections.unmodifiableList(this.childs);\r
60     }\r
61 \r
62     /**\r
63      * {@inheritDoc}\r
64      * @throws IOException {@inheritDoc}\r
65      */\r
66     @Override\r
67     public void close() throws IOException{\r
68         for(Writer writer : this.childs){\r
69             writer.close();\r
70         }\r
71         return;\r
72     }\r
73 \r
74     /**\r
75      * {@inheritDoc}\r
76      * @throws IOException {@inheritDoc}\r
77      */\r
78     @Override\r
79     public void flush() throws IOException{\r
80         for(Writer writer : this.childs){\r
81             writer.flush();\r
82         }\r
83         return;\r
84     }\r
85 \r
86     /**\r
87      * {@inheritDoc}\r
88      * @param cbuf {@inheritDoc}\r
89      * @param off {@inheritDoc}\r
90      * @param len {@inheritDoc}\r
91      * @throws IOException {@inheritDoc}\r
92      */\r
93     @Override\r
94     public void write(char[] cbuf, int off, int len) throws IOException{\r
95         for(Writer writer : this.childs){\r
96             writer.write(cbuf, off, len);\r
97         }\r
98         return;\r
99     }\r
100 \r
101     /**\r
102      * {@inheritDoc}\r
103      * @param csq {@inheritDoc}\r
104      * @return {@inheritDoc}\r
105      * @throws IOException {@inheritDoc}\r
106      */\r
107     @Override\r
108     public Writer append(CharSequence csq) throws IOException{\r
109         for(Writer writer : this.childs){\r
110             writer.append(csq);\r
111         }\r
112         return this;\r
113     }\r
114 \r
115     /**\r
116      * {@inheritDoc}\r
117      * @param csq {@inheritDoc}\r
118      * @param start {@inheritDoc}\r
119      * @param end {@inheritDoc}\r
120      * @return {@inheritDoc}\r
121      * @throws IOException {@inheritDoc}\r
122      */\r
123     @Override\r
124     public Writer append(CharSequence csq, int start, int end)\r
125             throws IOException{\r
126         for(Writer writer : this.childs){\r
127             writer.append(csq, start, end);\r
128         }\r
129         return this;\r
130     }\r
131 \r
132     /**\r
133      * {@inheritDoc}\r
134      * @param c {@inheritDoc}\r
135      * @return {@inheritDoc}\r
136      * @throws IOException {@inheritDoc}\r
137      */\r
138     @Override\r
139     public Writer append(char c) throws IOException{\r
140         for(Writer writer : this.childs){\r
141             writer.append(c);\r
142         }\r
143         return this;\r
144     }\r
145 \r
146     /**\r
147      * {@inheritDoc}\r
148      * @param c {@inheritDoc}\r
149      * @throws IOException {@inheritDoc}\r
150      */\r
151     @Override\r
152     public void write(int c) throws IOException{\r
153         for(Writer writer : this.childs){\r
154             writer.write(c);\r
155         }\r
156         return;\r
157     }\r
158 \r
159     /**\r
160      * {@inheritDoc}\r
161      * @param cbuf {@inheritDoc}\r
162      * @throws IOException {@inheritDoc}\r
163      */\r
164     @Override\r
165     public void write(char[] cbuf) throws IOException{\r
166         for(Writer writer : this.childs){\r
167             writer.write(cbuf);\r
168         }\r
169         return;\r
170     }\r
171 \r
172     /**\r
173      * {@inheritDoc}\r
174      * @param str {@inheritDoc}\r
175      * @throws IOException {@inheritDoc}\r
176      */\r
177     @Override\r
178     public void write(String str) throws IOException{\r
179         for(Writer writer : this.childs){\r
180             writer.write(str);\r
181         }\r
182         return;\r
183     }\r
184 \r
185     /**\r
186      * {@inheritDoc}\r
187      * @param str {@inheritDoc}\r
188      * @param off {@inheritDoc}\r
189      * @param len {@inheritDoc}\r
190      * @throws IOException {@inheritDoc}\r
191      */\r
192     @Override\r
193     public void write(String str, int off, int len) throws IOException{\r
194         for(Writer writer : this.childs){\r
195             writer.write(str, off, len);\r
196         }\r
197         return;\r
198     }\r
199 \r
200 }\r