OSDN Git Service

タブを閉じたときにStreamingAPIの更新もストップするようにした
[nt-manager/nt-manager.git] / src / twitter / action / TweetMentionGetter.java
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5
6 package twitter.action;
7
8 import java.awt.TrayIcon;
9 import java.util.List;
10 import java.util.logging.Level;
11 import java.util.logging.Logger;
12
13 import twitter.action.streaming.TweetStreamingListener;
14 import twitter.manage.TweetManager;
15 import twitter.manage.TweetNotifyManager;
16 import twitter4j.Status;
17 import twitter4j.TwitterException;
18
19 /**
20  * Mentionを取得するクラス
21  * @author nishio
22  */
23 public class TweetMentionGetter implements TweetGetter{
24
25     //tweet管理用
26     private TweetManager tweetManager;
27     //通知
28     private TweetNotifyManager notifyManager = null;
29     //1回目の最初の呼び出しかどうか, 1回目の呼び出しの際は通知バーにメッセージを表示しない
30     private boolean isFirstTime = true;
31
32     /**
33      *
34      * @param tweetManager
35      */
36     public TweetMentionGetter(TweetManager tweetManager) {
37         this.tweetManager = tweetManager;
38     }
39
40     /**
41      *
42      * @param tweetManager
43      * @param trayIcon タスクバーの通知用アイコン
44      */
45     public TweetMentionGetter(TweetManager tweetManager, TrayIcon trayIcon) {
46         this.tweetManager = tweetManager;
47         this.notifyManager = new TweetNotifyManager(trayIcon);
48     }
49
50     /**
51      * Mentionツイートを指定した数だけ取得
52      * @param num
53      * @return
54      */
55     @Override
56     public List<Status> getTweetData(int num) {
57         List<Status> status = null;
58         try {
59             status = tweetManager.getMentions(num);
60             if( notifyManager != null && isFirstTime == false) {
61                 this.notifyManager.showNotifyMessage(status);
62             }
63             isFirstTime = false;
64         } catch (TwitterException ex) {
65             Logger.getLogger(TweetMentionGetter.class.getName()).log(Level.SEVERE, null, ex);
66         }
67         return status;
68     }
69
70     /**
71      * Mentionツイートの新しく投稿されたものだけを取得
72      * @return
73      */
74     @Override
75     public List<Status> getNewTweetData() {
76         List<Status> status = null;
77         try {
78             status = tweetManager.getNewMentionData();
79             if( notifyManager != null && isFirstTime == false) {
80                 this.notifyManager.showNotifyMessage(status);
81             }
82             isFirstTime = false;
83         } catch (TwitterException ex) {
84             Logger.getLogger(TweetMentionGetter.class.getName()).log(Level.SEVERE, null, ex);
85         }
86         return status;
87     }
88
89     /**
90      * mention監視
91      */
92         @Override
93         public void setUpdateListener(TweetStreamingListener listener) {
94                 if( listener != null ) {
95                         this.tweetManager.getStreamManager().setMentionListener(listener, notifyManager);
96                 }
97         }
98
99         /**
100      * streaming api有効時のアップデートを受け取るlistenerを削除
101      */
102     public void stopUpdateListener() {
103         this.tweetManager.getStreamManager().stopMentionListener();
104     }
105
106 }