OSDN Git Service

指定したリストが購読できるように修正
authorspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Sun, 17 Oct 2010 13:56:04 +0000 (13:56 +0000)
committerspark_xp <spark_xp@d8c9ecd3-d47d-4367-8645-de82c00e513f>
Sun, 17 Oct 2010 13:56:04 +0000 (13:56 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/nt-manager/NishioTweetManager/trunk@102 d8c9ecd3-d47d-4367-8645-de82c00e513f

src/twitter/action/TweetListGetter.java [new file with mode: 0644]
src/twitter/gui/action/TweetMainAction.java
src/twitter/gui/form/UserListDialog.form
src/twitter/gui/form/UserListDialog.java
src/twitter/manage/TweetManager.java
src/twitter/task/TimerID.java
test/TestDriver.java

diff --git a/src/twitter/action/TweetListGetter.java b/src/twitter/action/TweetListGetter.java
new file mode 100644 (file)
index 0000000..bb79c1f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package twitter.action;
+
+import java.util.List;
+import twitter.manage.TweetManager;
+import twitter4j.Status;
+
+/**
+ *
+ * @author nishio
+ */
+public class TweetListGetter implements TweetGetter{
+    //tweet管理用
+    private TweetManager tweetManager;
+    //リストID
+    private int listID;
+    //ユーザ名
+    private String username = null;
+    //sinceID
+    private long sinceID;
+
+    /**
+     *
+     * @param tweetManager
+     * @param username ユーザ名
+     * @param listID リストのID
+     */
+    public TweetListGetter(TweetManager tweetManager, String username, int listID) {
+        this.tweetManager = tweetManager;
+        this.username = username;
+        this.listID = listID;
+    }
+
+    @Override
+    public List<Status> getTweetData(int num) {
+        List<Status> status = tweetManager.getUserListStatuses(username, listID, num);
+        if( status != null ) {
+            //一番最後のtweetのsinceIDを取得する
+            int lastnum = status.size();
+            if( lastnum > 0 ) {
+                sinceID = status.get(lastnum - 1).getId();
+            }
+        }
+        return status;
+    }
+
+    @Override
+    public List<Status> getNewTweetData() {
+        List<Status> status = tweetManager.getNewUserListStatuses(username, listID, sinceID);
+        if( status != null ) {
+            //一番最後のtweetのsinceIDを取得する
+            int lastnum = status.size();
+            if( lastnum > 0 ) {
+                sinceID = status.get(lastnum - 1).getId();
+            }
+        }
+        return status;
+    }
+
+}
index 55b7659..22fae1b 100644 (file)
@@ -46,6 +46,7 @@ import javax.swing.text.html.StyleSheet;
 import twitter.action.TweetDirectMessageGetter;
 import twitter.action.TweetFavoriteGetter;
 import twitter.action.TweetGetter;
+import twitter.action.TweetListGetter;
 import twitter.action.TweetMentionGetter;
 import twitter.action.TweetSearchResultGetter;
 import twitter.action.TweetSendDirectMessageGetter;
@@ -543,6 +544,27 @@ public class TweetMainAction {
         }
     }
 
