Skip to main content
summaryrefslogtreecommitdiffstats
blob: a61e6d1f0468d6ed2c68f54bfa8b977941fd10eb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*******************************************************************************
 * Copyright (c) 2002-2003 IBM Corporation, Beacon Information Technology Inc. and others.
 * All rights reserved.   This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   IBM      - Initial API and implementation
 *   BeaconIT - Initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.wsi.internal.core.document.impl;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;

import org.eclipse.wst.wsi.internal.core.WSIException;
import org.eclipse.wst.wsi.internal.core.document.DocumentWriter;
import org.w3c.dom.Document;

/**
 * Defines the implementation used to write the Conformance XML 
 * documents.
 * 
 * @version 1.0.1
 * @author Peter Brittenham (peterbr@us.ibm.com)
 */
public abstract class DocumentWriterImpl implements DocumentWriter
{
  /**
   * Document writer.
   */
  protected Writer writer = null;

  /* (non-Javadoc)
   * @see org.wsi.test.document.DocumentWriter#getDocument()
   */
  public Document getDocument() throws UnsupportedOperationException
  {
    // ADD:
    return null;
  }

  /* (non-Javadoc)
   * @see org.wsi.test.document.DocumentWriter#setWriter(String)
   */
  public void setWriter(String documentLocation)
    throws UnsupportedEncodingException, FileNotFoundException
  {
    // I18N: 2003.02.26 modified by K.Nakagome@BeaconIT 
    this.writer =
      new PrintWriter(
        new OutputStreamWriter(
          new FileOutputStream(documentLocation),
          "UTF-8"));
  }

  /* (non-Javadoc)
   * @see org.wsi.test.document.DocumentWriter#write(Reader)
   */
  public synchronized void write(Reader reader)
    throws WSIException, IllegalStateException
  {
    // If the writer was not specified, then throw an exception
    if (writer == null)
      throw new IllegalStateException("Could not write document since writer was not set.");

    write(reader, writer);
  }

  /* (non-Javadoc)
   * @see org.wsi.test.document.DocumentWriter#write(Reader, Writer)
   */
  public synchronized void write(Reader reader, Writer writer)
    throws WSIException
  {
    // Create buffered reader
    BufferedReader bufReader = new BufferedReader(reader);

    // Create print writer
    PrintWriter printWriter = new PrintWriter(writer);

    String nextLine = null;

    try
    {
      // Read each line from the reader
      while ((nextLine = bufReader.readLine()) != null)
      {
        // Write text and flush stream
        printWriter.println(nextLine);
      }
    }

    catch (Exception e)
    {
      throw new WSIException("Could not write document.", e);
    }

    // Flush and close the writer
    printWriter.flush();
    //printWriter.close();    
  }

  /**
   * Close writer.
   */
  public void close() throws WSIException, IllegalStateException
  {
    // If the writer was not specified, then throw an exception
    if (writer == null)
      throw new IllegalStateException("Could not write log file since writer was not set.");

    try
    {
      // Close the writer
      writer.close();
    }

    catch (IOException ioe)
    {
      throw new WSIException(ioe.toString(), ioe);
    }
  }

}

Back to the top