001: package org.tigris.scarab.util.build.l10nchecker;
002:
003: import java.text.MessageFormat;
004:
005: /* ================================================================
006: * Copyright (c) 2005 CollabNet. All rights reserved.
007: *
008: * Redistribution and use in source and binary forms, with or without
009: * modification, are permitted provided that the following conditions are
010: * met:
011: *
012: * 1. Redistributions of source code must retain the above copyright
013: * notice, this list of conditions and the following disclaimer.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright
016: * notice, this list of conditions and the following disclaimer in the
017: * documentation and/or other materials provided with the distribution.
018: *
019: * 3. The end-user documentation included with the redistribution, if
020: * any, must include the following acknowlegement: "This product includes
021: * software developed by Collab.Net <http://www.Collab.Net/>."
022: * Alternately, this acknowlegement may appear in the software itself, if
023: * and wherever such third-party acknowlegements normally appear.
024: *
025: * 4. The hosted project names must not be used to endorse or promote
026: * products derived from this software without prior written
027: * permission. For written permission, please contact info@collab.net.
028: *
029: * 5. Products derived from this software may not use the "Tigris" or
030: * "Scarab" names nor may "Tigris" or "Scarab" appear in their names without
031: * prior written permission of Collab.Net.
032: *
033: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
034: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
035: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
036: * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
037: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
038: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
039: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
040: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
041: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
042: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
043: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
044: *
045: * ====================================================================
046: *
047: * This software consists of voluntary contributions made by many
048: * individuals on behalf of Collab.Net.
049: */
050:
051: /**
052: * Class that represents an issue template
053: */
054: public abstract class L10nIssue {
055: /** ignore message (default) */
056: public final static int MESSAGE_IGNORE = -1;
057:
058: /** INFORMATIONAL message */
059: public final static int MESSAGE_INFO = 0;
060:
061: /** ERROR message */
062: public final static int MESSAGE_ERROR = 1;
063:
064: /** WARNING message */
065: public final static int MESSAGE_WARNING = 2;
066:
067: /**
068: * Utility function to perform a message translation for a specific issue
069: * @return The formatted string. In case the string cannot be formatted
070: * (i.e. MessageFormat.format () throws an exception), null is returned.
071: */
072: public String formatMessage() {
073: try {
074: String out = MessageFormat.format(getMessageTemplate(),
075: getParameters());
076: ;
077: return out;
078: } catch (IllegalArgumentException ex_iae) {
079: System.err.println("Error processing "
080: + getMessageTemplate() + ": "
081: + ex_iae.getLocalizedMessage());
082: }
083: return null;
084: }
085:
086: /**
087: * Return true in case the current issue is an error message
088: *
089: * @return true, if the underlying issue is an issue representing
090: * an error.
091: */
092: public final boolean isError() {
093: return MESSAGE_ERROR == getMessageType();
094: }
095:
096: /**
097: * Return true in case the current issue is a warning
098: *
099: * @return true, if the underlying issue is an issue representing
100: * a warning.
101: */
102: public final boolean isWarning() {
103: return MESSAGE_WARNING == getMessageType();
104: }
105:
106: /**
107: * Return true in case the current issue is an informational message
108: *
109: * @return true, if the underlying issue is an issue representing
110: * an information.
111: */
112: public final boolean isInfo() {
113: return MESSAGE_INFO == getMessageType();
114: }
115:
116: /**
117: * Return the message template that is used to display the error text.
118: *
119: * @return Returns the messageTemplate.
120: */
121: abstract public String getMessageTemplate();
122:
123: /**
124: * Get the parameters for a message
125: *
126: * @return the parameters. The parameters have to be an array
127: * representing objects.
128: */
129: abstract public Object[] getParameters();
130:
131: /**
132: * Return the message type for the current object. The message type
133: * is retrieved from the corresponding entry in
134: * {@link L10nIssueTemplates}
135: *
136: * @return Returns the messageType.
137: */
138: public final int getMessageType() {
139: return L10nIssueTemplates.getMessageType(this .getClass());
140: }
141:
142: /**
143: * Set the severity of the current message
144: *
145: * @param messageType The messageType to set.
146: */
147: public final void setMessageType(int messageType) {
148: L10nIssueTemplates.setMessageType(this.getClass(), messageType);
149: }
150: }
|