org.infoglue.calendar.actions.ViewEventAction.java Source code

Java tutorial

Introduction

Here is the source code for org.infoglue.calendar.actions.ViewEventAction.java

Source

/* ===============================================================================
*
* 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.calendar.actions;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.ObjectNotFoundException;
import org.hibernate.Session;
import org.infoglue.calendar.controllers.CategoryController;
import org.infoglue.calendar.controllers.ContentTypeDefinitionController;
import org.infoglue.calendar.controllers.EventController;
import org.infoglue.calendar.controllers.EventTypeController;
import org.infoglue.calendar.controllers.LanguageController;
import org.infoglue.calendar.controllers.LocationController;
import org.infoglue.calendar.entities.Event;
import org.infoglue.calendar.entities.EventCategory;
import org.infoglue.calendar.entities.EventType;
import org.infoglue.calendar.entities.EventTypeCategoryAttribute;
import org.infoglue.calendar.entities.EventVersion;
import org.infoglue.calendar.entities.Language;
import org.infoglue.common.util.VelocityTemplateProcessor;

import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.Action;

/**
 * This action represents a Location Administration screen.
 * 
 * @author Mattias Bogeblad
 */

public class ViewEventAction extends CalendarAbstractAction {
    private static Log log = LogFactory.getLog(ViewEventAction.class);

    private Long eventId;
    private Long versionLanguageId;
    private Event event;
    private EventVersion eventVersion;
    private EventVersion alternativeEventVersion;

    private Long calendarId;
    private String mode = "day";

    private List locations;
    private List categories;
    //private List infogluePrincipals;

    private List yesOrNo = new ArrayList();

    private List remainingLocations;
    private List selectedLocations = new ArrayList();

    private List remainingCategories;
    private List selectedCategories = new ArrayList();

    private List remainingInfogluePrincipals;
    private List participatingPrincipals = new ArrayList();

    private Boolean forceRequestEventId = new Boolean(false);
    private Boolean eventCopy = new Boolean(false);

    private List entryFormEventTypes;
    private EventType entryFormEventType;

    private List attributes;
    private List availableLanguages = new ArrayList();

    private Boolean skipLanguageTabs;

    /**
     * This is the entry point for the main listing.
     */

    public String execute() throws Exception {
        try {
            log.info("this.eventId:" + eventId);

            Session session = getSession(true);

            String requestEventId = ServletActionContext.getRequest().getParameter("eventId");
            String forceRequestEventIdString = ServletActionContext.getRequest()
                    .getParameter("forceRequestEventId");
            if (forceRequestEventIdString != null && forceRequestEventIdString.length() > 0)
                this.forceRequestEventId = new Boolean(forceRequestEventIdString);

            String requestEventCopy = ServletActionContext.getRequest().getParameter("eventCopy");
            if (forceRequestEventIdString != null && forceRequestEventIdString.length() > 0)
                this.eventCopy = new Boolean(requestEventCopy);

            if ((this.eventId == null || this.forceRequestEventId.booleanValue()) && requestEventId != null
                    && !requestEventId.equalsIgnoreCase(""))
                this.eventId = new Long(requestEventId);

            this.availableLanguages = LanguageController.getController().getLanguageList(session);
            if (this.versionLanguageId == null && this.availableLanguages.size() > 0) {
                this.versionLanguageId = ((Language) this.availableLanguages.get(0)).getId();
            }

            if (this.eventId != null) {
                this.event = EventController.getController().getEvent(eventId, session);
                Iterator eventVersionsIterator = this.event.getVersions().iterator();
                while (eventVersionsIterator.hasNext()) {
                    EventVersion currentEventVersion = (EventVersion) eventVersionsIterator.next();
                    if (currentEventVersion.getVersionLanguageId().equals(versionLanguageId)) {
                        this.eventVersion = currentEventVersion;
                        break;
                    } else if (alternativeEventVersion == null) //Setting the alternative version if none set before and it's not the current.
                    {
                        alternativeEventVersion = currentEventVersion;
                    }
                }

                if (this.event.getOwningCalendar() != null)
                    this.calendarId = this.event.getOwningCalendar().getId();

                this.locations = LocationController.getController().getLocationList(session);
                this.categories = CategoryController.getController().getRootCategoryList(session);
                //this.infogluePrincipals = UserControllerProxy.getController().getAllUsers();
                this.entryFormEventTypes = EventTypeController.getController()
                        .getEventTypeList(EventType.ENTRY_DEFINITION, session);
                this.entryFormEventType = EventTypeController.getController().getEventType(event.getEntryFormId(),
                        session);

                EventType eventType = this.event.getOwningCalendar().getEventType();
                if (eventType != null)
                    this.attributes = ContentTypeDefinitionController.getController()
                            .getContentTypeAttributes(eventType.getSchemaValue());

                this.yesOrNo = new ArrayList();
                this.yesOrNo.add("true");

                return Action.SUCCESS;
            } else {
                throw new ObjectNotFoundException("EventId was empty", "");
            }
        } catch (ObjectNotFoundException o) {
            log.warn("Det fanns inget evenemang med id " + this.eventId + ":" + o.getMessage());
            setError("Det fanns inget evenemang med id " + this.eventId, o);
        } catch (Exception e) {
            log.error("Ett fel uppstod nr evenemang med id " + this.eventId + " skulle visas:" + e.getMessage(),
                    e);
            setError("Ett fel uppstod nr evenemang med id " + this.eventId + " skulle visas.", e);
        }

        return Action.ERROR;
    }

