001    package biweekly;
002    
003    /*
004     Copyright (c) 2013, Michael Angstadt
005     All rights reserved.
006    
007     Redistribution and use in source and binary forms, with or without
008     modification, are permitted provided that the following conditions are met: 
009    
010     1. Redistributions of source code must retain the above copyright notice, this
011     list of conditions and the following disclaimer. 
012     2. Redistributions in binary form must reproduce the above copyright notice,
013     this list of conditions and the following disclaimer in the documentation
014     and/or other materials provided with the distribution. 
015    
016     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
017     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
018     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
019     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
020     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
021     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
022     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
023     ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
024     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
025     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
026     */
027    
028    /**
029     * Represents a warning.
030     * @author Michael Angstadt
031     */
032    public class Warning {
033            private final Integer code;
034            private final String message;
035    
036            /**
037             * Creates a parser warning.
038             * @param code the message code
039             * @param args the message arguments
040             * @return the warning
041             */
042            public static Warning parse(int code, Object... args) {
043                    return new Warning(Messages.INSTANCE.getParseMessage(code, args), code);
044            }
045    
046            /**
047             * Creates a validation warning.
048             * @param code the message code
049             * @param args the message arguments
050             * @return the warning
051             */
052            public static Warning validate(int code, Object... args) {
053                    return new Warning(Messages.INSTANCE.getValidationWarning(code, args), code);
054            }
055    
056            /**
057             * Creates a new warning.
058             * @param message the warning message
059             */
060            public Warning(String message) {
061                    this(message, null);
062            }
063    
064            /**
065             * Creates a new warning.
066             * @param message the warning message
067             * @param code the message code
068             */
069            public Warning(String message, Integer code) {
070                    this.code = code;
071                    this.message = message;
072            }
073    
074            /**
075             * Gets the warning code.
076             * @return the warning code or null if no code was specified
077             */
078            public Integer getCode() {
079                    return code;
080            }
081    
082            /**
083             * Gets the warning message
084             * @return the warning message
085             */
086            public String getMessage() {
087                    return message;
088            }
089    
090            @Override
091            public String toString() {
092                    if (code == null) {
093                            return message;
094                    }
095                    return "(" + code + ") " + message;
096            }
097    }