EventBean.java 2.02 KB
package fi.insomnia.bortal.beans;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.User;

/**
 * Session Bean implementation class EventBean
 */
@Stateless
public class EventBean implements EventBeanLocal {

    private static final String DEFAULT_EVENT_NAME = "Default event";
    private static final String DEFAULT_ORGANISATION_NAME = "Default organisation";

    @EJB
    private EventFacade eventFacade;

    @EJB
    private EventOrganiserFacade eventOrganiserFacade;

    @EJB
    private UserFacade userFacade;

    @EJB
    private EventStatusBeanLocal eventStatusBean;

    @Override
    public Event getEventByHostname(String hostname) {

        Event ret = eventFacade.findByHostname(hostname);
        if (ret == null) {
            ret = findOrCreateDefaultEvent();
        }
        return ret;
    }

    public Event findOrCreateDefaultEvent() {
        Event ret = eventFacade.findByName(DEFAULT_EVENT_NAME);

        if (ret == null) {
            ret = new Event();
            ret.setReferer("");
            ret.setName(DEFAULT_EVENT_NAME);
            ret.setOrganiser(findOrCreateDefaultEventOrganisation());
            ret.setStatus(eventStatusBean.findOrCreateDefaultEventStatus());
            eventFacade.create(ret);
        }
        return ret;
    }

    public EventOrganiser findOrCreateDefaultEventOrganisation() {
        EventOrganiser settings = eventOrganiserFacade.findByOrganisation(DEFAULT_ORGANISATION_NAME);

        if (settings == null) {
            settings = new EventOrganiser();
            settings.setOrganisation(DEFAULT_ORGANISATION_NAME);
            User defaultUser = userFacade.getOrCreateDefaultUser();
            settings.setAdmin(defaultUser);
            eventOrganiserFacade.create(settings);
        }

        return settings;
    }

}