package featureextraction;

import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.User;
import twitter4j.conf.ConfigurationBuilder;


/**
 * Class that handles the feature extraction for tweets retrieved by Twitter API.
 * @author Boididou Christina
 *
 */
public class DatasetFeaturesExtractor {

	/**
	 * Creates the connection to Twitter API.
	 * @return Twitter object for the current connection
	 */
	public static Twitter connectToTwitterAPI() {

		ConfigurationBuilder cb = new ConfigurationBuilder();
		/*please fill in your credentials*/
		cb.setDebugEnabled(true).setOAuthConsumerKey("CONSUMER_KEY")
				.setOAuthConsumerSecret("CONSUMER_SECRET")
				.setOAuthAccessToken("ACCESS_TOKEN")
				.setOAuthAccessTokenSecret("ACCESS_TOKEN_SECRET");

		cb.setJSONStoreEnabled(true);

		TwitterFactory tf = new TwitterFactory(cb.build());
		Twitter twitter = tf.getInstance();

		return twitter;
	}

	/**
	 * Organizes the feature extraction
	 * @param tweetId
	 */
	public static void extractFeatures(String tweetId) {
		
		Twitter twitter = connectToTwitterAPI();
		
		Status status;
		try {
			status = twitter.showStatus(Long.parseLong(tweetId));
			TweetFeatureExtractor ife = new TweetFeatureExtractor();
			ife.extractTweetFeatures(status);
			
			User user = twitter.showUser(status.getUser().getId());
			UserFeatureExtractor ufe = new UserFeatureExtractor();
			ufe.extractUserFeatures(user);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
		
		
		
	}
	
	public static void main(String[] args) {

		String tweetId = "578401801818542080";
		extractFeatures(tweetId);
	}

}