1   package org.w3c.tidy;
2   
3   import java.util.ArrayList;
4   import java.util.Iterator;
5   import java.util.List;
6   
7   
8   /**
9    * @author fgiust
10   * @version $Revision: 779 $ ($Author: fgiust $)
11   */
12  public class TestMessageListener implements TidyMessageListener
13  {
14  
15      /**
16       * filename.
17       */
18      private String filename;
19  
20      /**
21       * Contains all the received TidyMessages.
22       */
23      private List received = new ArrayList();
24  
25      /**
26       * Instantiate a new messag listener for the given test file.
27       * @param filename actual test case name
28       */
29      public TestMessageListener(String filename)
30      {
31          this.filename = filename;
32      }
33  
34      /**
35       * @see org.w3c.tidy.TidyMessageListener#messageReceived(org.w3c.tidy.TidyMessage)
36       */
37      public void messageReceived(TidyMessage message)
38      {
39          received.add(message);
40      }
41  
42      /**
43       * Write received messages as xml.
44       * @return xml containing message details.
45       */
46      public String messagesToXml()
47      {
48          StringBuffer buffer = new StringBuffer();
49  
50          buffer.append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
51          buffer.append("<!-- expected messages for test ");
52          buffer.append(this.filename);
53          buffer.append("-->\n");
54  
55          buffer.append("<messages>\n");
56          Iterator iterator = received.iterator();
57          while (iterator.hasNext())
58          {
59              TidyMessage msg = (TidyMessage) iterator.next();
60              buffer.append("  <message>\n");
61  
62              buffer.append("    <code>");
63              buffer.append(msg.getErrorCode());
64              buffer.append("</code>\n");
65  
66              buffer.append("    <level>");
67              buffer.append(msg.getLevel().getCode());
68              buffer.append("</level>\n");
69  
70              buffer.append("    <line>");
71              buffer.append(msg.getLine());
72              buffer.append("</line>\n");
73  
74              buffer.append("    <column>");
75              buffer.append(msg.getColumn());
76              buffer.append("</column>\n");
77  
78              buffer.append("    <text><![CDATA[");
79              buffer.append(msg.getMessage());
80              buffer.append("]]></text>\n");
81  
82              buffer.append("  </message>\n");
83          }
84  
85          buffer.append("</messages>\n");
86  
87          return buffer.toString();
88      }
89  
90      /**
91       * Getter for <code>filename</code>.
92       * @return Returns the filename.
93       */
94      protected String getFilename()
95      {
96          return this.filename;
97      }
98  
99      /**
100      * Returns the list of received messages.
101      * @return Returns the received messages.
102      */
103     public List getReceived()
104     {
105         return this.received;
106     }
107 
108 }