+    /**
+     * 指定したリストをタブに追加
+     * @param username
+     * @param listID
+     * @param listFullname
+     * @param period
+     */
+    public void actionAddListTab(String username, int listID, String listFullname, int period) {
+        TimerID timerID = TimerID.getInstance();
+        String id = TimerID.createUserListID(username, listID);
+        try {
+            //既にIDが存在していたらここで例外発生
+            timerID.addID(id);
+            //検索結果を表示するタブを生成
+            actionAddTab(id, period, new TweetListGetter(tweetManager, username, listID), listFullname);
+        } catch (ExistTimerIDException ex) {
+            JOptionPane.showMessageDialog(null, "そのタブは既に存在しています",
+                    "Error", JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
 
     /**
      * ツイート検索結果を表示するタブを新しく追加
index 10a76fc..d324570 100644 (file)
@@ -70,6 +70,9 @@
       <Properties>
         <Property name="text" type="java.lang.String" value="OK"/>
       </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+      </Events>
     </Component>
     <Component class="javax.swing.JButton" name="jButton2">
       <Properties>
index 5df0a1c..d6a3cc6 100644 (file)
@@ -18,6 +18,7 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.List;
 import javax.swing.ImageIcon;
+import javax.swing.JOptionPane;
 import javax.swing.JTable;
 import javax.swing.table.TableColumn;
 import javax.swing.table.TableColumnModel;
@@ -185,6 +186,11 @@ public class UserListDialog extends javax.swing.JDialog {
         jScrollPane1.setViewportView(jTable1);
 
         jButton1.setText("OK");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
 
         jButton2.setText("キャンセル");
         jButton2.addActionListener(new java.awt.event.ActionListener() {
@@ -304,6 +310,29 @@ public class UserListDialog extends javax.swing.JDialog {
         this.dispose();
     }//GEN-LAST:event_jButton2ActionPerformed
 
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+        UserList info = getTweetTableInformation(jTable1, listTableModel);
+        if( info == null ) {
+            JOptionPane.showMessageDialog(null, "リストを選択してください",
+                    "Error", JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+        String listName = info.getName();
+        String userName = info.getUser().getScreenName();
+        int id = info.getId();
+        String fullName = info.getFullName();
+
+        if( listName == null || userName == null || fullName == null ) {
+            JOptionPane.showMessageDialog(null, "選択できないリストです",
+                    "Error", JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+        //TODO: 更新間隔をリスト毎に設定できるようにするべきか検討
+        this.mainAction.actionAddListTab(userName, id, fullName, this.mainAction.getGetTimelinePeriod());
+        //終了
+        this.dispose();
+    }//GEN-LAST:event_jButton1ActionPerformed
+
     // Variables declaration - do not modify//GEN-BEGIN:variables
     private javax.swing.JButton jButton1;
     private javax.swing.JButton jButton2;
index aa353a1..88bb56e 100644 (file)
@@ -840,10 +840,13 @@ public class TweetManager {
      * @return
      * @throws TwitterException
      */
-    public List<Status> getUserListStatuses(String userScreenName, int listID, int num)
-            throws TwitterException {
-        List<Status> tweetList = 
-                this.twitter.getUserListStatuses(userScreenName, listID, new Paging(1, num));
+    public List<Status> getUserListStatuses(String userScreenName, int listID, int num) {
+        List<Status> tweetList = null;
+        try {
+            tweetList = this.twitter.getUserListStatuses(userScreenName, listID, new Paging(1, num));
+        } catch (TwitterException ex) {
+            Logger.getLogger(TweetManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
         //tweet逆転
         if( tweetList != null && tweetList.size() > 0 ) {
             Collections.reverse(tweetList);
@@ -857,15 +860,17 @@ public class TweetManager {
      * @param listID リストID
      * @param sinceID
      * @return
-     * @throws TwitterException
      */
-    public List<Status> getNewUserListStatuses(String userScreenName, int listID, long sinceID)
-            throws TwitterException {
+    public List<Status> getNewUserListStatuses(String userScreenName, int listID, long sinceID) {
         if( sinceID == 0 ) {
             return getUserListStatuses(userScreenName, listID, MAX_TWEET_NUM);
         }
-        List<Status> tweetList = this.twitter.getUserListStatuses(
-                userScreenName, listID, new Paging(sinceID) );
+        List<Status> tweetList = null;
+        try {
+            tweetList = this.twitter.getUserListStatuses(userScreenName, listID, new Paging(sinceID));
+        } catch (TwitterException ex) {
+            Logger.getLogger(TweetManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
         //tweet逆転
         if( tweetList != null && tweetList.size() > 0 ) {
             Collections.reverse(tweetList);
index fe8418a..9cf3fc5 100644 (file)
@@ -127,4 +127,14 @@ public class TimerID {
     public static String createUserTimelineID(long userID) {
         return "USERTIMELINE:" + userID;
     }
+
+    /**
+     * リストID生成
+     * @param username
+     * @param listID
+     * @return
+     */
+    public static String createUserListID(String username, long listID) {
+        return "LIST:" + username + ":" + listID;
+    }
 }
index 61330c9..2712394 100644 (file)
@@ -97,12 +97,12 @@ public class TestDriver {
             }
             System.out.println("---");
             //List<Status> status = manager.getUserListStatuses("applegarden_01", 22406196, 99);
-            //List<Status> status = manager.getNewUserListStatuses("applegarden_01", 22406196, 27543444817L);
+            List<Status> status = manager.getNewUserListStatuses("nyou_a", 16152694, 0L);
             //List<Status> status = manager.getNewSearchResult(333L, "test");
-            /*for(Status s : status) {
+            for(Status s : status) {
                 System.out.println( s );
                 //System.out.println( s.getId() );
-            }*/
+            }
         /*} catch (TwitterException ex) {
             Logger.getLogger(TestDriver.class.getName()).log(Level.SEVERE, null, ex);
         }catch (FileNotFoundException ex) {