Package org.infoglue.deliver.util.rss

Source Code of org.infoglue.deliver.util.rss.RssHelper

/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
*  Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*/
package org.infoglue.deliver.util.rss;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;

import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndContentImpl;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndFeedImpl;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.SyndFeedOutput;

/**
* @author mattias
*
* This is a helper class to interact with ROME - the sun sponsored RSS parser/generator.
*/

public class RssHelper
{
    private final static Logger logger = Logger.getLogger(RssHelper.class.getName());

    //The default error message
    private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed";

    //Lets use the iso date format
    private static final String DATE_FORMAT = "yyyy-MM-dd";

    private String defaultFeedType = "atom_0.3";

    /**
     * The method that prints the xml and returns it as a string.
     *
     * @return
     */
   
    public String render(SyndFeed feed)
    {    
        String output = null;
       
        try
        {
            //res.setContentType(MIME_TYPE);
            SyndFeedOutput out = new SyndFeedOutput();
            output = out.outputString(feed);
        }
        catch (FeedException fe)
        {
            String msg = COULD_NOT_GENERATE_FEED_ERROR;
            logger.error(msg, fe);
            //res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,msg);
        }
       
        return output;
    }
    /**
     * This method returns a new SyndFeed instansiated with the parameters send in and with an empty entry-list.
     *
     * @param title
     * @param link
     * @param description
     * @return
     * @throws IOException
     * @throws FeedException
     */
   
    public SyndFeed getFeed(String feedType, String title, String link, String description, String encoding) throws IOException,FeedException
    {
       
        SyndFeed feed = new SyndFeedImpl();

        feedType = (feedType!=null) ? feedType : defaultFeedType;
        feed.setFeedType(feedType);

        feed.setTitle(title);
        feed.setLink(link);
        feed.setDescription(description);
        feed.setEncoding(encoding);

        List entries = new ArrayList();
       
        feed.setEntries(entries);

        return feed;
    }

    /**
     * This method adds an entry to a feed. No magic.
     *
     * @param feed
     * @param title
     * @param link
     * @param publishedDate
     * @param description
     * @param descriptionContentType
     * @throws IOException
     * @throws FeedException
     */
   
    public void addEntry(SyndFeed feed, String title, String link, Date publishedDate, String description, String descriptionContentType) throws IOException,FeedException
    {
        DateFormat dateParser = new SimpleDateFormat(DATE_FORMAT);

        SyndEntry entry = new SyndEntryImpl();
        entry.setTitle(title);
        entry.setLink(link);
        entry.setPublishedDate(publishedDate);
       
        SyndContent syndContent = new SyndContentImpl();
        syndContent.setType(descriptionContentType);
        syndContent.setValue(description);
       
        entry.setDescription(syndContent);
       
        feed.getEntries().add(entry);
    }

}
TOP

Related Classes of org.infoglue.deliver.util.rss.RssHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.