View Javadoc

1   /*
2    * Copyright (c) 2001-2004,
3    * RedVerst Group, ISP RAS http://www.ispras.ru
4    * All rights reserved.
5    *
6    * Redistribution and use in source and binary forms, with or without
7    * modification, are permitted provided that the following conditions are met:
8    *
9    * 1. Redistributions of source code must retain the above copyright notice, this
10   *    list of conditions and the following disclaimer.
11   *
12   * 2. Redistributions in binary form must reproduce the above copyright notice,
13   *    this list of conditions and the following disclaimer in the documentation
14   *    and/or other materials provided with the distribution.
15   *
16   * 3. The names "ATP", "TreeDL", "RedVerst", "ISP RAS"
17   *    may not be used to endorse or promote products derived from this software
18   *    without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
24   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
27   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30   */
31  
32  package com.unitesk.atp.text.filters;
33  
34  import java.io.IOException;
35  import java.io.Writer;
36  
37  /***
38   * {@link TextReceiver Text receiver} that prints text to {@link Writer}
39   *
40   * @author <A href="mailto:demakov@ispras.ru">Alexey Demakov</A>
41   * @version $Id: WriterTextReceiver.java,v 1.2 2004/10/11 15:00:42 all-x Exp $
42   */
43  public class WriterTextReceiver implements TextReceiver
44  {
45      /***
46       * Constructs text receiver with the specified Writer and {@link ExceptionHandler}.
47       *
48       * @param  writer  The client to write to.
49       * @param  exceptionHandler
50       *                 The exception handler.
51       */
52      public WriterTextReceiver( Writer writer
53                               , ExceptionHandler exceptionHandler
54                               )
55      {
56          this.writer = writer;
57          this.exceptionHandler = exceptionHandler;
58      }
59  
60      /***
61       * Close underlying {@link Writer}
62       */
63      public void close()
64      {
65          try
66          {
67              writer.close();
68          }
69          catch( IOException e )
70          {
71              exceptionHandler.process( e );
72          }
73      }
74  
75      //--------------------------------------------------------------------------
76      // interface TextReceiver
77  
78      /***
79       * Passes the specified string to the underlying {@link Writer}
80       *
81       * @param  s       The string to write.
82       */
83      public void txt( String s )
84      {
85          try
86          {
87              writer.write( s );
88          }
89          catch( IOException e )
90          {
91              exceptionHandler.process( e );
92          }
93      }
94  
95      /***
96       * Passes a line separator to underlying {@link Writer}
97       */
98      public void nl()
99      {
100         try
101         {
102             writer.write( endl );
103         }
104         catch( IOException e )
105         {
106             exceptionHandler.process( e );
107         }
108     }
109 
110     //--------------------------------------------------------------------------
111     // implementation
112 
113     private Writer writer;
114     private ExceptionHandler exceptionHandler;
115     private static final String endl = System.getProperty( "line.separator" );
116 }