package com.xavient.dip.flume.source; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import com.google.gson.Gson; import twitter4j.Status; public class DataObjectFactory { private static Gson gson = new Gson(); private static DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'"); public static String getRawJSON(Status status) { Map<String, Object> data = new LinkedHashMap<String, Object>(15); data.put("timestamp", fmt.print(status.getCreatedAt().getTime())); data.put("id", status.getId()); data.put("text", status.getText()); data.put("source", status.getSource()); data.put("reTweeted", status.isRetweet()); data.put("username", status.getUser().getName()); data.put("createdAt", status.getCreatedAt()); data.put("retweetCount", status.getRetweetCount()); data.put("userLocation", StringUtils.isNotBlank(status.getUser().getLocation()) ? status.getUser().getLocation() : "unknown"); data.put("inReplyToUserId", status.getInReplyToUserId()); data.put("inReplyToStatusId", status.getInReplyToStatusId()); data.put("userScreenName", status.getUser().getScreenName()); data.put("userDescription", StringUtils.isNotBlank(status.getUser().getDescription()) ? status.getUser().getDescription() : ""); data.put("userFriendsCount", status.getUser().getFriendsCount()); data.put("userStatusesCount", status.getUser().getStatusesCount()); data.put("userFollowersCount", status.getUser().getFollowersCount()); return gson.toJson(data); } }