1 package twitter.manage;
\r
3 import java.util.ArrayList;
\r
4 import java.util.logging.Logger;
\r
6 import twitter.action.streaming.TweetStreamingListener;
\r
7 import twitter4j.ConnectionLifeCycleListener;
\r
8 import twitter4j.DirectMessage;
\r
9 import twitter4j.Status;
\r
10 import twitter4j.TwitterStream;
\r
11 import twitter4j.TwitterStreamFactory;
\r
12 import twitter4j.User;
\r
13 import twitter4j.UserStreamAdapter;
\r
14 import twitter4j.auth.AccessToken;
\r
21 public class TweetUserStream extends UserStreamAdapter{
\r
23 private TwitterStream twitterStream = null;
\r
24 //timeline監視listener
\r
25 private TweetStreamingListener timelineListener = null;
\r
27 private TweetStreamingListener mentionListener = null;
\r
29 private TweetStreamingListener directMessageListener = null;
\r
31 private TweetNotifyManager mentionNotifyManager = null;
\r
33 private TweetNotifyManager directMessageNotifyManager = null;
\r
35 private TweetFavNotifyManager favNotifyManager = null;
\r
37 private String loginUsername = null;
\r
39 private TweetManager tweetManager = null;
\r
43 * @param consumerKey
\r
44 * @param consumerSecret
\r
45 * @param ac アクセストークン
\r
46 * @param tweetManager
\r
48 public TweetUserStream(String consumerKey, String consumerSecret, AccessToken ac, TweetManager tweetManager) {
\r
49 this.tweetManager = tweetManager;
\r
50 this.twitterStream = new TwitterStreamFactory().getInstance();
\r
51 this.twitterStream.setOAuthConsumer(consumerKey, consumerSecret);
\r
52 this.twitterStream.setOAuthAccessToken(ac);
\r
53 this.twitterStream.addListener(this);
\r
59 public void start() {
\r
60 this.twitterStream.user();
\r
66 public void stop() {
\r
67 this.twitterStream.cleanUp();
\r
71 * コネクションが接続されたときに呼び出される
\r
74 public void addConnectionLifeCycleListener(ConnectionLifeCycleListener listener) {
\r
75 this.twitterStream.addConnectionLifeCycleListener(listener);
\r
80 * @param timelineListener
\r
82 public void setTimelineListener(TweetStreamingListener timelineListener) {
\r
83 this.timelineListener = timelineListener;
\r
88 * @param mentionListener
\r
90 public void setMentionListener(TweetStreamingListener mentionListener) {
\r
91 this.mentionListener = mentionListener;
\r
92 loginUsername = tweetManager.getLoginUserScreenName();
\r
97 * @param notifyManager nullならmentionでは通知しない
\r
99 public void setMentionNotifyManager(TweetNotifyManager notifyManager) {
\r
100 this.mentionNotifyManager = notifyManager;
\r
106 public void setFavNotifyManager(TweetFavNotifyManager notifyManager) {
\r
107 this.favNotifyManager = notifyManager;
\r
111 * direct message通知バー
\r
112 * @param notifyManager
\r
114 public void setDirectMessageNotifyManager(TweetNotifyManager notifyManager) {
\r
115 this.directMessageNotifyManager = notifyManager;
\r
120 * @param directMessageListener
\r
122 public void setDirectMessageListener(TweetStreamingListener directMessageListener) {
\r
123 this.directMessageListener = directMessageListener;
\r
128 public void onStatus(Status status) {
\r
129 /*if( status.isRetweetedByMe() ) {
\r
130 System.out.println( status.getUser().getScreenName() + " Retweet my message");
\r
132 System.out.println("@" + status.getUser().getScreenName() + " - "
\r
133 + status.getText());*/
\r
136 if( this.timelineListener != null ) {
\r
137 this.timelineListener.update(status);
\r
138 this.tweetManager.setSinceTweetID(status.getId());
\r
141 if( this.mentionListener != null ) {
\r
142 if( loginUsername != null && status.getText().contains( loginUsername ) && !status.isRetweet() ) {
\r
143 this.mentionListener.update(status);
\r
144 this.tweetManager.setSinceMentionID(status.getId());
\r
146 if( mentionNotifyManager != null ) {
\r
147 mentionNotifyManager.showNotifyMessage( status );
\r
154 public void onException(Exception ex) {
\r
155 ex.printStackTrace();
\r
160 * @param directmessage
\r
163 public void onDirectMessage(DirectMessage directmessage) {
\r
164 if( this.directMessageListener != null ) {
\r
165 User user = directmessage.getSender();
\r
166 DirectMessageUserStatus status = new DirectMessageUserStatus(
\r
167 directmessage, user);
\r
168 this.directMessageListener.update(status);
\r
169 if( directMessageNotifyManager != null ) {
\r
170 directMessageNotifyManager.showNotifyMessage(status);
\r
179 * @param favoritedStatus
\r
182 public void onFavorite(User source, User target, Status favoritedStatus) {
\r
183 if( favNotifyManager != null ) {
\r
184 if( target.getScreenName().equals(this.loginUsername) ) {
\r
185 favNotifyManager.showNotifyMessage(source, target, favoritedStatus);
\r
191 public void onFriendList(long[] friendIds) {
\r
192 /*String tempString = "FriendIds(Up to 2000): \n";
\r
194 int count = friendIds.length;
\r
201 for (int i = 0; i < max; i++) {
\r
202 tempString += friendIds[i] + " ";
\r
204 System.out.println(tempString);
\r