You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by mf...@apache.org on 2014/07/14 19:31:22 UTC
[04/12] git commit: STREAMS-105 | Code review feedback
STREAMS-105 | Code review feedback
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/ce6e3276
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/ce6e3276
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/ce6e3276
Branch: refs/heads/master
Commit: ce6e3276e113251b15c4655335a6887082e13315
Parents: c35c2ef
Author: Robert Douglas <rd...@w2odigital.com>
Authored: Mon Jun 30 11:38:32 2014 -0500
Committer: Robert Douglas <rd...@w2odigital.com>
Committed: Mon Jun 30 11:38:32 2014 -0500
----------------------------------------------------------------------
.../DatasiftTweetActivitySerializer.java | 141 +++++++++++--------
.../main/jsonschema/com/datasift/Datasift.json | 2 +-
2 files changed, 86 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6e3276/streams-contrib/streams-provider-datasift/src/main/java/org/apache/streams/datasift/serializer/DatasiftTweetActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-datasift/src/main/java/org/apache/streams/datasift/serializer/DatasiftTweetActivitySerializer.java b/streams-contrib/streams-provider-datasift/src/main/java/org/apache/streams/datasift/serializer/DatasiftTweetActivitySerializer.java
index 465196f..a9514ed 100644
--- a/streams-contrib/streams-provider-datasift/src/main/java/org/apache/streams/datasift/serializer/DatasiftTweetActivitySerializer.java
+++ b/streams-contrib/streams-provider-datasift/src/main/java/org/apache/streams/datasift/serializer/DatasiftTweetActivitySerializer.java
@@ -81,58 +81,32 @@ public class DatasiftTweetActivitySerializer extends DatasiftDefaultActivitySeri
return activity;
}
+ /**
+ * Returns the actor created from this particular event and Twitter object
+ *
+ * @param event
+ * @param twitter
+ * @return
+ */
public Actor buildActor(Datasift event, Twitter twitter) {
User user = twitter.getUser();
Actor actor = super.buildActor(event.getInteraction());
- if(user == null) {
- return retweetBuildActor(actor, twitter.getRetweet().getUser());
- }
-
- actor.setDisplayName(user.getName());
- actor.setId(formatId(Optional.fromNullable(
- user.getIdStr())
- .or(Optional.of(user.getId().toString()))
- .orNull()));
- actor.setSummary(user.getDescription());
- try {
- actor.setPublished(RFC3339Utils.parseToUTC(user.getCreatedAt()));
- } catch (Exception e) {
- LOGGER.warn("Exception trying to parse date : {}", e);
- }
- if(user.getUrl() != null) {
- actor.setUrl(user.getUrl());
- }
-
- Map<String, Object> extensions = new HashMap<String,Object>();
- extensions.put("location", user.getLocation());
- extensions.put("posts", user.getStatusesCount());
- extensions.put("followers", user.getFollowersCount());
- extensions.put("screenName", user.getScreenName());
- if(user.getAdditionalProperties() != null) {
- extensions.put("favorites", user.getAdditionalProperties().get("favourites_count"));
- }
-
- Image profileImage = new Image();
- String profileUrl = null;
- profileUrl = event.getInteraction().getAuthor().getAvatar();
- if(profileUrl == null && user.getAdditionalProperties() != null) {
- Object url = user.getAdditionalProperties().get("profile_image_url_https");
- if(url instanceof String)
- profileUrl = (String) url;
- }
- if(profileUrl == null) {
- profileUrl = user.getProfileImageUrl();
+ if (user == null) {
+ return userBuildActor(actor, twitter.getRetweet().getUser());
+ } else {
+ return userBuildActor(actor, user);
}
- profileImage.setUrl(profileUrl);
- actor.setImage(profileImage);
-
- actor.setAdditionalProperty("extensions", extensions);
- return actor;
}
- //Need to make retweet user and tweet user the same object.
- public Actor retweetBuildActor(Actor actor, org.apache.streams.datasift.twitter.User user) {
+ /**
+ * Build an actor object given a User
+ *
+ * @param actor
+ * @param user
+ * @return
+ */
+ private Actor userBuildActor(Actor actor, User user) {
actor.setDisplayName(user.getName());
actor.setId(formatId(Optional.fromNullable(
@@ -169,13 +143,22 @@ public class DatasiftTweetActivitySerializer extends DatasiftDefaultActivitySeri
if(actor.getImage() == null && profileUrl == null) {
profileUrl = user.getProfileImageUrl();
}
- profileImage.setUrl(profileUrl);
- actor.setImage(profileImage);
+
+ if(profileUrl != null) {
+ profileImage.setUrl(profileUrl);
+ actor.setImage(profileImage);
+ }
actor.setAdditionalProperty("extensions", extensions);
return actor;
}
+ /**
+ * Adds location attributes from the given Twitter object
+ *
+ * @param activity
+ * @param twitter
+ */
public void addLocationExtension(Activity activity, Twitter twitter) {
Map<String, Object> extensions = ensureExtensions(activity);
Map<String, Object> location = Maps.newHashMap();
@@ -187,6 +170,13 @@ public class DatasiftTweetActivitySerializer extends DatasiftDefaultActivitySeri
extensions.put("location", location);
}
+ /**
+ * Creates and adds Twitter Extensions from given interaction
+ *
+ * @param activity
+ * @param twitter
+ * @param interaction
+ */
public void addTwitterExtensions(Activity activity, Twitter twitter, Interaction interaction) {
Retweet retweet = twitter.getRetweet();
Map<String, Object> extensions = ensureExtensions(activity);
@@ -217,24 +207,63 @@ public class DatasiftTweetActivitySerializer extends DatasiftDefaultActivitySeri
}
if(interaction.getAdditionalProperties() != null) {
- ArrayList<String> mentions = (ArrayList<String>) interaction.getAdditionalProperties().get("mentions");
- ArrayList<Long> mentionIds = (ArrayList<Long>) interaction.getAdditionalProperties().get("mention_ids");
- ArrayList<UserMentions> userMentions = new ArrayList<UserMentions>();
+ ArrayList<UserMentions> userMentions = createUserMentions(interaction);
+
+ if(userMentions.size() > 0)
+ extensions.put("user_mentions", userMentions);
+ }
+
+ extensions.put("keywords", interaction.getContent());
+ }
+
+ /**
+ * Returns an ArrayList of all UserMentions in this interaction
+ * Note: The ID list and the handle lists do not necessarily correspond 1:1 for this provider
+ * If those lists are the same size, then they will be merged into individual UserMention
+ * objects. However, if they are not the same size, a new UserMention object will be created
+ * for each entry in both lists.
+ *
+ * @param interaction
+ * @return
+ */
+ private ArrayList<UserMentions> createUserMentions(Interaction interaction) {
+ ArrayList<String> mentions = (ArrayList<String>) interaction.getAdditionalProperties().get("mentions");
+ ArrayList<Long> mentionIds = (ArrayList<Long>) interaction.getAdditionalProperties().get("mention_ids");
+ ArrayList<UserMentions> userMentions = new ArrayList<UserMentions>();
- if(mentions != null && mentionIds != null && (mentionIds.size() == mentions.size()) && !mentions.isEmpty() && !mentionIds.isEmpty()) {
+ if(mentions != null && mentionIds != null && (mentionIds.size() == mentions.size()) && !mentions.isEmpty() && !mentionIds.isEmpty()) {
+ for(int x = 0; x < mentions.size(); x ++) {
+ UserMentions mention = new UserMentions();
+
+ mention.setIdStr("id:twitter:" + mentionIds.get(x));
+ mention.setId(Long.parseLong(String.valueOf(mentionIds.get(x))));
+ mention.setName(mentions.get(x));
+ mention.setScreenName(mentions.get(x));
+
+ userMentions.add(mention);
+ }
+ } else if((mentions != null && !mentions.isEmpty()) || (mentionIds != null && !mentionIds.isEmpty())) {
+ if(mentions != null && !mentions.isEmpty()) {
for(int x = 0; x < mentions.size(); x ++) {
UserMentions mention = new UserMentions();
-
- mention.setIdStr("id:twitter:" + mentionIds.get(x));
- mention.setId(mentionIds.get(x));
mention.setName(mentions.get(x));
mention.setScreenName(mentions.get(x));
userMentions.add(mention);
}
- extensions.put("user_mentions", userMentions);
+ }
+ if(mentionIds != null && !mentionIds.isEmpty()) {
+ for(int x = 0; x < mentionIds.size(); x ++) {
+ UserMentions mention = new UserMentions();
+
+ mention.setIdStr("id:twitter:" + mentionIds.get(x));
+ mention.setId(Long.parseLong(String.valueOf(mentionIds.get(x))));
+
+ userMentions.add(mention);
+ }
}
}
- extensions.put("keywords", interaction.getContent());
+
+ return userMentions;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6e3276/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json b/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json
index e7b664a..c30fa8f 100644
--- a/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json
+++ b/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json
@@ -738,7 +738,7 @@
"type": "array",
"items": [
{
- "type": "integer"
+ "type": "string"
}
]
},