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}