Subversion Repositories bacoAlunos

Rev

Rev 1945 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web.controllers.announcements;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.AddRolesController;
import pt.estgp.estgweb.web.form.announcements.AnnouncementsForm;
import pt.estgp.estgweb.utils.DatesWebUtils;
import pt.estgp.estgweb.web.utils.DomainUtils;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterExpressionException;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.List;

/**
 * @author Jorge Machado
 * @author Fabio Velez
 * @date 26/Fev/2008
 * @time 18:01:54
 * @see pt.estgp.estgweb.web
 */

public class AnnouncementsController extends AddRolesController
{

    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(AnnouncementsController.class);


    public ActionForward save(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {
            1.5.0/docs/api/java/awt/Image.html">Image i2 = null;
            1.5.0/docs/api/java/awt/Image.html">Image i = null;
            AnnouncementsForm announcementForm = (AnnouncementsForm) form;
            AnnouncementView view = announcementForm.getAnnouncementView();
            1.5.0/docs/api/java/lang/String.html">String finalUrl = "";
            if (announcementForm.getUrl() != null && announcementForm.getUrl().length() > 0)
            {
                finalUrl = announcementForm.getUrlProtocol() + announcementForm.getUrl();
                view.setUrl(finalUrl);
            }
            else
            {
                view.setUrl(null);
            }

            if (announcementForm.getBigImage() != null && announcementForm.getBigImage().getFileSize() != 0)
            {
                FormFile image = announcementForm.getBigImage();
                i = DomainUtils.getNewImage(image,view.getTitle());
            }

            if (announcementForm.getSmallImage() != null && announcementForm.getSmallImage().getFileSize() != 0)
            {
                FormFile smallImage = announcementForm.getSmallImage();
                i2 = DomainUtils.getNewImage(smallImage,view.getTitle());
            }

            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"object"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{view, i, i2};
            boolean newAnnouncement = true;
            if (view.getId() > 0)
                newAnnouncement = false;

            AnnouncementView aV;
            if(newAnnouncement)
                aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request, response), "CreateAnnouncement", args, names);
            else
                aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request, response), "EditAnnouncement", args, names);

            announcementForm.setAnnouncementView(aV);
            1.5.0/docs/api/java/lang/String.html">String user = "";
            1.5.0/docs/api/java/lang/String.html">String fromAction = "";
            if(request.getParameter("from")!=null && request.getParameter("from").length() > 0)
            {
                if(UserSessionProxy.loadUserSessionFromRequest(request).getUser()!=null)
                {
                    user="/user";
                }

                fromAction = "From" + request.getParameter("from");
            }



            if (newAnnouncement)
                addMessage(request,"announcement.created.success", request.getContextPath()+user, fromAction ,"" + aV.getId(), view.getTitle());
            else
                addMessage(request,"announcement.edited.success", request.getContextPath()+user, fromAction,"" + aV.getId(), view.getTitle());
            return mapping.findForward("success");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            throw e;
        }
    }

    public ActionForward edit(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {
            UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{new 1.5.0/docs/api/java/lang/Long.html">Long(request.getParameter("id"))};
            AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request, response), "LoadEditAnnouncement", args, names);
            AnnouncementsForm announcementsForm = (AnnouncementsForm) form;
            announcementsForm.setAnnouncementView(aV);
            announcementsForm.setStartDate(DatesWebUtils.getStringFromDate(aV.getStartDate()));
            announcementsForm.setExpireDate(DatesWebUtils.getStringFromDate(aV.getExpireDate()));
            announcementsForm.setAnnouncementDate(DatesWebUtils.getStringFromDate(aV.getAnnouncementDate()));
            announcementsForm.setSelectedRoles(aV.getTargetRoles());
            if(aV.getUrl() != null)
            {
                int indexProtocol = aV.getUrl().indexOf("://");
                if(indexProtocol > 0)
                {
                    announcementsForm.setUrl(aV.getUrl().substring(indexProtocol+3));
                    announcementsForm.setUrlProtocol(aV.getUrl().substring(0,indexProtocol+3));
                }
                else
                {
                    announcementsForm.setUrlProtocol("");
                    announcementsForm.setUrl(aV.getUrl());
                }
            }
            sess.put(TARGET_ROLES_KEY, (1.5.0/docs/api/java/io/Serializable.html">Serializable) aV.getTargetRoles());
            sess.serialize(request,response);
            return mapping.getInputForward();
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            throw e;
        }
    }

    public ActionForward delete(ActionMapping mapping,
                                ActionForm form ,
                                HttpServletRequest request,
                                HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {

            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{new 1.5.0/docs/api/java/lang/Long.html">Long(request.getParameter("id"))};
            1.5.0/docs/api/java/lang/Boolean.html">Boolean status= (1.5.0/docs/api/java/lang/Boolean.html">Boolean) sm.execute(RequestUtils.getRequester(request, response),"DeleteAnnouncement",args,names);
            if(status)
            {
                addMessage(request,"announcement.deleted.success","" + request.getParameter("id"));
                return mapping.findForward("success");
            }
            else
            {
                addMessage(request,"announcement.deleted.fail","" + request.getParameter("id"));
                return mapping.findForward("success");
            }
        }
        catch(FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e,e);
            throw e;
        }

    }

    public ActionForward list(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{};
            List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request, response), "LoadTargetMaxAnnouncements", args, names);
            request.setAttribute("Announcements", announcementViews);
            return mapping.findForward("success");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            throw e;
        }
    }

    protected AnnouncementView load(HttpServletRequest request, HttpServletResponse response, long id)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException
    {
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{id};
        return (AnnouncementView) sm.execute(RequestUtils.getRequester(request, response), "LoadAnnouncementView", args, names);
    }

    public ActionForward load(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {
            AnnouncementsForm announcementForm = (AnnouncementsForm) form;

            1.5.0/docs/api/java/lang/String.html">String id = request.getParameter("id");
            AnnouncementView announcementView = load(request,response,1.5.0/docs/api/java/lang/Long.html">Long.parseLong(id));
            request.setAttribute("Announcement", announcementView);
            return mapping.findForward("load");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            throw e;
        }
    }

}