shokosブログ

プログラミング

twitterのTLを取得してはてなに投稿する計画その1.2

TLを表示して投稿していいか聞く部分
投稿しますか?って文字はhtmlのほうに書いたのだけど、
せっかくなのでLabel使えばよかった

あと70行くらいになってしまいました
可読性を考えると匿名クラスつかわないとか
TL取得部分をクラスわけするとかすればよかった

import java.io.IOException;
import java.util.List;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.PropertyModel;

import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;

public class GetTlPage extends WebPage {

	public GetTlPage(final Valuekeeper value) {
		Twitter twitter = new Twitter(value.getTwitterId(), value
				.getTwitterPassword());
		List<Status> tlList = null;
		try {
			tlList = twitter.getFriendsTimeline();
		} catch (TwitterException e) {
		}
		final StringBuilder tl = new StringBuilder();
		add(new ListView<Status>("tlList", tlList) {
			private static final long serialVersionUID = 1L;

			@Override
			protected void populateItem(ListItem<Status> item) {
				Status status = item.getModelObject();
				User user = status.getUser();
				item.add(new Label("screenName", new PropertyModel<User>(user,
						"screenName")));
				item.add(new Label("text", new PropertyModel<Status>(status,
						"text")));
				tl.append(user.getScreenName());
				tl.append(":" + status.getText() + "----");
			}
		});
		add(new Link<Void>("YesButton") {
			private static final long serialVersionUID = 1L;
			private String result;

			@Override
			public void onClick() {
				HatenaContribution hatena = new HatenaContribution(value, tl);
				try {
					hatena.contribute();
					result = "投稿しました";
				} catch (IOException e) {
					result = "投稿に失敗しました";
				}
				setResponsePage(new ResultPage(result));
			}
		});
		add(new Link<Void>("NoButton") {
			private static final long serialVersionUID = 1L;

			@Override
			public void onClick() {
				setResponsePage(new HomePage());
			}
		});
	}
}