package org.logical_paradox.rss.test.rcmax;

import org.logical_paradox.rss.dsr.RSSDistributedServiceRegistry;
import org.logical_paradox.rss.lookup.LookupFactory;
import org.logical_paradox.rss.rcm.ContentsFinder;
import org.logical_paradox.rss.rcm.RSSContentsMngrService;

/**
 * DSRからRCMを探して，指定されたURLのコンテンツを取得するクライアント
 * 取得されるコンテンツはUnicode BigEndianで格納されているはずなので，
 * Shift_JISに変換して画面へ出力する
 * 
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public class RemoteContentsAccessorTest {
	private final RSSContentsMngrService rcm;
	private final ContentsFinder finder;

	/**
	 * コンストラクタ
	 * @param dsr
	 */
	public RemoteContentsAccessorTest(String dsruri) throws Exception {
		// 広域分散リソースネットワークからコンテンツファインダーを取得する
		rcm = (RSSContentsMngrService)LookupFactory.getLookup(dsruri).lookup(RSSDistributedServiceRegistry.RSS_SERVID_REMOTE_CONTENTS_MGR);
		finder = rcm.getFinder();
	}
	/**
	 * リモートコンテンツ管理システムに接続して，指定URLに対応するコンテンツを取得する
	 * @param url 検索するURL
	 * @return Shift_JIS変換されたコンテンツデータ
	 * @throws Exception コンテンツデータの取得に失敗した
	 */
	public String find(String url) throws Exception {
		return finder.getContents(url);
	}
	/**
	 * メインメソッド
	 * @param args 引数
	 * @throws Exception キャッチされなかった例外
	 */
	public static void main(String[] args) throws Exception {
		if(args == null || args.length < 2) {
			// 引数が足りない
			System.out.println("usage: java -cp bin org.logical_paradox.rss.test.rcmax.RemoteContentsAccessorTest <dsr uri> <url>");
			System.exit(1);
		}
		
		RemoteContentsAccessorTest rcmax = new RemoteContentsAccessorTest(args[0]);
		String contents = rcmax.find(args[1]);
		if(contents == null) {
			System.out.println("コンテンツがありませんでした");
		} else {
			System.out.println(contents);
		}

		System.out.println("-------------");
		System.out.println("done.");
	}
}
