Package org.opencustomer.webapp.module.calendar.event

Source Code of org.opencustomer.webapp.module.calendar.event.PageParticipiantsAction

/*******************************************************************************
* ***** BEGIN LICENSE BLOCK Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* The Original Code is the OpenCustomer CRM.
*
* The Initial Developer of the Original Code is Thomas Bader (Bader & Jene
* Software-Ingenieurb�ro). Portions created by the Initial Developer are
* Copyright (C) 2005 the Initial Developer. All Rights Reserved.
*
* Contributor(s): Thomas Bader <thomas.bader@bader-jene.de>
*
* ***** END LICENSE BLOCK *****
*/

package org.opencustomer.webapp.module.calendar.event;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessages;
import org.hibernate.HibernateException;
import org.opencustomer.db.dao.calendar.EventCalendarDAO;
import org.opencustomer.db.vo.calendar.CalendarVO;
import org.opencustomer.db.vo.calendar.EventCalendarVO;
import org.opencustomer.db.vo.calendar.EventPersonVO;
import org.opencustomer.db.vo.calendar.EventVO;
import org.opencustomer.db.vo.system.UserVO;
import org.opencustomer.framework.util.EnumUtility;
import org.opencustomer.framework.webapp.panel.Action;
import org.opencustomer.framework.webapp.panel.Panel;
import org.opencustomer.webapp.Globals;
import org.opencustomer.webapp.action.EditPageAction;

public class PageParticipiantsAction extends EditPageAction<PageParticipiantsForm>
{
    private static Logger log = Logger.getLogger(PageParticipiantsAction.class);
   
    @Override
    public void writeForm(PageParticipiantsForm form, ActionMessages errors, HttpServletRequest request)
    {       
        EventVO event = (EventVO) getPanel().getEntity();
       
        form.setUnknownParticipiants(event.getUnknownParticipiants());
       
        updateView(form, errors, request);
       
        List<EventPersonVO> eventPersons = (List<EventPersonVO>)getPanel().getAttribute("eventPersons");
       
        form.getInvitationStatus().clear();
        for(EventPersonVO eventPerson : eventPersons)
            form.getInvitationStatus().add(eventPerson.getInvitationStatus().toString());

        if(log.isDebugEnabled())
            log.debug("write form (form:"+form.getInvitationStatus().size()+"/panel:"+eventPersons.size()+")");
    }
   
    @Override
    public void readForm(PageParticipiantsForm form, ActionMessages errors, HttpServletRequest request)
    {
        EventVO event = (EventVO) getPanel().getEntity();
       
        event.setUnknownParticipiants(form.getUnknownParticipiants());
       
        List<EventPersonVO> eventPersons = (List<EventPersonVO>)getPanel().getAttribute("eventPersons");
        for(int i=0; i<form.getInvitationStatus().size(); i++)
        {
            String value = form.getInvitationStatus(i);
            eventPersons.get(i).setInvitationStatus(EnumUtility.valueOf(EventPersonVO.InvitationStatus.class, form.getInvitationStatus(i)));   
        }
       
        if(log.isDebugEnabled())
            log.debug("read form (form:"+form.getInvitationStatus().size()+"/panel:"+eventPersons.size()+")");
    }

    protected void updateView(PageParticipiantsForm form, ActionMessages errors, HttpServletRequest request) {
        if(log.isDebugEnabled())
            log.debug("post operations");
       
        EventVO event = (EventVO)getPanel().getEntity();
       
        ArrayList<EventCalendarVO> eventCalendars = new ArrayList<EventCalendarVO>(event.getEventCalendars());
        Collections.sort(eventCalendars, Utils.getComparatorForEventCalendar());
        getPanel().setAttribute("eventCalendars", eventCalendars);
       
        ArrayList<EventPersonVO> eventPersons = new ArrayList<EventPersonVO>(event.getEventPersons());
        Collections.sort(eventPersons, Utils.getComparatorForEventPerson());
        getPanel().setAttribute("eventPersons", eventPersons);
    }
   
