Package in.partake.controller.action.feed

Source Code of in.partake.controller.action.feed.AbstractFeedPageAction

package in.partake.controller.action.feed;

import in.partake.controller.action.AbstractPartakeAction;
import in.partake.model.EventEx;
import in.partake.model.dto.EventActivity;
import in.partake.view.util.Helper;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

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.io.FeedException;
import com.sun.syndication.io.SyndFeedOutput;

public abstract class AbstractFeedPageAction extends AbstractPartakeAction{
    protected byte[] createFeed(SyndFeed feed, List<EventEx> events) throws IOException, FeedException {
        List<SyndEntry> entries = new ArrayList<SyndEntry>();

        for (EventEx event : events) {
            if (event == null) { continue; }
            if (!event.isSearchable()) continue;

            SyndContent content = new SyndContentImpl();
            content.setType("text/html");
            content.setValue(Helper.cleanupHTML(event.getDescription()));

            SyndEntry entry = new SyndEntryImpl();
            entry.setTitle(event.getTitle());
            entry.setLink(event.getEventURL());
            entry.setPublishedDate(event.getCreatedAt().toDate());

            entry.setAuthor(event.getOwner().getTwitterScreenName());
            entry.setDescription(content);

            entries.add(entry);
        }

        feed.setEntries(entries);
        return outputSyndFeed(feed);
    }

    protected byte[] createEventFeed(SyndFeed feed, List<EventActivity> activities) throws IOException, FeedException {
        List<SyndEntry> entries = new ArrayList<SyndEntry>();
        for (EventActivity activity : activities) {
            SyndContent content = new SyndContentImpl();
            content.setType("text/html");
            content.setValue(Helper.cleanupHTML(activity.getContent()));

            SyndEntry entry = new SyndEntryImpl();
            entry.setTitle(Helper.h(activity.getTitle()));
            entry.setDescription(content);

            entries.add(entry);
        }

        feed.setEntries(entries);
        return outputSyndFeed(feed);
    }

    protected byte[] outputSyndFeed(SyndFeed feed) throws IOException, FeedException, UnsupportedEncodingException {
        SyndFeedOutput output = new SyndFeedOutput();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        output.output(feed, new OutputStreamWriter(baos, "utf-8"));
        baos.flush();
        baos.close();

        return baos.toByteArray();
    }
}
TOP

Related Classes of in.partake.controller.action.feed.AbstractFeedPageAction

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.