Subversion Repositories bacoAlunos

Rev

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

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

import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.web.form.announcements.AnnouncementsForm;
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.AddRolesController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.AnnouncementView;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.*;
import java.util.List;
import java.util.Date;

/**
 * @author Jorge Machado
 * @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);

    private static final 1.5.0/docs/api/java/lang/String.html">String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;

    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().equals(""))
            {
                finalUrl=announcementForm.getUrlProtocol()+announcementForm.getUrl();
                view.setUrl(finalUrl);
            }
            else
            {
                view.setUrl(null);
            }

            if(announcementForm.getBigImage().getFileSize()!= 0)
            {
                FormFile bigImage = announcementForm.getBigImage();
                5+0%2Fdocs%2Fapi+InputStream">InputStream stream = bigImage.getInputStream();
                1.5.0/docs/api/java/io/ByteArrayOutputStream.html">ByteArrayOutputStream b = new 1.5.0/docs/api/java/io/ByteArrayOutputStream.html">ByteArrayOutputStream();
                int readedBytes;
                byte[] buf = new byte[1024];
                while((readedBytes = stream.read(buf)) > 0)
                {
                    b.write(buf,0,readedBytes);
                }
                b.close();
                i = DomainObjectFactory.createImageImpl();
                i.setImage(b.toByteArray());
                i.setContentType(bigImage.getContentType());
                i.setSize(bigImage.getFileSize());
                i.setDescription(view.getTitle());
                i.setName(bigImage.getFileName());
                i.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());

            }

            if(announcementForm.getSmallImage().getFileSize()!= 0)
            {
                FormFile smallImage = announcementForm.getSmallImage();
                5+0%2Fdocs%2Fapi+InputStream">InputStream stream2 = smallImage.getInputStream();
                1.5.0/docs/api/java/io/ByteArrayOutputStream.html">ByteArrayOutputStream b2 = new 1.5.0/docs/api/java/io/ByteArrayOutputStream.html">ByteArrayOutputStream();
                int readedBytes2;
                byte[] buf2 = new byte[1024];
                while((readedBytes2 = stream2.read(buf2)) > 0)
                {
                    b2.write(buf2,0,readedBytes2);
                }
                b2.close();
                i2 = DomainObjectFactory.createImageImpl();
                i2.setImage(b2.toByteArray());
                i2.setDescription(view.getTitle());
                i2.setContentType(smallImage.getContentType());
                i2.setSize(smallImage.getFileSize());
                i2.setName(smallImage.getFileName());
                i2.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
            }

            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};
            AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"CreateAnnouncement",args,names);
            addMessage(request,"announcement.edited.success","" + aV.getId());
            return mapping.findForward("success");
            /*AnnouncementsForm announcementsForm = (AnnouncementsForm) form;
            if(announcementsForm.getAnnouncementView().getId() <= 0)
            {
                Announcement a = DomainObjectFactory.createAnnouncementImpl();
                announcementsForm.getAnnouncementView().persistViewInObject(a);
                IServiceManager sm = ServiceManager.getInstance();

                if(announcementsForm.getBigImage().getFileSize()!= 0)
                {
                    FormFile bigImage = announcementsForm.getBigImage();
                    InputStream stream = bigImage.getInputStream();
                    ByteArrayOutputStream b = new ByteArrayOutputStream();
                    int readedBytes;
                    byte[] buf = new byte[1024];
                    while((readedBytes = stream.read(buf)) > 0)
                    {
                        b.write(buf,0,readedBytes);
                    }
                    b.close();
                    Image i = DomainObjectFactory.createImageImpl();
                    i.setImage(b.toByteArray());
                    i.setContentType(bigImage.getContentType());
                    i.setSize(bigImage.getFileSize());
                    i.setDescription(a.getTitle());
                    i.setName(bigImage.getFileName());
                    i.setSaveDate(new Date());
                    a.setBigImage(i);
                }

                if(announcementsForm.getSmallImage().getFileSize()!= 0)
                {
                    FormFile smallImage = announcementsForm.getSmallImage();
                    InputStream stream2 = smallImage.getInputStream();
                    ByteArrayOutputStream b2 = new ByteArrayOutputStream();
                    int readedBytes2;
                    byte[] buf2 = new byte[1024];
                    while((readedBytes2 = stream2.read(buf2)) > 0)
                    {
                        b2.write(buf2,0,readedBytes2);
                    }
                    b2.close();
                    Image i2 = DomainObjectFactory.createImageImpl();
                    i2.setImage(b2.toByteArray());
                    i2.setDescription(a.getTitle());
                    i2.setContentType(smallImage.getContentType());
                    i2.setSize(smallImage.getFileSize());
                    i2.setName(smallImage.getFileName());
                    i2.setSaveDate(new Date());
                    a.setSmallImage(i2);
                }

                String finalUrl="";
                if(!announcementsForm.getUrl().equals(""))
                {
                    finalUrl=announcementsForm.getUrlProtocol()+announcementsForm.getUrl();
                    a.setUrl(finalUrl);
                }
                else
                {
                    a.setUrl(finalUrl);
                }

                String[] names = new String[]{"object"};
                Object[] args = new Object[]{a};
                AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"CreateAnnouncement",args,names);
                addMessage(request,"announcement.created.success","" + aV.getId());
                return mapping.findForward("success");
            }
            else
            {

                AnnouncementView a = announcementsForm.getAnnouncementView();
                IServiceManager sm = ServiceManager.getInstance();
                String[] names = new String[]{"object"};
                Object[] args = new Object[]{a};
                AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"CreateAnnouncement",args,names);
                addMessage(request,"announcement.edited.success","" + aV.getId());
                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;
        }
    }

    //TODO verificar problema com com dispatch=edit
    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);
            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),"LoadEditAnnouncement",args,names);
            AnnouncementsForm announcementsForm = (AnnouncementsForm) form;
            announcementsForm.setAnnouncementView(aV);
            announcementsForm.setStartDate(DatesUtils.getStringFromDate(aV.getStartDate()));
            announcementsForm.setExpireDate(DatesUtils.getStringFromDate(aV.getExpireDate()));
            announcementsForm.setSelectedRoles(aV.getTargetRoles());
            sess.put(TARGET_ROLES_KEY, (1.5.0/docs/api/java/io/Serializable.html">Serializable) aV.getTargetRoles());
            sess.serialize(request);
            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 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),"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;
        }
    }

    public ActionForward load(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/lang/String.html">String id = request.getParameter("id");
            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(id)};
            AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"LoadAnnouncementView",args,names);
            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;
        }
    }

}