/*
 * $Id: IndexTermWordListTableModel.java,v 1.3 2006/02/26 12:24:58 akabane Exp $
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.koike.rss.tools.itb;

import javax.swing.table.AbstractTableModel;

import org.logical_paradox.koike.rss.tools.itb.search.QueryRecord;

/**
 * 検索結果一覧のテーブルモデル
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.3 $
 */
public class IndexTermWordListTableModel extends AbstractTableModel {
	/** シリアルバージョンUID */
	private static final long serialVersionUID = -1175407904204762200L;

	/** ヘッダ定義 */
	private static final String HEADER_LABELS[] = {"term", "docno", "locations"};

	/** 保持している1画面用の検索結果 */
	private QueryRecord[] searchResult;


	/**
	 * 項目数を返す．
	 * @return 項目数
	 */
	public int getColumnCount() {
		return HEADER_LABELS.length;
	}

	/**
	 * 現在のレコード数を返す．
	 * @return レコード数
	 */
	public int getRowCount() {
		return searchResult == null ? 0 : searchResult.length;
	}

	/**
	 * フィールド編集可否を返す．
	 * @param rowIndex 行番号
	 * @param columnIndex 項目番号
	 * @return false(常に編集不可)
	 */
	public boolean isCellEditable(int rowIndex, int columnIndex) {
		return false;
	}

	/**
	 * ヘッダの項目名を返す．
	 * @param columnIndex 項目番号
	 * @return 項目名
	 */
	public String getColumnName(int columnIndex) {
		return HEADER_LABELS[columnIndex];
	}

	/**
	 * レコード値を返す．
	 * @param rowIndex 行番号
	 * @param columnIndex 項目番号
	 * @return 結果
	 */
	public Object getValueAt(int rowIndex, int columnIndex) {
		if(searchResult == null || searchResult.length <= rowIndex) {
			return "";
		}
		QueryRecord r = searchResult[rowIndex];
		String rc = "";
		switch(columnIndex) {
			case 0:
				rc = r.getTerm();
				break;
			case 1:
				rc = r.getDocno();
				break;
			case 2:
				rc =r.getLocation();
				break;
			default:
				break;
		}

		return rc;
	}

	/**
	 * 検索結果(1画面分)を設定する．
	 * @param qrs 検索結果
	 */
	public void setResults(QueryRecord[] qrs) {
		searchResult = qrs;
	}
}