    @Override
    public ActionForward handleCustomAction(ActionMapping mapping, PageParticipiantsForm form, ActionMessages errors, HttpServletRequest request)
    {
        if (log.isDebugEnabled())
            log.debug("handle custom action");
       
        if(form.getDoAddPerson().isSelected())
        {
            if (log.isDebugEnabled())
                log.debug("add person");
           
            return mapping.findForward("addPerson");
        }
        else if(form.getDoRemovePerson() > 0)
        {
            if (log.isDebugEnabled())
                log.debug("remove person with id: "+form.getDoRemovePerson());
           
            Set<EventPersonVO> eventPersons = ((EventVO)getPanel().getEntity()).getEventPersons();
           
            int pos = 0;
            Iterator<EventPersonVO> it = eventPersons.iterator();
            while(it.hasNext()) {
                if(it.next().getPerson().getId().intValue() == form.getDoRemovePerson()) {
                    it.remove();
                    form.getInvitationStatus().remove(pos);
                    break;
                }
                pos++;
            }
           
            return Panel.getForward(getPanel().getActivePage().getAction(), request);
        }
        else if(form.getDoJumpPerson() > 0)
        {
            if (log.isDebugEnabled())
                log.debug("jump to person with id: "+form.getDoJumpPerson());
           
            request.setAttribute("external_person_id", form.getDoJumpPerson());
           
            return Panel.getForward(getPanel().getAction(Action.Type.SAVE).getAction(), request);
        }
        else if(form.getDoAddUser().isSelected())
        {
            if (log.isDebugEnabled())
                log.debug("add person");
           
            return mapping.findForward("addUser");
        }
        else if(form.getDoRemoveUser() > 0)
        {
            if (log.isDebugEnabled())
                log.debug("remove user with id: "+form.getDoRemoveUser());
           
            Set<EventCalendarVO> eventCalendars = ((EventVO)getPanel().getEntity()).getEventCalendars();
           
            Iterator<EventCalendarVO> it = eventCalendars.iterator();
            while(it.hasNext()) {
                int userId = it.next().getCalendar().getUser().getId().intValue();
                if(userId == form.getDoRemoveUser()) {
                    it.remove();
                    break;
                }
            }
           
            return Panel.getForward(getPanel().getActivePage().getAction(), request);
        }
        else if(form.getDoJumpUser() > 0)
        {
            if (log.isDebugEnabled())
                log.debug("jump to person with id: "+form.getDoJumpUser());
           
            request.setAttribute("external_user_id", form.getDoJumpUser());
           
            return Panel.getForward(getPanel().getAction(Action.Type.SAVE).getAction(), request);
        }
        else if(form.getDoStatusNew().isSelected()
                || form.getDoStatusAccept().isSelected()
                || form.getDoStatusReject().isSelected()
                || form.getDoStatusDelete().isSelected()) {
            if (log.isDebugEnabled())
                log.debug("change status");
           
            UserVO user = (UserVO)request.getSession().getAttribute(Globals.USER_KEY);
            CalendarVO calendar = (CalendarVO)getPanel().getAttribute("calendar");
            EventCalendarVO userEventCalendar = null;
           
            List<EventCalendarVO> eventCalendars = (List<EventCalendarVO>)getPanel().getAttribute("eventCalendars");
            for(EventCalendarVO eventCalendar : eventCalendars) {
                if(calendar.equals(eventCalendar.getCalendar())
                        && !eventCalendar.getParticipiantType().equals(EventCalendarVO.ParticipiantType.HOST)) {
                    userEventCalendar = eventCalendar;
                    break;
                }
            }
           
            if(userEventCalendar != null) {
                if(form.getDoStatusNew().isSelected())
                    userEventCalendar.setInvitationStatus(EventCalendarVO.InvitationStatus.NEW);
                else if(form.getDoStatusAccept().isSelected())
                    userEventCalendar.setInvitationStatus(EventCalendarVO.InvitationStatus.ACCEPTED);
                else if(form.getDoStatusReject().isSelected())
                    userEventCalendar.setInvitationStatus(EventCalendarVO.InvitationStatus.REJECTED);
                else if(form.getDoStatusDelete().isSelected())
                    userEventCalendar.setInvitationStatus(EventCalendarVO.InvitationStatus.DELETED);
               
                if(!getPanel().isEditable()) {
                    if(log.isDebugEnabled())
                        log.debug("save changes to event calendar without requesting save: "+userEventCalendar);
                   
                    try {
                        new EventCalendarDAO().update(userEventCalendar);
                    } catch(HibernateException e) {
                        log.error("could not save eventCalendar", e);
                    }
                }
            }
           
            return null;
        } else {
            if (log.isDebugEnabled())
                log.debug("no custom action found");
           
            return null;
        }
    }
}
TOP

Related Classes of org.opencustomer.webapp.module.calendar.event.PageParticipiantsAction

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.