package jp.ossc.petstore.peer.impl;

import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import jp.ossc.petstore.OpenstandiaConst;
import jp.ossc.petstore.peer.IPeer;
import jp.ossc.petstore.peer.impl.BasePeer;
import jp.ossc.petstore.dto.BaseDTO;
import jp.ossc.petstore.function.ICategoryFanction;
import jp.ossc.petstore.dto.peerdto.ShowCategoryPeerDTO;
import jp.ossc.petstore.dto.functiondto.CategoryFunctionDTO;

/**
 * カテゴリ表示peerクラス
 * @author ossc
 * @version $Revision: 1.2 $
 */
public class ShowCategoryPeer extends BasePeer implements IPeer {

	/**
	 * カテゴリファンクション
	 */
	private ICategoryFanction categoryFunction;
	
	/**
	 * カテゴリファンクション設定
	 * @param categoryFunction カテゴリファンクション
	 */
	public void setCategoryFunction(ICategoryFanction categoryFunction) {
		this.categoryFunction = categoryFunction;
	}


	/**
	 * カテゴリ表示業務処理実行<br>
     * カテゴリ情報リストを取得する。<br>
     * カテゴリ情報リストが取得できなかった場合はエラーメッセージを設定する。
	 * @param dto DTOオブジェクト
	 */
	public void execute(BaseDTO dto) {
		
		// dtoキャスト
		ShowCategoryPeerDTO showCategoryPeerDTO = (ShowCategoryPeerDTO)dto;
		
		// CategoryFunctionDTO生成
		CategoryFunctionDTO categoryFunctionDTO = new CategoryFunctionDTO();
		
		// カテゴリ一覧取得
		categoryFunction.getCategoryList(categoryFunctionDTO);
		
		// ステータスチェック
		if (categoryFunctionDTO.getStatus() == OpenstandiaConst.ENV_STATUS_DATA_NOT_FOUND) {
			
			// ステータス設定
			showCategoryPeerDTO.setStatus(categoryFunctionDTO.getStatus());
			
			// エラーメッセージ設定
			ActionMessage msg = new ActionMessage("errors.category_not_exist");
			ActionMessages msgs = new ActionMessages();
			msgs.add("ShowCategory", msg);
			showCategoryPeerDTO.setActionMessages(msgs);
		}
		
		// カテゴリ一覧設定
		showCategoryPeerDTO.setCategoryList(categoryFunctionDTO.getCategoryList());
	}


}
