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

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.logical_paradox.rss.rcm.accessor.ContentsAccessor;

/**
 * RCMからコンテンツを取得するクライアントインターフェース．<br>
 * ContentsAccessorをリモート公開するためのラッパーみたいなもん
 * 
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.5 $
 */
public class ContentsFinderImpl extends UnicastRemoteObject implements ContentsFinder {
	/** ロガー */
	private static final Log log = LogFactory.getLog(ContentsFinderImpl.class);

	private final String name;
	private final ContentsAccessor accessor;

	/**
	 * コンストラクタ
	 * @param name コンテンツファインダーの名称
	 * @param a コンテンツアクセサ
	 * @throws RemoteException
	 */
	public ContentsFinderImpl(String n, ContentsAccessor a) throws RemoteException {
		super();
		name = n;
		accessor = a;
	}
	/**
	 * コンテンツにアクセスする
	 * @param url 取得するURL
	 * @return コンテンツの文字列表現(Unicode BigEndian)
	 * @throws RemoteException コンテンツの取得に失敗した
	 */
	public String getContents(String url) throws RemoteException {
		log.info("[" + url + "]のコンテンツが要求されました");
		return accessor.find(url);
	}
	/**
	 * コンテンツファインダーの名称を返す
	 * @return 名称
	 * @throws RemoteException 名称の取得に失敗した
	 */
	public String getName() throws RemoteException {
		return name;
	}

}