    public String chooseLanguageForEdit() throws Exception {
        Session session = getSession(true);

        this.availableLanguages = LanguageController.getController().getLanguageList(session);

        if (this.eventId != null) {
            this.event = EventController.getController().getEvent(eventId, session);
            Iterator eventVersionIterator = this.event.getVersions().iterator();
            while (eventVersionIterator.hasNext()) {
                EventVersion eventVersion = (EventVersion) eventVersionIterator.next();
                this.availableLanguages.remove(eventVersion.getLanguage());
            }
        }

        return "successChooseLanguageForEdit";
    }

    public String edit() throws Exception {
        if (this.execute().equals(Action.ERROR))
            return Action.ERROR;
        else
            return "successEdit";
    }

    public String doPublic() throws Exception {
        try {
            Session session = getSession(true);

            log.info("this.eventId:" + eventId);
            String requestEventId = ServletActionContext.getRequest().getParameter("eventId");
            if (this.eventId == null && requestEventId != null && !requestEventId.equalsIgnoreCase(""))
                this.eventId = new Long(requestEventId);

            if (this.eventId != null) {
                this.event = EventController.getController().getEvent(eventId, session);

                String presentationTemplate = getPresentationTemplate();
                log.info("presentationTemplate:" + presentationTemplate);
                if (presentationTemplate != null && !presentationTemplate.equals("")) {
                    Map parameters = new HashMap();
                    parameters.put("event", this.event);
                    parameters.put("this", this);

                    StringWriter tempString = new StringWriter();
                    PrintWriter pw = new PrintWriter(tempString);
                    new VelocityTemplateProcessor().renderTemplate(parameters, pw, presentationTemplate);
                    String renderedString = tempString.toString();
                    setRenderedString(renderedString);
                    return Action.SUCCESS + "RenderedTemplate";
                }

                return "successPublic";
            } else {
                throw new ObjectNotFoundException("EventId was empty", "");
            }
        } catch (ObjectNotFoundException o) {
            log.warn("Det fanns inget evenemang med id " + this.eventId + ":" + o.getMessage());
            setError("Det fanns inget evenemang med id " + this.eventId, o);
        } catch (Exception e) {
            log.error("Ett fel uppstod nr evenemang med id " + this.eventId + " skulle visas:" + e.getMessage(),
                    e);
            setError("Ett fel uppstod nr evenemang med id " + this.eventId + " skulle visas.", e);
        }

        return Action.ERROR;
    }

    public String doPublicGU() throws Exception {
        try {
            Session session = getSession(true);

            log.info("this.eventId:" + eventId);
            String requestEventId = ServletActionContext.getRequest().getParameter("eventId");
            if (this.eventId == null && requestEventId != null && !requestEventId.equalsIgnoreCase(""))
                this.eventId = new Long(requestEventId);

            if (this.eventId != null) {
                this.event = EventController.getController().getEvent(eventId, session);

                String presentationTemplate = getPresentationTemplate();
                log.info("presentationTemplate:" + presentationTemplate);
                if (presentationTemplate != null && !presentationTemplate.equals("")) {
                    Map parameters = new HashMap();
                    parameters.put("event", this.event);
                    parameters.put("this", this);

                    StringWriter tempString = new StringWriter();
                    PrintWriter pw = new PrintWriter(tempString);
                    new VelocityTemplateProcessor().renderTemplate(parameters, pw, presentationTemplate);
                    String renderedString = tempString.toString();
                    setRenderedString(renderedString);
                    return Action.SUCCESS + "RenderedTemplate";
                }

                return "successPublicGU";
            } else {
                throw new ObjectNotFoundException("EventId was empty", "");
            }
        } catch (ObjectNotFoundException o) {
            log.warn("Det fanns inget evenemang med id " + this.eventId + ":" + o.getMessage());
            setError("Det fanns inget evenemang med id " + this.eventId, o);
        } catch (Exception e) {
            log.error("Ett fel uppstod nr evenemang med id " + this.eventId + " skulle visas:" + e.getMessage(),
                    e);
            setError("Ett fel uppstod nr evenemang med id " + this.eventId + " skulle visas.", e);
        }

        return Action.ERROR;
    }

