OSDN Git Service

SearchStreamingの停止ができるように改良
authorU-nishio-PC8\nishio <spark_xp@users.sourceforge.jp>
Wed, 31 Aug 2011 19:40:10 +0000 (04:40 +0900)
committerU-nishio-PC8\nishio <spark_xp@users.sourceforge.jp>
Wed, 31 Aug 2011 19:40:10 +0000 (04:40 +0900)
src/twitter/manage/TweetSearchStream.java
src/twitter/manage/TweetUserStreamManager.java

index ea06aa9..3c1bd43 100644 (file)
@@ -6,6 +6,8 @@ import java.util.HashSet;
 import java.util.Map;\r
 import java.util.Set;\r
 \r
+import java.util.logging.Level;\r
+import java.util.logging.Logger;\r
 import twitter.action.streaming.TweetStreamingListener;\r
 import twitter4j.ConnectionLifeCycleListener;\r
 import twitter4j.DirectMessage;\r
@@ -46,6 +48,8 @@ public class TweetSearchStream extends StatusAdapter implements Runnable, Connec
        private Map<String, Long> lastUpdate = null;\r
        //指定したユーザの最終更新id\r
        private Map<Long, Long> userLastUpdate = null;\r
+       //streaming開始を行うかどうか\r
+       private boolean isStarted = false;\r
 \r
        /**\r
         *\r
@@ -67,6 +71,29 @@ public class TweetSearchStream extends StatusAdapter implements Runnable, Connec
                lastUpdate = new HashMap<String, Long>();\r
                userLastUpdate = new HashMap<Long, Long>();\r
        }\r
+       \r
+       /**\r
+        * \r
+        */\r
+       public void start() {\r
+           this.isStarted = true;\r
+           updateFilter();\r
+       }\r
+       \r
+       /**\r
+        * \r
+        */\r
+       public void stop() {\r
+           this.isStarted = false;\r
+           this.twitterStream.cleanUp();\r
+           if( this.statusStream != null ) {\r
+               try {\r
+                   this.statusStream.close();\r
+               } catch (IOException ex) {\r
+                   Logger.getLogger(TweetSearchStream.class.getName()).log(Level.SEVERE, null, ex);\r
+               }\r
+           }\r
+       }\r
 \r
        /**\r
         * 指定した単語を検索対象に加える\r
@@ -110,20 +137,22 @@ public class TweetSearchStream extends StatusAdapter implements Runnable, Connec
         * filterの更新\r
         */\r
        private void updateFilter() {\r
+           if( this.isStarted ) {\r
                //指定したユーザの情報を取得するようにする\r
                Long[] users = userListener.keySet().toArray(new Long[0]);\r
                if( users != null ) {\r
-                       long[] usersLong = new long[users.length];\r
-                       for(int i=0; i < users.length; i++) {\r
-                               usersLong[i] = users[i];\r
-                       }\r
-                       filter.follow(usersLong);\r
+                   long[] usersLong = new long[users.length];\r
+                   for(int i=0; i < users.length; i++) {\r
+                       usersLong[i] = users[i];\r
+                   }\r
+                   filter.follow(usersLong);\r
                }\r
                //指定したワードの情報を取得するようにする\r
                String[] words = listeners.keySet().toArray(new String[0]);\r
                filter.track(words);\r
                workingThread = new Thread(this);\r
                workingThread.start();\r
+           }\r
        }\r
 \r
        /**\r
index 484b177..775e288 100644 (file)
@@ -154,6 +154,7 @@ public class TweetUserStreamManager extends UserStreamAdapter {
                @Override\r
                public void run() {\r
                    userStream.start();\r
+                   searchStream.start();\r
                }\r
            };\r
            new Thread(runner).start();\r
@@ -167,6 +168,7 @@ public class TweetUserStreamManager extends UserStreamAdapter {
                @Override\r
                public void run() {\r
                    userStream.stop();\r
+                   searchStream.stop();\r
                }\r
            };\r
            new Thread(runner).start();\r