/**
 * <p>
 * Copyright © 2009-2010, Bruce-Robert Pocock
 * </p>
 * <p>
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or (at
 * your option) any later version.
 * </p>
 * <p>
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 * </p>
 * <p>
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 * </p>
 * 
 * @author brpocock
 */
package org.starhope.appius.except;

 import java.util.Date;

 /**
  * @author brpocock
  * 
  */
 public class AlreadyUsedException extends Exception {

	 /**
	  * 
	  */
	 private static final long serialVersionUID = 1L;
	 /**
	  * TODO: document this field (brpocock, Nov 5, 2009)
	  * 
	  * reason (AlreadyUsedException)
	  */
	 private final String reason;
	 /**
	  * TODO: document this field (brpocock, Nov 5, 2009)
	  * 
	  * when (AlreadyUsedException)
	  */
	 private final Date when;

	 /**
	  * @param reason1 WRITEME
	  * @param date WRITEME
	  */
	 public AlreadyUsedException (final String reason1, final Date date) {
		 reason = reason1;
		 if (null == date) {
			 when = new Date (0);
		 } else {
			 when = new Date (date.getTime ());
		 }
	 }

	 /**
	  * @return the reason
	  */
	 public String getReason () {
		 return reason;
	 }

	 /**
	  * @return the when
	  */
	 public Date getWhen () {
		 return new Date (when.getTime ());
	 }

	 /**
	  * @see java.lang.Throwable#toString()
	  */
	 @Override
	 public String toString () {
		 return getReason () + " (used " + getWhen () + ")";
	 }
 }
