Java tutorial
/** TwitStreet - Twitter Stock Market Game Copyright (C) 2012 Engin Guller (bisanthe@gmail.com), Cagdas Ozek (cagdasozek@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. **/ package com.twitstreet.twitter; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; import org.apache.log4j.Logger; import twitter4j.FilterQuery; import twitter4j.Status; import twitter4j.StatusDeletionNotice; import twitter4j.StatusListener; import twitter4j.Twitter; import twitter4j.TwitterStream; import twitter4j.TwitterStreamFactory; import twitter4j.auth.AccessToken; import com.google.inject.Inject; import com.google.inject.Singleton; import com.twitstreet.config.ConfigMgr; import com.twitstreet.db.data.Announcer; import com.twitstreet.market.StockMgr; import com.twitstreet.session.UserMgr; @Singleton public class FollowBackMgrImpl implements FollowBackMgr { private static final long FOLLOW_INTERVAL = 60 * 60 * 1000; private static Logger logger = Logger.getLogger(FollowBackMgrImpl.class); @Inject AnnouncerMgr announcerMgr; @Inject StockMgr stockMgr; @Inject UserMgr userMgr; @Inject ConfigMgr configMgr; @Inject TwitterProxyFactory twitterProxyFactory = null; TwitterProxy twitterProxy = null; Twitter twitter = null; Set<Long> idSet = new HashSet<Long>(); ArrayList<Long> validIdList = new ArrayList<Long>(); private static long lastFollow = 0; private static long lastFollowDiabloBird = 0; private static String[] FILTER_TERMS = new String[] { "i follow back" }; @Override public void start() { Announcer announcer = announcerMgr.randomAnnouncerData(); twitterProxy = twitterProxyFactory.create(announcer.getAccessToken(), announcer.getAccessTokenSecret()); TwitterStream twitterStream = new TwitterStreamFactory().getInstance(); twitterStream.setOAuthConsumer(announcer.getConsumerKey(), announcer.getConsumerSecret()); twitterStream .setOAuthAccessToken(new AccessToken(announcer.getAccessToken(), announcer.getAccessTokenSecret())); twitterStream.addListener(new StatusListener() { @Override public void onException(Exception arg0) { } @Override public void onTrackLimitationNotice(int arg0) { } @Override public void onStatus(Status status) { if (System.currentTimeMillis() - lastFollow > FOLLOW_INTERVAL) { twitter4j.User user = status.getUser(); announcerMgr.follow(user.getId()); lastFollow = System.currentTimeMillis(); } // if(System.currentTimeMillis() - lastFollowDiabloBird > FOLLOW_INTERVAL/6){ // twitter4j.User user = status.getUser(); // announcerMgr.followForDiabloBird(user.getId()); // lastFollowDiabloBird = System.currentTimeMillis(); // } } @Override public void onScrubGeo(long arg0, long arg1) { } @Override public void onDeletionNotice(StatusDeletionNotice arg0) { } }); FilterQuery filterQuery = new FilterQuery(); filterQuery.count(0); filterQuery.track(FILTER_TERMS); twitterStream.filter(filterQuery); } }