/*
 Copyright (C) 2007 Richard Gomes

 This source code is release under the BSD License.
 
 This file is part of JQuantLib, a free-software/open-source library
 for financial quantitative analysts and developers - http://jquantlib.org/

 JQuantLib is free software: you can redistribute it and/or modify it
 under the terms of the JQuantLib license.  You should have received a
 copy of the license along with this program; if not, please email
 . The license is also available online at
 .

 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 license for more details.
 
 JQuantLib is based on QuantLib. http://quantlib.org/
 When applicable, the original copyright notice follows this notice.
 */

/*
 Copyright (C) 2003 Ferdinando Ametrano
 Copyright (C) 2001, 2002, 2003 Sadruddin Rejeb
 Copyright (C) 2006 StatPro Italia srl

 This file is part of QuantLib, a free-software/open-source library
 for financial quantitative analysts and developers - http://quantlib.org/

 QuantLib is free software: you can redistribute it and/or modify it
 under the terms of the QuantLib license.  You should have received a
 copy of the license along with this program; if not, please email
 . The license is also available online at
 .

 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 license for more details.
*/

package org.jquantlib.exercise;

import java.util.ArrayList;
import java.util.List;

import org.jquantlib.lang.annotation.QualityAssurance;
import org.jquantlib.lang.annotation.QualityAssurance.Quality;
import org.jquantlib.lang.annotation.QualityAssurance.Version;
import org.jquantlib.time.Date;


/**
 * Abstract base class for exercise dates
 * 
 * @author Richard Gomes
 */
@QualityAssurance(quality = Quality.Q3_DOCUMENTATION, version = Version.V097, reviewers = { "Richard Gomes" })
public abstract class Exercise {

	//
	// protected fields
	//
	
    protected Exercise.Type type;
	protected final List dates;
	

	//
	// protected constructors
	//
	
	/**
	 * Constructs an exercise and defines the exercise type
	 * 
	 * @param type is the type of exercise
	 * 
	 * @see Exercise.Type
	 */
	protected Exercise(final Exercise.Type type) {
		this.type = type;
		this.dates = new ArrayList(5); // some reasonable prime number
	}

	
    //
    // public final methods
    //
    
	/**
	 * Returns the exercise type
	 * 
	 * @return the exercise type
	 * 
	 * @see Exercise.Type
	 */
	public final Exercise.Type type() {
		return type;
	}
	
	public List dates() {
		return dates;
	}
	public final int size() {
		return dates.size();
	}
	
	public final Date date(final int index) /* @ReadOnly */ {
		return (Date)dates.get(index);
	}
	
	public final Date lastDate() /* @ReadOnly */ {
		return date(dates.size()-1);
	}
	
    //
    // public static inner enums
    //
    
    /**
     * Defines the exercise type. It can be American, Bermudan or European
     * 
     * @author Richard Gomes
     */
    public static enum Type {
        American, Bermudan, European;
    }

}

 

Ads help maintain this website.