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
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
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
* 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