001 // This file is part of the Attempto Java Packages.
002 // Copyright 2008, Attempto Group, University of Zurich (see http://attempto.ifi.uzh.ch).
003 //
004 // The Attempto Java Packages is free software: you can redistribute it and/or modify it under the
005 // terms of the GNU Lesser General Public License as published by the Free Software Foundation,
006 // either version 3 of the License, or (at your option) any later version.
007 //
008 // The Attempto Java Packages is distributed in the hope that it will be useful, but WITHOUT ANY
009 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
010 // PURPOSE. See the GNU Lesser General Public License for more details.
011 //
012 // You should have received a copy of the GNU Lesser General Public License along with the Attempto
013 // Java Packages. If not, see http://www.gnu.org/licenses/.
014
015 package ch.uzh.ifi.attempto.ape;
016
017 import org.jdom.Element;
018
019 /**
020 * This class represents a warning or error message of the ACE parser.
021 *
022 * @author Tobias Kuhn
023 * @author Kaarel Kaljurand
024 */
025 public class Message {
026
027 private boolean isError;
028 private String type, value, repair;
029 private Integer sentenceId, tokenId;
030
031 /**
032 * Creates a new Message object. All the relevant information for the
033 * message must be passed as arguments to this constructor.
034 *
035 * @param importance The importance of the message, e.g. "error", "warning"
036 * @param type The type of the message, e.g. "sentence", "token"
037 * @param sentenceId The number of the problematic sentence, or <code>null</code> if unknown
038 * @param tokenId The number of the problematic token, or <code>null</code> if unknown
039 * @param value The value of the message (e.g. a misspelled word)
040 * @param repair The description that helps to resolve the error or warning
041 */
042 public Message(String importance, String type, Integer sentenceId, Integer tokenId, String value, String repair) {
043 this.isError = importance.equals("error");
044 this.type = type;
045 this.sentenceId = sentenceId;
046 this.tokenId = tokenId;
047 this.value = value;
048 this.repair = repair;
049 }
050
051
052 Message(Element xmlElement) {
053 isError = (xmlElement.getAttribute("importance").getValue().equals("error"));
054 type = xmlElement.getAttribute("type").getValue();
055 value = xmlElement.getAttribute("value").getValue();
056 repair = xmlElement.getAttribute("repair").getValue();
057 try {
058 sentenceId = new Integer(xmlElement.getAttribute("sentence").getValue());
059 } catch (NumberFormatException ex) {}
060 try {
061 tokenId = new Integer(xmlElement.getAttribute("token").getValue());
062 } catch (NumberFormatException ex) {}
063 }
064
065 /**
066 * Returns true if this message is an error message, or false if it is only a warning
067 * message.
068 *
069 * @return true if this is an error message.
070 */
071 public boolean isError() {
072 return isError;
073 }
074
075 /**
076 * Returns the type of the error/warning message.
077 *
078 * @return The type of the message.
079 */
080 public String getType() {
081 return type;
082 }
083
084 /**
085 * Returns the sentence number that locates the reason for the error/warning message.
086 * In some cases, this can be null.
087 *
088 * @return The sentence number.
089 */
090 public Integer getSentenceId() {
091 return sentenceId;
092 }
093
094 /**
095 * Returns the token number that locates the reason for the error/warning message.
096 * In some cases, this can be null.
097 *
098 * @return The token number.
099 */
100 public Integer getTokenId() {
101 return tokenId;
102 }
103
104 /**
105 * Returns the value of the error/warning message. This is for example the word that
106 * caused the error or warning.
107 *
108 * @return The value of the message.
109 */
110 public String getValue() {
111 return value;
112 }
113
114 /**
115 * Returns an suggestion how to react on the error or warning.
116 *
117 * @return Suggestion how to react on the error/warning.
118 */
119 public String getRepair() {
120 return repair;
121 }
122
123 /**
124 * Returns a pretty-printed error/warning message.
125 */
126 public String toString() {
127 return (isError ? "ERROR: [" : "WARNING: [") + type + "] at " + (sentenceId == null ? "?" : sentenceId) + "-" + (tokenId == null ? "?" : tokenId) + ": '" + value + "'. " + repair;
128 }
129 }