    public String doPublicCustom() throws Exception {
        try {
            Session session = getSession(true);

            log.info("this.eventId:" + eventId);
            String requestEventId = ServletActionContext.getRequest().getParameter("eventId");
            if (this.eventId == null && requestEventId != null && !requestEventId.equalsIgnoreCase(""))
                this.eventId = new Long(requestEventId);

            if (this.eventId != null) {
                this.event = EventController.getController().getEvent(eventId, session);

                String presentationTemplate = getPresentationTemplate();
                log.info("presentationTemplate:" + presentationTemplate);
                if (presentationTemplate != null && !presentationTemplate.equals("")) {
                    Map parameters = new HashMap();
                    parameters.put("event", this.event);
                    parameters.put("this", this);

                    StringWriter tempString = new StringWriter();
                    PrintWriter pw = new PrintWriter(tempString);
                    new VelocityTemplateProcessor().renderTemplate(parameters, pw, presentationTemplate);
                    String renderedString = tempString.toString();
                    setRenderedString(renderedString);
                    return Action.SUCCESS + "RenderedTemplate";
                }

                return "successPublicCustom";
            } else {
                throw new ObjectNotFoundException("EventId was empty", "");
            }
        } catch (ObjectNotFoundException o) {
            log.warn("Det fanns inget evenemang med id " + this.eventId + ":" + o.getMessage());
            setError("Det fanns inget evenemang med id " + this.eventId, o);
        } catch (Exception e) {
            log.error("Ett fel uppstod nr evenemang med id " + this.eventId + " skulle visas:" + e.getMessage(),
                    e);
            setError("Ett fel uppstod nr evenemang med id " + this.eventId + " skulle visas.", e);
        }

        return Action.ERROR;
    }

    public List getEventCategories(EventTypeCategoryAttribute categoryAttribute) {
        //Timer timer = new Timer();

        List categories = new ArrayList();

        Iterator i = this.event.getEventCategories().iterator();
        while (i.hasNext()) {
            EventCategory eventCategory = (EventCategory) i.next();
            if (eventCategory.getEventTypeCategoryAttribute().getId().equals(categoryAttribute.getId()))
                categories.add(eventCategory.getCategory());
        }

        //timer.printElapsedTime("getEventCategories took");

        return categories;
    }

    public Event getEvent() {
        return event;
    }

    public void setEvent(Event event) {
        this.event = event;
    }

    public Long getEventId() {
        return eventId;
    }

    public void setEventId(Long eventId) {
        this.eventId = eventId;
    }

    public Long getCalendarId() {
        return calendarId;
    }

    public String getMode() {
        return mode;
    }

    public void setMode(String mode) {
        this.mode = mode;
    }

    /*
    public List getInfogluePrincipals()
    {
    return infogluePrincipals;
    }
    */
    public List getParticipatingPrincipals() {
        return participatingPrincipals;
    }

    public List getRemainingCategories() {
        return remainingCategories;
    }

    public List getRemainingLocations() {
        return remainingLocations;
    }

    public List getSelectedCategories() {
        return selectedCategories;
    }

    public List getSelectedLocations() {
        return selectedLocations;
    }

    public List getCategories() {
        return categories;
    }

    public List getLocations() {
        return locations;
    }

    public List getYesOrNo() {
        return yesOrNo;
    }

    public void setForceRequestEventId(Boolean forceRequestEventId) {
        this.forceRequestEventId = forceRequestEventId;
    }

    public String[] getCategoryAttributeValues(Long key) {
        String[] value = (String[]) ((Map) ServletActionContext.getRequest().getSession()
                .getAttribute("categoryAttributes")).get(key.toString());
        return value;
    }

    public Boolean getEventCopy() {
        return eventCopy;
    }

    public void setEventCopy(Boolean eventCopy) {
        this.eventCopy = eventCopy;
    }

    public List getEntryFormEventTypes() {
        return entryFormEventTypes;
    }

    public EventType getEntryFormEventType() {
        return entryFormEventType;
    }

    public List getAttributes() {
        return attributes;
    }

    public List getAvailableLanguages() {
        return availableLanguages;
    }

    public Long getVersionLanguageId() {
        return versionLanguageId;
    }

    public void setVersionLanguageId(Long versionLanguageId) {
        this.versionLanguageId = versionLanguageId;
    }

    public EventVersion getEventVersion() {
        return eventVersion;
    }

    public void setEventVersion(EventVersion eventVersion) {
        this.eventVersion = eventVersion;
    }

    public EventVersion getAlternativeEventVersion() {
        return alternativeEventVersion;
    }

    public Boolean getSkipLanguageTabs() {
        return skipLanguageTabs;
    }

    public void setSkipLanguageTabs(Boolean skipLanguageTabs) {
        this.skipLanguageTabs = skipLanguageTabs;
    }

}