TwitterPage.java
package org.ferris.tweial.console.twitter;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Set;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.validation.ConstraintViolation;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.log4j.Logger;
import org.ferris.tweial.console.io.Console;
import org.ferris.tweial.console.text.i18n.LocalizedString;
import org.ferris.tweial.console.text.i18n.LocalizedStringKey;
import org.ferris.tweial.console.view.page.AbstractPage;
import org.jboss.weld.experimental.Priority;
import twitter4j.HashtagEntity;
import twitter4j.MediaEntity;
import twitter4j.Status;
import twitter4j.URLEntity;
import twitter4j.UserMentionEntity;
/**
* This is the consoles view for Twitter related information.
*
* @author Michael Remijan mjremijan@yahoo.com @mjremijan
*/
public class TwitterPage extends AbstractPage {
@Inject
protected Console console;
@Inject
protected Logger log;
@Inject
@LocalizedStringKey("TwitterPage.DataSourceMissing")
protected LocalizedString dataSourceMissing;
@Inject
@LocalizedStringKey("TwitterPage.AuthDataMissing")
protected LocalizedString authDataMissing;
@Inject
@LocalizedStringKey("TwitterPage.Heading")
protected LocalizedString heading;
public void viewDataSourceMissing(String description) {
log.info("Twitter configuration file is missing");
console.h1(heading);
console.p(dataSourceMissing, description);
}
public void viewTwitterAccountMissing(Set<ConstraintViolation<TwitterAccount>> violations) {
log.info("Twitter auth data is missing");
console.h1(heading);
console.p(authDataMissing);
console.print(violations);
}
/**
* Print the tweets
*
* @param event This method uses {@link TweetRetrievalEvent#getTweetsFromTwitter() }
* and prints the tweets using a {@link Logger}
*/
protected void printTweets(
@Observes @Priority(TweetRetrievalPriority.PRINT_TWEETS_FROM_TWITTER)
TweetRetrievalEvent event
){
List<Status> tweetsFromTwitter = event.getTweetsFromTwitter();
for (Status s : tweetsFromTwitter) {
log.info("======================================================================================");
// is retweet?
if (s.isRetweet()) {
String name = s.getUser().getName();
log.info(String.format("%s retweeted\n", name));
s = s.getRetweetedStatus();
}
// Profile image
String profileImageUrl = s.getUser().getProfileImageURL();
log.info(String.format("profileImageUrl=\"%s\"",profileImageUrl));
// Name
String name = s.getUser().getName();
log.info(String.format("user name=\"%s\"",name));
// Screen name
String screenName = s.getUser().getScreenName();
log.info(String.format("user screenname=\"%s\"",screenName));
// Time since tweet
SimpleDateFormat sdf = new SimpleDateFormat("(EEE, dd MMM yyyy, hh:mm:ss a)");
log.info(String.format("created at = \"%s\"", sdf.format(s.getCreatedAt())));
// Text
log.info(String.format("TEXT =%n%s",s.getText()));
// Hashtags
// https://twitter.com/search?q=%23UnlimitedScreaming
HashtagEntity[] hashtagEntities = s.getHashtagEntities();
if (hashtagEntities != null) {
log.info("[HASHTAGS]");
for (HashtagEntity entity : hashtagEntities) {
log.info(ToStringBuilder.reflectionToString(entity));
}
}
// User mentions
UserMentionEntity[] userMentionEntities = s.getUserMentionEntities();
if (userMentionEntities != null) {
log.info("[USER MENTIONS]");
for (UserMentionEntity entity : userMentionEntities) {
log.info(ToStringBuilder.reflectionToString(entity));
}
}
// URL Entities
URLEntity[] urlEntities = s.getURLEntities();
if (urlEntities != null) {
log.info("[URL ENTITIES]");
for (URLEntity entity : urlEntities) {
log.info(ToStringBuilder.reflectionToString(entity));
}
}
// Media Entites
MediaEntity[] mediaEntities = s.getMediaEntities();
if (mediaEntities != null) {
log.info("[MEDIA ENTITIES]");
for (MediaEntity entity : mediaEntities) {
log.info(ToStringBuilder.reflectionToString(entity));
}
}
log.info("--------------------------------------------------------------------------------------");
log.info(ToStringBuilder.reflectionToString(s));
log.info("======================================================================================");
}
console.p(new LocalizedString("See log file for tweet details"));
}
}