001/*
002 * Copyright (c) 2005 Peter Palotas, Fredrik Johansson, Einar Pehrson,
003 * Sebastian Kekkonen, Lars Magnus Lang, Malin Johansson and Sofia Nilsson
004 *
005 * This file is part of
006 * CleanSheets Extension for Assertions
007 *
008 * CleanSheets Extension for Assertions is free software; you can
009 * redistribute it and/or modify it under the terms of the GNU General Public
010 * License as published by the Free Software Foundation; either version 2 of
011 * the License, or (at your option) any later version.
012 *
013 * CleanSheets Extension for Assertions is distributed in the hope that
014 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
015 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016 * See the GNU General Public License for more details.
017 *
018 * You should have received a copy of the GNU General Public License
019 * along with CleanSheets Extension for Assertions; if not, write to the
020 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
021 * Boston, MA  02111-1307  USA
022 */
023package csheets.ext.assertion;
024
025import java.io.Serializable;
026
027/** This class contains information about a warning in an assertion.
028        A warning denotes a possible inconsistency or incorrectens in
029        an assertion. Objects of this type are returned by <code>Assertion.getWarnings()</code>
030        @see Assertion
031        @author Peter Palotas
032*/
033public class AssertionWarning implements Serializable {
034
035        /** The unique version identifier used for serialization */
036        private static final long serialVersionUID = -390161028866493880L;
037
038        private Interval i1;
039        private Interval i2;
040        private Type type;
041
042        /** Denotes the type of a warning. See documentation for the constructor for more info. */
043        public enum Type {
044                INTERSECTING,
045                ENCLOSING,
046                EXCLUDING
047        };
048
049        /** Constructor.
050                @param type Either INTERSECTING meaning that i1 and i2 intersects,
051                        ENCLOSING meaning that i2 is completely enclosed by i1 or
052                        EXCLUDING meaning that i2 is completely excluded by i1.
053                @param i1 One of the intervals of the conflict.
054                @param i2 The other interval of the conflict.
055        */
056        public AssertionWarning(Type type, Interval i1, Interval i2) {
057                this.type = type;
058                this.i1 = i1;
059                this.i2 = i2;
060        }
061
062        /** Returns a message in english describing the conflict represented
063          *  by this warning.
064          */
065        public String toString() {
066
067                switch (type) {
068                        case INTERSECTING:
069                                return "Interval " + i1 + " intersects with " + i2;
070
071                        case ENCLOSING:
072                                return "Interval " + i2 + " completely encloses " + i1;
073
074                        case EXCLUDING:
075                                return "Interval " + i2 + " completely encloses " + i1;
076                }
077                return "Unknown conflict between the intervals " + i1 + " and " + i2;
078        }
079
080        /** Returns the type of this warning.
081           @return the type of this warning.
082        */
083        public Type getType() {
084                return type;
085        }
086
087        /** Returns the first interval involved in this warning.
088                @return the first interval involved in this warning. */
089        public Interval getI1() {
090                return i1;
091        }
092
093        /** Returns the second interval involved in this warning.
094                @return the second interval involved in this warning. */
095        public Interval getI2() {
096                return i2;
097        }
098}