001 package data;
002
003 /**
004 * Exception thrown when an error occurs on transferring money from one MoneyBag to another.
005 *
006 * @author Andreas Bartho
007 * @version 3.1
008 * @since v3.1
009 */
010 public class NotEnoughMoneyException extends RuntimeException {
011
012 /**
013 * ID for serialization.
014 */
015 private static final long serialVersionUID = 5720456316151476681L;
016
017 /**
018 * Indicates that this Exception was thrown because the money in the MoneyBag is less than
019 * the money to be removed.
020 */
021 public static final int NOT_ENOUGH_MONEY = 0;
022
023 /**
024 * Indicates that this Exception was thrown because it is not possible to sum up the
025 * available money to the amount to be removed.<br>
026 * <br>
027 * Example:<br>
028 * The MoneyBag contains:
029 * <ul>
030 * <li>5 coins of value 10 cents</li>
031 * <li>5 coins of value 2 cents</li>
032 * </ul>
033 * Trying to return 11 cents would cause that exception.
034 */
035 public static final int NO_FITTING_UNITS = 1;
036
037 private int iCause;
038
039 /**
040 * Creates a new NotEnoughMoneyException.
041 */
042 public NotEnoughMoneyException(int cause) {
043 super();
044 iCause = cause;
045 }
046
047 /**
048 * Creates a new NotEnoughMoneyException with a detail message.
049 *
050 * @param sDetail the detail message.
051 */
052 public NotEnoughMoneyException(String sDetail, int cause) {
053 super(sDetail);
054 iCause = cause;
055 }
056
057 /**
058 * Returns the cause for this exception. If there was not enough money, {@link #NOT_ENOUGH_MONEY} is
059 * returned. If there was no way to sum up the money with the coins/bank notes available,
060 * {@link #NO_FITTING_UNITS} is returned.
061 *
062 * @return the cause for this exception
063 */
064 public int cause() {
065 return iCause;
066 }
067 }