package glaze.examples.twitter.api.stream;
import glaze.examples.twitter.api.text.Entity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
@Data
public class Entities
{
private Hashtag[] hashtags;
@JsonProperty("user_mentions")
private Mention[] userMentions;
private Url[] urls;
// TODO media
@Data
public static class Url
{
@JsonProperty("expanded_url")
private String expandedUrl;
@JsonProperty("display_url")
private String displayUrl;
private String url;
private Integer[] indices;
}
@Data
public static class Hashtag
{
private String text;
private Integer[] indices;
}
@Data
public static class Mention
{
@JsonProperty("screen_name")
private String screenName;
private String name;
private Long id;
@JsonProperty("id_str")
private String idStr;
private Integer[] indices;
}
@JsonIgnore
public List<Entity> asList()
{
List<Entity> entities = new ArrayList<Entity>();
if (urls != null) {
for (Url u : urls) {
entities.add(new Entity(u));
}
}
if (hashtags != null) {
for (Hashtag h : hashtags) {
entities.add(new Entity(h));
}
}
if (userMentions != null) {
for (Mention m : userMentions) {
entities.add(new Entity(m));
}
}
Collections.sort(entities);
return entities;
}
}