001 // This file is part of the Attempto Java Packages. 002 // Copyright 2008-2009, 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 }