package io.lumify.twitter; import io.lumify.core.bootstrap.InjectHelper; import io.lumify.core.cmdline.CommandLineBase; import io.lumify.core.config.Configuration; import io.lumify.core.util.LumifyLogger; import io.lumify.core.util.LumifyLoggerFactory; import org.apache.commons.cli.CommandLine; import twitter4j.TwitterException; /** * Main entry point for CLI application used for ingesting Twitter status data */ public final class TwitterDataIngestRunner extends CommandLineBase { private static final LumifyLogger LOGGER = LumifyLoggerFactory.getLogger(TwitterDataIngestRunner.class); private static final String CONSUMER_KEY = "twitter.consumerKey"; private static final String CONSUMER_SECRET = "twitter.consumerSecret"; private static final String TOKEN = "twitter.token"; private static final String TOKEN_SECRET = "twitter.tokenSecret"; private static final int SUCCESSFUL_EXIT = 0; private static final int FAILURE_EXIT = 0; public static void main(String[] args) throws Exception { final CommandLineBase cliRunner = new TwitterDataIngestRunner(); final int result = cliRunner.run(args); if( result != SUCCESSFUL_EXIT ) { System.exit(result); } } @Override protected int run(CommandLine cmd) { int exitCode = SUCCESSFUL_EXIT; final OAuthConfiguration authConfig = retrieveAuthConfig(); final TweetExtractor extractor = InjectHelper.getInstance(TweetExtractor.class); LOGGER.info("Running data ingestion"); final long startTime = System.currentTimeMillis(); try { extractor.initiateTweetProcessing(authConfig); LOGGER.info("Data ingestion completed in %d ms", System.currentTimeMillis() - startTime); } catch (final TwitterException e) { LOGGER.error("Error occurred during data ingestion", e); exitCode = FAILURE_EXIT; } return exitCode; } private OAuthConfiguration retrieveAuthConfig() { final Configuration appConfig = getConfiguration(); return new OAuthConfiguration( appConfig.get(CONSUMER_KEY, null), appConfig.get(CONSUMER_SECRET, null), appConfig.get(TOKEN, null), appConfig.get(TOKEN_SECRET, null)); } }