OSDN Git Service

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