package org.jboss.seam.rss.ui; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.faces.context.FacesContext; import org.jboss.seam.contexts.Contexts; import yarfraw.core.datamodel.ChannelFeed; import yarfraw.core.datamodel.ItemEntry; import yarfraw.core.datamodel.Person; import yarfraw.core.datamodel.Text; import yarfraw.core.datamodel.Text.TextType; /** *atomEntry = element atom:entry { atomCommonAttributes, (atomAuthor* & * atomCategory* & atomContent? & atomContributor* & atomId & atomLink* & * atomPublished? & atomRights? & atomSource? & atomSummary? & atomTitle & * atomUpdated & extensionElement*) } */ public class UIEntry extends SyndicationComponent { private static final String COMPONENT_TYPE = "org.jboss.seam.rss.ui.UIEntry"; private String uid; private String title; private String link; private String author; private String summary; private TextType textFormat = TextType.html; private Date published; private Date updated; @Override public String getFamily() { return COMPONENT_TYPE; } private Text makeText(String textString) { Text text = new Text(textFormat); text.setText(textString); return text; } @SuppressWarnings("unchecked") @Override public void encodeBegin(FacesContext facesContext) throws IOException { ChannelFeed channelFeed = (ChannelFeed) Contexts.getEventContext().get(FEED_IMPL_KEY); ItemEntry itemEntry = new ItemEntry(); itemEntry.setUid(getUid()); itemEntry.setTitle(makeText(getTitle())); itemEntry.addLink(getLink()); String author = getAuthor(); if (author != null) { Person authorPerson = new Person(); authorPerson.setName(author); itemEntry.addAuthorOrCreator(authorPerson); } itemEntry.setDescriptionOrSummary(makeText(getSummary())); if (getUpdated() != null) { itemEntry.setUpdatedDate(getUpdated(), new SimpleDateFormat(ATOM_DATE_FORMAT)); } if (getPublished() != null) { itemEntry.setPubDate(getPublished(), new SimpleDateFormat(ATOM_DATE_FORMAT)); } channelFeed.addItem(itemEntry); } public String getTitle() { return (String) valueOf("title", title); } public void setTitle(String title) { this.title = title; } public String getLink() { return (String) valueOf("link", link); } public void setLink(String link) { this.link = link; } public String getAuthor() { return (String) valueOf("author", author); } public void setAuthor(String author) { this.author = author; } public String getSummary() { return (String) valueOf("summary", summary); } public void setSummary(String summary) { this.summary = summary; } public Date getPublished() { return (Date) valueOf("published", published); } public void setPublished(Date published) { this.published = published; } public Date getUpdated() { return (Date) valueOf("updated", updated); } public void setUpdated(Date updated) { this.updated = updated; } public String getUid() { return (String) valueOf("uid", uid); } public void setUid(String uid) { this.uid = uid; } public TextType getTextFormat() { return textFormat; } public void setTextFormat(TextType textFormat) { this.textFormat = textFormat; } }