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 }