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