1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.doxia.sink.impl;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.io.OutputStream;
24 import java.io.OutputStreamWriter;
25 import java.io.Writer;
26 import java.util.Objects;
27
28 import org.apache.maven.doxia.sink.Sink;
29 import org.apache.maven.doxia.sink.SinkFactory;
30 import org.codehaus.plexus.util.WriterFactory;
31
32
33
34
35
36
37
38
39
40 public abstract class AbstractTextSinkFactory implements SinkFactory {
41
42
43
44
45
46
47
48 protected abstract Sink createSink(Writer writer, String encoding);
49
50
51 public Sink createSink(File outputDir, String outputName) throws IOException {
52 return createSink(outputDir, outputName, WriterFactory.UTF_8);
53 }
54
55
56 public Sink createSink(File outputDir, String outputName, String encoding) throws IOException {
57 Objects.requireNonNull(outputDir, "outputDir cannot be null");
58
59 if (!outputDir.exists()) {
60 outputDir.mkdirs();
61 } else {
62 if (!outputDir.isDirectory()) {
63 throw new IllegalArgumentException("The dir '" + outputDir + "' is not a directory.");
64 }
65 }
66
67 Writer writer = WriterFactory.newWriter(new File(outputDir, outputName), encoding);
68
69 return createSink(writer, encoding);
70 }
71
72
73 public Sink createSink(OutputStream out) throws IOException {
74 return createSink(out, WriterFactory.UTF_8);
75 }
76
77
78 public Sink createSink(OutputStream out, String encoding) throws IOException {
79 return createSink(new OutputStreamWriter(out, encoding), encoding);
80 }
81 }