package jp.co.nri.rid.search;

import java.util.Hashtable;

/**
 * 文字列のリソースを、ハッシュテーブルで保持するクラス<BR>
 * キー: リソースの識別名。
 * 値: SPResource オブジェクト。
 */
public class SPResourceHash {
    /** SCCS ID */
    private static final String SCCSID = "@(#)SPResourceHash.java";

    /** RCS ID */
    private static final String RCSID =
	"$Id: SPResourceHash.java,v 1.11 2003-06-26 16:09:39+09 nsmr Exp $";

    /**
     * ラベル等の文字列に用いるリソースの定義。
     * リソース化に備えて外に出しておく。
     * {名前, 表示文字列, mnemonic} の順
     */
    private static final Object[][] RESOURCES = {
        {"changeColor", "change icon color"},
        {"chooseColor", "choose icon color"},
        {"deadLink", "リンク切れ", null},
        {"deepPage", "深いページ", null},
        {"depth", "深さ", null},
        {"pendingLink", "未設定リンク", null}, 
        {"saveCSV", "save CSV", null},
        {"DocumentUnit", "Document", null},
        {"PageUnit", "Page", null},
        {"ResourceUnit", "Resource", null},
        {"UrlUnit", "URL", null},
        {"ZoneUnit", "Zone", null}
    };

    private static Hashtable resourceHash = new Hashtable();


    static void init(){
	if (RESOURCES == null) {
	    return;
	}

	for (int i = 0; i < RESOURCES.length; i++) {
	    if (RESOURCES[i] == null) {
		continue;
	    }
	    if (RESOURCES[i].length <= 1) {
		continue;
	    }

	    SPResource r;
	    if (RESOURCES[i].length <= 2) {
		r = new SPResource(RESOURCES[i][1], null);
	    } else {
		r = new SPResource(RESOURCES[i][1], RESOURCES[i][2]);
	    }
	    resourceHash.put(RESOURCES[i][0], r);
	}
    }


    /**
     * ハッシュテーブルに格納されている SPResource オブジェクトを返す。
     * @param key リソースの識別名
     * @return SPResource オブジェクト
     */
    static SPResource get(String key){
	Object value = resourceHash.get(key);
	if(value == null) {
	    return null;
	}
	if (value instanceof SPResource) {
	    return (SPResource)value;
	}
	return null;
    } /* get */


    /**
     * ハッシュテーブルに格納されている SPResource インスタンスの displayStr
     * を返す。インスタンスが null の場合は "" を返す。
     * @param key リソースの識別名
     * @return SPResource インスタンスの displayStr
     */
    static String getString(String key){
	Object value = resourceHash.get(key);
	if(value == null) {
	    return "";
	}
	if (value instanceof SPResource) {
	    return ((SPResource)value).displayStr;
	}
	return "";
    } /* getString */
} /* class SPResourceHash */
