package twitter; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.sql.SQLException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import db.DataBaseManager; import twitter4j.GeoLocation; import twitter4j.Query; import twitter4j.QueryResult; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.auth.AccessToken; import twitter4j.auth.RequestToken; public class TwitterActions { private static Twitter twitter; private static Query query = new Query(); static { twitter = new TwitterFactory(Util.conf).getInstance(); query.setCount(100); query.setLang("pt"); query.setResultType("recent"); query.setGeoCode(new GeoLocation(-10.184444, -48.333611), 10000, "km"); //Lat e Long de Pra�a dos Girassois, Palmas - Tocantins. } public static List<String> search(String toSearch) throws TwitterException { // The factory instance is re-useable and thread safe. List<String> stringList = new ArrayList<String>(); DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); Query query = new Query(toSearch); QueryResult result = twitter.search(query); stringList.add("======== Found: " + result.getTweets().size() + " tweets for key: " + toSearch + " ========"); System.out.println("======== Found: " + result.getTweets().size() + " tweets for key: " + toSearch + " ========"); for (Status tweets : result.getTweets()) { String time = formatter.format(tweets.getCreatedAt().getTime()); stringList.add(time + " - @" + tweets.getUser().getScreenName() + ":" + tweets.getText() + ". Location: " + tweets.getGeoLocation()); } return stringList; } public static void requestNewToken() throws IOException, TwitterException { Twitter twitter = TwitterFactory.getSingleton(); twitter.setOAuthConsumer("6S5z4JRsLlRCTxFQrEbtBA", "QAFSQK18WaYX9c1PepZj46O0lRGyajfgTb1wJAdvW0"); RequestToken requestToken = twitter.getOAuthRequestToken(); AccessToken accessToken = null; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while (null == accessToken) { System.out .println("Open the following URL and grant access to your account:"); System.out.println(requestToken.getAuthorizationURL()); System.out .print("Enter the PIN(if aviailable) or just hit enter.[PIN]:"); String pin = br.readLine(); try { if (pin.length() > 0) { accessToken = twitter .getOAuthAccessToken(requestToken, pin); } else { accessToken = twitter.getOAuthAccessToken(); } } catch (TwitterException te) { if (401 == te.getStatusCode()) { System.out.println("Unable to get the access token."); } else { te.printStackTrace(); } } } // persist to the accessToken for future reference. Util.storeAccessToken(twitter.verifyCredentials().getId(), accessToken); Status status = twitter.updateStatus("Creating New Auth"); System.out.println("Successfully updated the status to [" + status.getText() + "]."); } public static void querySearchToSQL(String word) throws TwitterException, SQLException { query.setQuery(word); QueryResult result = twitter.search(query); List<Status> tweets = result.getTweets(); // SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy h:mm a"); for (Status tweet : tweets) { String geloLoc = "NA"; if (tweet.getGeoLocation() != null) { geloLoc = "lat:"+tweet.getGeoLocation().getLatitude()+", long:"+tweet.getGeoLocation().getLongitude(); } DataBaseManager.insertTweet(tweet.getCreatedAt(), word,geloLoc,tweet.getText()); } } public static List<String> querySearchToString(String word) { query.setQuery(word); List<String> tweetsList = new ArrayList<String>(); try { QueryResult result = twitter.search(query); List<Status> tweets = result.getTweets(); System.out.println("**** Printing results for: " + word + " ****"); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy h:mm a"); for (Status tweet : tweets) { String date = sdf.format(tweet.getCreatedAt()); String usrName = tweet.getUser().getName(); // System.out.println(date+" - "+usrName+" - "+tweet.getText()); tweetsList .add(date + " - " + usrName + " - " + tweet.getText()); } tweetsList.add("**** Total: " + tweets.size() + " ****"); return tweetsList; } catch (TwitterException te) { System.out.println("Couldn't connect: " + te.getMessage()); } ; return tweetsList; } public static void postStatus(String postMessage) throws TwitterException { Status status = twitter.updateStatus(postMessage); System.out.println("Successfully updated the status to [" + status.getText() + "]."); } }