Files
Athou_commafeed/src/main/java/com/commafeed/frontend/model/Entry.java

141 lines
4.0 KiB
Java
Raw Normal View History

2013-03-23 16:17:19 +01:00
package com.commafeed.frontend.model;
2013-03-22 09:29:30 +01:00
import java.io.Serializable;
import java.util.Arrays;
2013-03-22 22:11:40 +01:00
import java.util.Date;
2013-10-13 10:49:44 +02:00
import java.util.List;
2013-03-22 22:11:40 +01:00
import lombok.Data;
import com.commafeed.backend.feed.FeedUtils;
2013-04-18 12:50:44 +02:00
import com.commafeed.backend.model.FeedEntry;
2013-08-09 12:53:21 +02:00
import com.commafeed.backend.model.FeedEntryContent;
2013-04-18 12:50:44 +02:00
import com.commafeed.backend.model.FeedEntryStatus;
2013-10-13 10:49:44 +02:00
import com.commafeed.backend.model.FeedEntryTag;
2013-06-20 18:45:58 +02:00
import com.commafeed.backend.model.FeedSubscription;
2013-10-13 10:49:44 +02:00
import com.google.common.collect.Lists;
import com.sun.syndication.feed.synd.SyndContentImpl;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.wordnik.swagger.annotations.ApiModel;
import com.wordnik.swagger.annotations.ApiModelProperty;
2013-04-16 12:36:18 +02:00
2013-03-25 12:24:00 +01:00
@SuppressWarnings("serial")
@ApiModel("Entry details")
@Data
public class Entry implements Serializable {
2013-07-25 09:17:33 +02:00
public static Entry build(FeedEntryStatus status, String publicUrl, boolean proxyImages) {
2013-04-18 12:50:44 +02:00
Entry entry = new Entry();
FeedEntry feedEntry = status.getEntry();
2013-06-20 18:45:58 +02:00
FeedSubscription sub = status.getSubscription();
2013-08-09 12:53:21 +02:00
FeedEntryContent content = feedEntry.getContent();
2013-06-20 18:45:58 +02:00
2013-08-09 12:53:21 +02:00
entry.setId(String.valueOf(feedEntry.getId()));
entry.setGuid(feedEntry.getGuid());
2013-06-20 18:45:58 +02:00
entry.setRead(status.isRead());
entry.setStarred(status.isStarred());
2013-07-23 15:27:56 +02:00
entry.setMarkable(status.isMarkable());
2013-04-18 12:50:44 +02:00
entry.setDate(feedEntry.getUpdated());
entry.setInsertedDate(feedEntry.getInserted());
2013-04-18 12:50:44 +02:00
entry.setUrl(feedEntry.getUrl());
2013-06-20 18:45:58 +02:00
entry.setFeedName(sub.getTitle());
entry.setFeedId(String.valueOf(sub.getId()));
entry.setFeedUrl(sub.getFeed().getUrl());
entry.setFeedLink(sub.getFeed().getLink());
entry.setIconUrl(FeedUtils.getFaviconUrl(sub, publicUrl));
2013-04-18 12:50:44 +02:00
2013-10-13 10:49:44 +02:00
List<String> tags = Lists.newArrayList();
for (FeedEntryTag tag : status.getTags()) {
tags.add(tag.getName());
}
entry.setTags(tags);
2013-08-09 12:53:21 +02:00
if (content != null) {
entry.setRtl(FeedUtils.isRTL(feedEntry));
entry.setTitle(content.getTitle());
entry.setContent(FeedUtils.proxyImages(content.getContent(), publicUrl, proxyImages));
entry.setAuthor(content.getAuthor());
entry.setEnclosureUrl(content.getEnclosureUrl());
entry.setEnclosureType(content.getEnclosureType());
}
2013-04-18 12:50:44 +02:00
return entry;
}
public SyndEntry asRss() {
SyndEntry entry = new SyndEntryImpl();
entry.setUri(getGuid());
entry.setTitle(getTitle());
SyndContentImpl content = new SyndContentImpl();
content.setValue(getContent());
entry.setContents(Arrays.asList(content));
entry.setLink(getUrl());
entry.setPublishedDate(getDate());
return entry;
}
@ApiModelProperty("entry id")
2013-03-22 09:29:30 +01:00
private String id;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("entry guid")
private String guid;
@ApiModelProperty("entry title")
2013-03-22 09:29:30 +01:00
private String title;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("entry content")
2013-03-22 09:29:30 +01:00
private String content;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("wether entry content and title are rtl")
2013-05-31 08:17:58 +02:00
private boolean rtl;
@ApiModelProperty("entry author")
2013-05-19 06:47:37 +02:00
private String author;
@ApiModelProperty("entry enclosure url, if any")
2013-04-09 13:37:00 +02:00
private String enclosureUrl;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("entry enclosure mime type, if any")
2013-04-09 13:37:00 +02:00
private String enclosureType;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("entry publication date")
2013-03-22 22:11:40 +01:00
private Date date;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("entry insertion date in the database")
private Date insertedDate;
@ApiModelProperty("feed id")
2013-03-22 09:29:30 +01:00
private String feedId;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("feed name")
2013-03-22 09:29:30 +01:00
private String feedName;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("this entry's feed url")
2013-04-09 12:03:03 +02:00
private String feedUrl;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("this entry's website url")
private String feedLink;
@ApiModelProperty(value = "The favicon url to use for this feed")
2013-05-26 15:36:55 +02:00
private String iconUrl;
@ApiModelProperty("entry url")
2013-03-22 09:29:30 +01:00
private String url;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("read sttaus")
2013-03-22 09:29:30 +01:00
private boolean read;
2013-04-18 12:50:44 +02:00
@ApiModelProperty("starred status")
2013-03-22 09:29:30 +01:00
private boolean starred;
@ApiModelProperty("wether the entry is still markable (old entry statuses are discarded)")
2013-07-23 15:27:56 +02:00
private boolean markable;
2013-10-13 10:49:44 +02:00
@ApiModelProperty("tags")
2013-10-13 10:49:44 +02:00
private List<String> tags;
2013-03-22 09:29:30 +01:00
}