diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/pdfas/impl/output')
-rw-r--r-- | src/main/java/at/gv/egiz/pdfas/impl/output/ByteArrayDataSink.java | 83 | ||||
-rw-r--r-- | src/main/java/at/gv/egiz/pdfas/impl/output/FileBasedDataSink.java | 126 |
2 files changed, 209 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/pdfas/impl/output/ByteArrayDataSink.java b/src/main/java/at/gv/egiz/pdfas/impl/output/ByteArrayDataSink.java new file mode 100644 index 0000000..f3d1283 --- /dev/null +++ b/src/main/java/at/gv/egiz/pdfas/impl/output/ByteArrayDataSink.java @@ -0,0 +1,83 @@ +/**
+ *
+ */
+package at.gv.egiz.pdfas.impl.output;
+
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.pdfas.framework.output.DataSink;
+import at.gv.egiz.pdfas.performance.PerformanceCounters;
+
+/**
+ * @author wprinz
+ *
+ */
+public class ByteArrayDataSink implements DataSink
+{
+ /**
+ * The log.
+ */
+ private static final Log log = LogFactory.getLog(ByteArrayDataSink.class);
+
+ protected String mimeType = null;
+ protected String characterEncoding = null;
+
+ protected ByteArrayOutputStream baos = null;
+
+
+ public ByteArrayDataSink()
+ {
+ PerformanceCounters.byteArrays.increment();
+ }
+
+ /**
+ * @see at.gv.egiz.pdfas.framework.output.DataSink#createOutputStream(java.lang.String)
+ */
+ public OutputStream createOutputStream(String mimeType)
+ {
+ return createOutputStream(mimeType, null);
+ }
+
+ /**
+ * @see at.gv.egiz.pdfas.framework.output.DataSink#createOutputStream(java.lang.String, java.lang.String)
+ */
+ public OutputStream createOutputStream(String mimeType, String characterEncoding)
+ {
+ if (this.baos != null)
+ {
+ log.warn("An output stream is created twice. The old one will be rendered useless.");
+ }
+ this.baos = new ByteArrayOutputStream(4096);
+ return this.baos;
+ }
+
+ /**
+ * Returns the byte array.
+ * @return Returns the byte array.
+ */
+ public byte [] getByteArray ()
+ {
+ return this.baos.toByteArray();
+ }
+
+ /**
+ * @return the mimeType
+ */
+ public String getMimeType()
+ {
+ return this.mimeType;
+ }
+
+ /**
+ * @return the characterEncoding
+ */
+ public String getCharacterEncoding()
+ {
+ return this.characterEncoding;
+ }
+
+}
diff --git a/src/main/java/at/gv/egiz/pdfas/impl/output/FileBasedDataSink.java b/src/main/java/at/gv/egiz/pdfas/impl/output/FileBasedDataSink.java new file mode 100644 index 0000000..4e1e3b7 --- /dev/null +++ b/src/main/java/at/gv/egiz/pdfas/impl/output/FileBasedDataSink.java @@ -0,0 +1,126 @@ +/**
+ *
+ */
+package at.gv.egiz.pdfas.impl.output;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import at.gv.egiz.pdfas.framework.output.DataSink;
+import at.gv.egiz.pdfas.impl.input.FileBased;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author wprinz
+ *
+ */
+public class FileBasedDataSink implements DataSink, FileBased
+{
+ /**
+ * The log.
+ */
+ private static final Log log = LogFactory.getLog(FileBasedDataSink.class);
+
+ protected String mimeType = null;
+ protected String characterEncoding = null;
+
+ /**
+ * The output file.
+ */
+ protected File outputFile = null;
+
+ /**
+ * Creates a file based PdfDataSink.
+ *
+ * @param file
+ * The file.
+ * @throws IOException
+ * F.e.
+ */
+ public FileBasedDataSink(File file) throws IOException
+ {
+ if (!file.exists())
+ {
+ file.createNewFile();
+ }
+ if (!file.isFile())
+ {
+ throw new IOException("The file '" + file + "' is not a normal file.");
+ }
+ if (!file.canWrite())
+ {
+ throw new IOException("The file '" + file + "' cannot be written.");
+ }
+
+ this.outputFile = file;
+ }
+
+ /**
+ * @see at.gv.egiz.pdfas.impl.input.FileBased#getFile()
+ */
+ public File getFile()
+ {
+ return this.outputFile;
+ }
+
+
+
+ protected OutputStream createOutputStream()
+ {
+ try
+ {
+ FileOutputStream fos = new FileOutputStream(getFile());
+ return fos;
+ }
+ catch (IOException e)
+ {
+ log.error("Couldn't create OutputStream for file " + getFile() + ". Returning null.");
+ log.error(e);
+
+ return null;
+
+ }
+ }
+
+ /**
+ * @see at.gv.egiz.pdfas.framework.output.DataSink#createOutputStream(java.lang.String)
+ */
+ public OutputStream createOutputStream(String mimeType)
+ {
+ return createOutputStream(mimeType, null);
+ }
+
+ /**
+ * @see at.gv.egiz.pdfas.framework.output.DataSink#createOutputStream(java.lang.String, java.lang.String)
+ */
+ public OutputStream createOutputStream(String mimeType, String characterEncoding)
+ {
+ this.mimeType = mimeType;
+ this.characterEncoding = characterEncoding;
+
+ return createOutputStream();
+ }
+
+ /**
+ * @return the mimeType
+ */
+ public String getMimeType()
+ {
+ return mimeType;
+ }
+
+ /**
+ * @return the characterEncoding
+ */
+ public String getCharacterEncoding()
+ {
+ return characterEncoding;
+ }
+
+
+
+}
|