/*
 * $Revision: 1.9 $ $Date: 2005/12/25 23:36:16 $
 * Copyright (C) 2004-2005 SUGIMOTO Ken-ichi
 * 作成日: 2004/10/2
 */

package feat.v1;

import feat.v1.config.PreProcessDeclaration;


abstract public class PreProcess {

    private PreProcessDeclaration preProcessDeclaration;

    /**
     * コマンド実行の事前条件を満たしてるかどうかをチェック。
     * @param command
     * @param params
     * @param acc
     * @return 事前条件を満たさないときはfalse。
     * @throws Exception アプリケーションで起こった例外
     */
    abstract public boolean examine(Command command, String[] params, ContextAccessor acc) throws Exception;

    /**
     * このプリプロセスの宣言を返す。
     * @return FeatureDeclaration
     */
    public PreProcessDeclaration getPreProcessDeclaration() {
        return preProcessDeclaration;
    }
    void setPreProcessDeclaration(PreProcessDeclaration preProcessDeclaration) {
        this.preProcessDeclaration = preProcessDeclaration;
    }

    /**
     * このプリプロセスが宣言されたFeatureのリソースを検索する。
     * ロケールは現在のコンテキストでもっとも適切な値が採用される。
     * @param name
     * @param acc
     * @return
     */
    public String getStringResource(String name, ContextAccessor acc) {
        return acc.getStringResource(preProcessDeclaration.getFeatureDeclaration(), name);
    }

}
