package jp.ossc.petstore.common;

import jp.ossc.petstore.model.Product;

/**
 * カート内容クラス
 * @author ossc
 * @version $Revision: 1.2 $
 */
public class CartItem {

	/**
	 * 注文数上限値
	 */
	private static final int MAX_QUANTITY = 99;
	
	/**
	 * 商品情報
	 */
	private Product product;

	/**
	 * 注文数
	 */
	private int quantity;


	/**
	 * コンストラクタ
	 */
	private CartItem() {
	}

	/**
	 * コンストラクタ
	 * @param product 商品情報
	 * @param quantity 注文数
	 */
	public CartItem(Product product, int quantity) {
		this.product = product;
		this.quantity = quantity;
	}


	/**
	 * 商品情報取得
	 * @return product 商品情報
	 */
	public Product getProduct() {
		return product;
	}

	/**
	 * 商品情報設定
	 * @param product 商品情報
	 */
	public void setProduct(Product product) {
		this.product = product;
	}

	/**
	 * 商品ＩＤ取得
	 * @return id 商品ＩＤ
	 */
	public int getId() {
		return product.getId();
	}

	/**
	 * 商品名取得
	 * @return name 商品名
	 */
	public String getName() {
		return product.getName();
	}

	/**
	 * 商品金額取得
	 * @return price 商品金額
	 */
	public int getPrice() {
		return product.getPrice();
	}

	/**
	 * 注文数取得
	 * @return quantity 注文数
	 */
	public int getQuantity() {
		return quantity;
	}

	/**
	 * 注文数設定<br>
	 * 注文数上限値より大きな値が指定された場合、注文数上限値を設定する。
	 * @param quantity 注文数
	 */
	public void setQuantity(int quantity) {
		this.quantity = quantity > MAX_QUANTITY ? MAX_QUANTITY : quantity;
	}


	/**
	 * 合計金額取得
	 * @return 合計金額
	 */
	public int getTotalPrice() {
		return product.getPrice() * quantity;
	}
}
