Package in.partake.controller.action.feed

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

package in.partake.controller.action.feed;

import in.partake.base.PartakeException;
import in.partake.model.IPartakeDAOs;
import in.partake.model.access.DBAccess;
import in.partake.model.dao.DAOException;
import in.partake.model.dao.PartakeConnection;
import in.partake.model.dao.access.IEventFeedAccess;
import in.partake.model.daofacade.EventDAOFacade;
import in.partake.model.dto.Event;
import in.partake.model.dto.EventActivity;
import in.partake.model.dto.EventFeed;
import in.partake.resource.ServerErrorCode;
import in.partake.resource.UserErrorCode;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import play.mvc.Result;

import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndFeedImpl;
import com.sun.syndication.io.FeedException;

public class FeedEventAction extends AbstractFeedPageAction {
    private String feedId;

    public static Result get(String feedId) throws DAOException, PartakeException {
        FeedEventAction action = new FeedEventAction();
        action.feedId = feedId;
        return action.execute();
    }

    @Override
    protected Result doExecute() throws DAOException, PartakeException {
        checkIdParameterIsValid(feedId, UserErrorCode.INVALID_NOTFOUND, UserErrorCode.INVALID_NOTFOUND);

        FeedEventTransaction transaction = new FeedEventTransaction(feedId);
        transaction.execute();

        try {
            Event event = transaction.getEvent();
            if (event == null)
                return renderNotFound();

            SyndFeed feed = new SyndFeedImpl();
            feed.setFeedType("rss_2.0");
            feed.setEncoding("utf-8");

            feed.setTitle(event.getTitle() + " - [PARTAKE]");
            feed.setLink(event.getEventURL());
            feed.setDescription(event.getSummary());

            byte[] body = createEventFeed(feed, transaction.getActivities());
            if (body == null)
                return renderNotFound();
            return render(body, "application/rss+xml", "inline");
        } catch (IOException e) {
            throw new PartakeException(ServerErrorCode.ERROR_IO, e);
        } catch (FeedException e) {
            throw new PartakeException(ServerErrorCode.FEED_CREATION, e);
        }
    }
}

class FeedEventTransaction extends DBAccess<InputStream> {
    private String feedId;
    private Event event;
    private List<EventActivity> eventActivities;

    public FeedEventTransaction(String feedId) {
        this.feedId = feedId;
    }

    @Override
    protected InputStream doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
        IEventFeedAccess feedAccess = daos.getEventFeedAccess();
        EventFeed linkage = feedAccess.find(con, feedId);
        if (linkage == null)
            return null;

        event = EventDAOFacade.getEventEx(con, daos, linkage.getEventId());
        if (event == null)
            return null;

        eventActivities = daos.getEventActivityAccess().findByEventId(con, event.getId(), 100);
        return null;
    }

    public Event getEvent() {
        return event;
    }

    public List<EventActivity> getActivities() {
        return eventActivities;
    }
}
TOP

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

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.
sByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-20639858-1', 'auto'); ga('send', 'pageview');