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
;
}
}
}