001 package org.shiftone.jrat.core.output;
002
003
004 import org.shiftone.jrat.util.log.Logger;
005
006 import java.io.PrintWriter;
007 import java.io.Writer;
008
009
010 /**
011 * @author jeff@shiftone.org (Jeff Drost)
012 */
013 public class FileOutputPrintWriter extends PrintWriter implements FileOutput {
014
015 private static final Logger LOG = Logger.getLogger(FileOutputPrintWriter.class);
016 private FileOutputRegistry registry;
017 private String name;
018 private boolean closed = false;
019
020 public FileOutputPrintWriter(FileOutputRegistry registry, Writer out, String name) {
021
022 super(out);
023
024 this.registry = registry;
025 this.name = name;
026 }
027
028
029 public synchronized void close() {
030
031 if (!closed) {
032 LOG.info("closing");
033
034 closed = true;
035
036 registry.remove(this);
037 super.flush();
038 super.close();
039 }
040 }
041
042
043 public String toString() {
044 return "PrintWriter[" + name + "]";
045 }
046 }