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