/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License * at: * * http://opensource.org/licenses/ecl2.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package org.opencastproject.feed.api; import java.util.Date; import java.util.List; /** * Feed entries are the child elements of an rrs/atom feed. * <p> * Note that this interface is heavily inspired and backed by the excellent rss/atom feed library <tt>Rome</tt> * (http://rome.dev.java.net). */ public interface FeedEntry { /** * Returns the entry URI. * * @return the entry URI, <b>null</b> if none */ String getUri(); /** * Sets the entry URI. * * @param uri * the entry URI to set, <b>null</b> if none */ void setUri(String uri); /** * Sets the entry title. * * @param title * the entry title to set, <b>null</b> if none */ void setTitle(String title); /** * Returns the entry title as a text construct. * * @return the entry title, <b>null</b> if none */ Content getTitle(); /** * Sets the entry title as a text construct. * * @param title * the entry title to set, <b>null</b> if none */ void setTitle(Content title); /** * Returns the entry links. * * @return the entry links, <b>null</b> if none */ List<Link> getLinks(); /** * Sets the entry links. * * @param links * the entry links to set, <b>null</b> if none */ void setLinks(List<Link> links); /** * Adds a link. * * @param link * the link to add */ void addLink(Link link); /** * Returns the entry description. * * @return the entry description, <b>null</b> if none */ Content getDescription(); /** * Sets the entry description. * * @param description * the entry description to set, <b>null</b> if none */ void setDescription(Content description); /** * Returns the entry contents. * * @return a list of Content elements with the entry contents, an empty list if none */ List<Content> getContents(); /** * Sets the entry contents. * * @param contents * the list of Content elements with the entry contents to set, an empty list or <b>null</b> if none */ void setContents(List<Content> contents); /** * Adds the feed body as a content object. The entry can have multiple bodies, preferably satisfying different content * encodings. * * @param content * the entry's body * @see Content#setType(String) */ void addContent(Content content); /** * Returns the entry enclosures. * * @return a list of Enclosure elements with the entry enclosures, an empty list if none. */ List<Enclosure> getEnclosures(); /** * Sets the entry enclosures. * <p> * * @param enclosures * the list of Enclosure elements with the entry enclosures to set, an empty list or <b>null</b> if none */ void setEnclosures(List<Enclosure> enclosures); /** * Adds an entry enclosure. * * @param enclosure * the enclosure element */ void addEnclosure(Enclosure enclosure); /** * Returns the entry published date. * <p> * This method is a convenience method, it maps to the Dublin Core module date. * * @return the entry published date, <b>null</b> if none */ Date getPublishedDate(); /** * Sets the entry published date. * <p> * This method is a convenience method, it maps to the Dublin Core module date. * * @param publishedDate * the entry published date to set, <b>null</b> if none */ void setPublishedDate(Date publishedDate); /** * Returns the entry updated date. * * @return the entry updated date, <b>null</b> if none */ Date getUpdatedDate(); /** * Sets the entry updated date. * * @param updatedDate * the entry updated date to set, <b>null</b> if none */ void setUpdatedDate(Date updatedDate); /** * Returns the entry authors. * <p> * For Atom feeds, this returns the authors as a list of Person objects, for RSS feeds this method is a convenience * method, it maps to the Dublin Core module creator. * * @return the feed author, <b>null</b> if none */ List<Person> getAuthors(); /** * Sets the entry author. * <p> * For Atom feeds, this sets the authors as a list of Person objects, for RSS feeds this method is a convenience * method, it maps to the Dublin Core module creator. * * @param authors * the feed author to set, <b>null</b> if none */ void setAuthors(List<Person> authors); /** * Adds a feed author. * <p> * For Atom feeds, this adds the author to a list of Person objects, for RSS feeds this method is a convenience * method, it maps to the Dublin Core module creator. * * @param author * the feed author to add */ void addAuthor(Person author); /** * Returns the feed author. * <p> * For Atom feeds, this returns the contributors as a list of Person objects * * @return the feed author, <b>null</b> if none */ List<Person> getContributors(); /** * Sets the feed contributors. * <p> * Returns contributors as a list of Person objects. * * @param contributors * the feed contributors to set, <b>null</b> if none */ void setContributors(List<Person> contributors); /** * Adds a feed contributor. * * @param contributor * the contributor to add */ void addContributor(Person contributor); /** * Returns the entry categories. * <p> * This method is a convenience method, it maps to the Dublin Core subjects. * * @return a list of Category elements with the entry categories, an empty list if none */ List<Category> getCategories(); /** * Sets the entry categories. * <p> * This method is a convenience method, it maps to the Dublin Core subjects. * * @param categories * the list of Category elements with the entry categories to set, an empty list or <b>null</b> if none */ void setCategories(List<Category> categories); /** * The category to add. * * This method is a convenience method, it maps to the Dublin Core module subjects. * * @param category * the category to add */ void addCategory(Category category); /** * Returns the entry source. * * @return the Feed to which this entry is attributed */ Feed getSource(); /** * Returns the module identified by a given URI. * * @param uri * the URI of the Module. * @return The module with the given URI, <b>null</b> if none */ FeedExtension getModule(String uri); /** * Returns the entry modules. * * @return a list of Module elements with the entry modules, an empty list if none */ List<FeedExtension> getModules(); /** * Sets the entry extensions. * * @param extensions * the list of feed extensions */ void setExtensions(List<FeedExtension> extensions); /** * Adds the extension. * * @param extension * the extension to add */ void addExtension(FeedExtension extension); }