/**
* Represents a Tweet
*
* WARNING: tagger, collector, and persister have a "Tweet" class.
* They should all be merged and moved to aidr-common.
*
* @author Imran, Koushik
*/
package qa.qcri.aidr.utils;
import java.io.Serializable;
import org.apache.log4j.Logger;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@SuppressWarnings("serial")
public class Tweet implements Document, Serializable{
private static Logger logger = Logger.getLogger(Tweet.class);
private String tweetID;
private String message;
private String crisisName;
//private String reTweeted;
//private String reTweetCount;
private String createdAt;
private String userID;
private String userName;
private String userURL;
private String tweetURL;
/**
* @return the userURL
*/
public String getUserURL() {
return userURL;
}
/**
* @param userURL the userURL to set
*/
public void setUserURL(String userURL) {
this.userURL = userURL;
}
/**
* @return the tweetID
*/
public String getTweetID() {
return tweetID;
}
/**
* @param tweetID the tweetID to set
*/
public void setTweetID(String tweetID) {
this.tweetID = tweetID;
}
public String getCrisisName() {
return crisisName;
}
public void setCrisisName(String crisisName) {
this.crisisName = crisisName;
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
/**
* @param message the message to set
*/
public void setMessage(String message) {
this.message = message;
}
/**
* @return the userID
*/
public String getUserID() {
return userID;
}
/**
* @param userID the userID to set
*/
public void setUserID(String userID) {
this.userID = userID;
}
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @return the createdAt
*/
public String getCreatedAt() {
return createdAt;
}
/**
* @param createdAt the createdAt to set
*/
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
/**
* @return the tweetURL
*/
public String getTweetURL() {
return tweetURL;
}
/**
* @param tweetURL the tweetURL to set
*/
public void setTweetURL(String tweetURL) {
this.tweetURL = tweetURL;
}
public String toString(){
return tweetID+","+message+","+createdAt+","+userID+","+userName+","+userURL+","+tweetURL;
}
public Tweet toTweet(String str) {
if (str != null) {
Tweet tweet = new Tweet();
try {
JsonParser parser = new JsonParser();
JsonObject jsonObj = (JsonObject) parser.parse(str);
if (jsonObj.get("id") != null) {
tweet.setTweetID(jsonObj.get("id").getAsString());
}
if (jsonObj.get("text") != null) {
tweet.setMessage(jsonObj.get("text").getAsString());
}
if (jsonObj.get("created_at") != null) {
tweet.setCreatedAt(jsonObj.get("created_at").getAsString());
}
JsonObject jsonUserObj = null;
if (jsonObj.get("user") != null) {
jsonUserObj = jsonObj.get("user").getAsJsonObject();
if (jsonUserObj.get("id") != null) {
tweet.setUserID(jsonUserObj.get("id").getAsString());
}
if (jsonUserObj.get("screen_name") != null) {
tweet.setUserName(jsonUserObj.get("screen_name").getAsString());
tweet.setTweetURL("https://twitter.com/" + tweet.getUserName() + "/status/" + tweet.getTweetID());
}
if (jsonUserObj.get("url") != null) {
tweet.setUserURL(jsonUserObj.get("url").toString());
}
}
return tweet;
} catch (Exception ex) {
logger.error("Unable to deserialize the json string to tweet"+ex);
return null;
}
}
return null;
}
/*
* HumanLabeledDocumentDTO class is not meant to be part of aidr-persister
public Tweet toTweetFromLabeledDoc(HumanLabeledDocumentDTO doc) {
if (doc != null) {
try {
Tweet tweet = this.toTweet(doc.getDoc().getData());
return tweet;
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
return null;
}
}
*/
}