From: spark_xp Date: Sun, 17 Oct 2010 13:56:04 +0000 (+0000) Subject: 指定したリストが購読できるように修正 X-Git-Tag: v0.6~104 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=0a9dd597ab397429968a9f9bdf75389b6d6f154b;p=nt-manager%2Fnt-manager.git 指定したリストが購読できるように修正 git-svn-id: http://svn.sourceforge.jp/svnroot/nt-manager/NishioTweetManager/trunk@102 d8c9ecd3-d47d-4367-8645-de82c00e513f --- diff --git a/src/twitter/action/TweetListGetter.java b/src/twitter/action/TweetListGetter.java new file mode 100644 index 0000000..bb79c1f --- /dev/null +++ b/src/twitter/action/TweetListGetter.java @@ -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 getTweetData(int num) { + List 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 getNewTweetData() { + List 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; + } + +} diff --git a/src/twitter/gui/action/TweetMainAction.java b/src/twitter/gui/action/TweetMainAction.java index 55b7659..22fae1b 100644 --- a/src/twitter/gui/action/TweetMainAction.java +++ b/src/twitter/gui/action/TweetMainAction.java @@ -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); + } + } + /** * ツイート検索結果を表示するタブを新しく追加 diff --git a/src/twitter/gui/form/UserListDialog.form b/src/twitter/gui/form/UserListDialog.form index 10a76fc..d324570 100644 --- a/src/twitter/gui/form/UserListDialog.form +++ b/src/twitter/gui/form/UserListDialog.form @@ -70,6 +70,9 @@ + + + diff --git a/src/twitter/gui/form/UserListDialog.java b/src/twitter/gui/form/UserListDialog.java index 5df0a1c..d6a3cc6 100644 --- a/src/twitter/gui/form/UserListDialog.java +++ b/src/twitter/gui/form/UserListDialog.java @@ -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; diff --git a/src/twitter/manage/TweetManager.java b/src/twitter/manage/TweetManager.java index aa353a1..88bb56e 100644 --- a/src/twitter/manage/TweetManager.java +++ b/src/twitter/manage/TweetManager.java @@ -840,10 +840,13 @@ public class TweetManager { * @return * @throws TwitterException */ - public List getUserListStatuses(String userScreenName, int listID, int num) - throws TwitterException { - List tweetList = - this.twitter.getUserListStatuses(userScreenName, listID, new Paging(1, num)); + public List getUserListStatuses(String userScreenName, int listID, int num) { + List 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 getNewUserListStatuses(String userScreenName, int listID, long sinceID) - throws TwitterException { + public List getNewUserListStatuses(String userScreenName, int listID, long sinceID) { if( sinceID == 0 ) { return getUserListStatuses(userScreenName, listID, MAX_TWEET_NUM); } - List tweetList = this.twitter.getUserListStatuses( - userScreenName, listID, new Paging(sinceID) ); + List 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); diff --git a/src/twitter/task/TimerID.java b/src/twitter/task/TimerID.java index fe8418a..9cf3fc5 100644 --- a/src/twitter/task/TimerID.java +++ b/src/twitter/task/TimerID.java @@ -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; + } } diff --git a/test/TestDriver.java b/test/TestDriver.java index 61330c9..2712394 100644 --- a/test/TestDriver.java +++ b/test/TestDriver.java @@ -97,12 +97,12 @@ public class TestDriver { } System.out.println("---"); //List status = manager.getUserListStatuses("applegarden_01", 22406196, 99); - //List status = manager.getNewUserListStatuses("applegarden_01", 22406196, 27543444817L); + List status = manager.getNewUserListStatuses("nyou_a", 16152694, 0L); //List 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) {