/**
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2004 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.kinako.form;

import org.apache.struts.validator.ValidatorForm;
import org.logical_paradox.kinako.object.SearchCondition;

/**
 * 検索フォーム
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.4 $
 */
public class SearchForm extends ValidatorForm {
	/** 画面から入力された検索語 */
	private String keyword;
	/** 検索結果(HTML) */
	private String result;
	/** 表示開始位置 */
	private int startIndex;
	/** 表示件数 */
	private int num;
	/** 検索結果件数 */
	private int hits;

	/**
	 * 検索キーワードを返す
	 * @return 検索キーワード
	 */
	public String getKeyword() {
		return keyword;
	}

	/**
	 * 検索キーワードを設定する
	 * @param string 検索キーワード
	 */
	public void setKeyword(String string) {
		keyword = string;
	}

	/**
	 * 検索結果(HTML)を返す
	 * @return 検索結果
	 */
	public String getResult() {
		return result;
	}

	/**
	 * 検索結果(HTML)を設定する
	 * @param string 検索結果
	 */
	public void setResult(String string) {
		result = string;
	}

	/**
	 * 表示件数を返す
	 * @return 表示件数
	 */
	public int getNum() {
		return num;
	}

	/**
	 * 表示開始位置を返す
	 * @return 表示開始位置
	 */
	public int getStartIndex() {
		return startIndex;
	}

	/**
	 * 表示件数を設定する
	 * @param i 表示件数
	 */
	public void setNum(int i) {
		num = i;
	}

	/**
	 * 表示開始位置を設定する
	 * @param i 表示開始位置
	 */
	public void setStartIndex(int i) {
		startIndex = i;
	}

	/**
	 * 現在表示中のページ番号を返す
	 * @return ページ番号
	 */
	public int getPage() {
		return 1 + getStartIndex() / getNum();
	}
	/**
	 * このフォームの内容を検索条件オブジェクトにコピーする
	 * @return 検索条件
	 */
	public SearchCondition bindToSearchCondition() {
		SearchCondition condition = new SearchCondition();

		// 検索キーワード
		condition.setKeyword(getKeyword());
		// 開始位置
		condition.setStartIndex(getStartIndex());
		// 終了位置
		condition.setEndIndex(getStartIndex() + getNum()-1);

		return condition;
	}
	/**
	 * 検索結果件数を返す
	 * @return 検索結果件数
	 */
	public int getHits() {
		return hits;
	}

	/**
	 * 検索結果件数を設定する
	 * @param i 検索結果件数
	 */
	public void setHits(int i) {
		hits = i;
	}

}
