はてなAPI for Java

id:Yoshiori さんの「Java API for Hatena」を参考に、グラフのデータを取得するクラスをとりあえずざくっと作ってみた(Log4Jがエラー吐いてるのはとりあえず無視・・・)

どうやらちゃんと取れてるみたい。あとはこれをグラフに書き出したりテーブルにしたりするのがいるかなー

Todo:
Map決めうちにしていいのか?根拠をどっかから取得する。
Memo:
ウェブのデータの値入力画面で”ひらがな”を入力すると値が”0.00”にFixUp。やっぱDouble決めうちか?

コード(一部抜粋)(HatenaGraphはデータ取得用メソッドがなかったので一部改変):

HatenaGraph graph = new HatenaGraph(id, pass);
InputStream in = graph.get("体重",HatenaGraph.GraphGetDataType.YAML);
for (Map<Date, Double> map : Yaml.loadStreamOfType(in,HashMap.class)) {
	for (Map.Entry<Date, Double> entry : map.entrySet()) {
		System.out.println("[k,v]:" + entry.getKey() + ","+ entry.getValue());
	}
}

データGet用メソッド

/**
 * グラフ名と取得したデータ形式の種類、およびユーザ名を指定してデータを取得します。
 * 
 * @param graphName グラフ名
 * @param type データ形式
 * @param dataUserName ユーザ名
 * @return データ
 */
public InputStream get(String graphName, GraphGetDataType type,
		String dataUserName) {
	HttpClient client = new HttpClient();
	GetMethod get = null;
	try {
		String query = "http://graph.hatena.ne.jp/api/data?graphname="
				+ URLEncoder.encode(graphName, "UTF-8") + "&username="
				+ URLEncoder.encode(dataUserName, "UTF-8") + "&type="
				+ URLEncoder.encode(type.toString(), "UTF-8");
		get = new GetMethod(query);
		get.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		System.out.println("user:" + this.userName + " pass:"+ this.passWord);
		System.out.println("query:" + query);
		get.addRequestHeader("X-WSSE", WSSE.getWsseHeaderValue(this.userName, this.passWord));
		int result = client.executeMethod(get);
		InputStream in = get.getResponseBodyAsStream();
		return in;
	} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
	} catch (HttpException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
	return null;
}

結果:

log4j:WARN No appenders could be found for logger (org.apache.commons.httpclient.HttpClient).
log4j:WARN Please initialize the log4j system properly.
query:http://graph.hatena.ne.jp/api/data?graphname=%E4%BD%93%E9%87%8D&username=sww&type=yaml
[k,v]:2007-10-23,68.0
[k,v]:2007-10-24,68.0
[k,v]:2007-10-25,69.1
[k,v]:2007-10-26,67.4
[k,v]:2007-10-27,67.6
[k,v]:2007-10-28,69.5
[k,v]:2007-10-29,69.1