KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jester > ReportItem


1 package jester;
2
3 import java.util.StringTokenizer JavaDoc;
4
5 public class ReportItem {
6     private String JavaDoc sourceFileName;
7     private IgnoreListDocument originalContents;
8     private int indexOfChange;
9     private String JavaDoc valueChangedFrom;
10     private String JavaDoc valueChangedTo;
11
12     public ReportItem(String JavaDoc sourceFileName, IgnoreListDocument originalContents, int indexOfChange, String JavaDoc valueChangedFrom, String JavaDoc valueChangedTo) {
13         super();
14         this.sourceFileName = sourceFileName;
15         this.originalContents = originalContents;
16         this.indexOfChange = indexOfChange;
17         this.valueChangedFrom = valueChangedFrom;
18         this.valueChangedTo = valueChangedTo;
19     }
20     public String JavaDoc toString() {
21         StringBuffer JavaDoc result = new StringBuffer JavaDoc();
22         result.append(sourceFileName + " - changed source on line " + lineNumber() + " (char index=" + indexOfChange + ") from " + valueChangedFrom + " to " + valueChangedTo + "\n");
23         int start = Math.max(0, indexOfChange - 30);
24         int end = Math.min(originalContents.length(), indexOfChange + 45);
25         result.append(originalContents.substring(start, indexOfChange));
26         result.append(">>>");
27         result.append(originalContents.substring(indexOfChange, end) + "\n");
28         return result.toString();
29     }
30
31     /*
32         * @return a negative integer, zero, or a positive integer as the
33         * first argument is less than, equal to, or greater than the
34         * second.
35     */

36     public int compareToReportItem(ReportItem other) {
37         int nameCompare = sourceFileName.compareTo(other.sourceFileName);
38         if (nameCompare == 0) {
39             return indexOfChange - other.indexOfChange;
40         }
41         return nameCompare;
42     }
43
44     public int lineNumber() {
45         if (indexOfChange == -1) {
46             return -1;
47         }
48         if (indexOfChange >= originalContents.length()) {
49             return -1;
50         }
51         StringTokenizer JavaDoc aLineBreaker = new StringTokenizer JavaDoc(originalContents.substring(0, indexOfChange), "\n", false);
52         int result = 0;
53         while (aLineBreaker.hasMoreTokens()) {
54             result++;
55             aLineBreaker.nextToken();
56         }
57         return result;
58     }
59
60     public String JavaDoc asXML() {
61         return "<ChangeThatDidNotCauseTestsToFail index=\"" + indexOfChange + "\" from=\"" + xmlEncoded(valueChangedFrom) + "\" to=\"" + xmlEncoded(valueChangedTo) + "\"/>";
62     }
63
64     private String JavaDoc xmlEncoded(String JavaDoc aString) {
65         StringBuffer JavaDoc result = new StringBuffer JavaDoc();
66         for (int i = 0; i < aString.length(); i++) {
67             char nextChar = aString.charAt(i);
68             switch (nextChar) {
69                 case '&' :
70                     result.append("&amp;");
71                     break;
72                 case '<' :
73                     result.append("&lt;");
74                     break;
75                 case '>' :
76                     result.append("&gt;");
77                     break;
78                 case '"' :
79                     result.append("&quot;");
80                     break;
81                 default :
82                     result.append(nextChar);
83             }
84         }
85         return result.toString();
86     }
87 }
Popular Tags