Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 44 → Rev 53

/impl/conf/language/MessageResourcesAnnouncements.properties
17,6 → 17,7
announcement.target.roles=Pessoas a quem destina
announcement.created.success=Anúncio criado com sucesso
announcement.edited.success=Anúncio alterado com sucesso
announcement.status=Válido
 
 
announcements.type.news=Notícias
25,4 → 26,6
 
announcement.protocol.error.http=http
announcement.protocol.error.https=https
announcement.protocol.error.ftp=ftp
announcement.protocol.error.ftp=ftp
 
announcements.loading=carregando anúncio...
/impl/conf/language/MessageResources.properties
72,13 → 72,15
user.role.worker=Funcionário
user.role.invited=Convidado
user.role.services=Serviços
user.role.administrativeCouncil=Concelho Administrativo
user.role.administrativeCouncil=Concelho Directivo
user.role.representativeCouncil=Concelho de Representantes
user.role.scientificCouncil=Concelho Científico
user.role.erasmusCouncil=Concelho Erasmus
user.role.pedagogicCouncil=Concelho Pedagógico
user.role.courseCoordinator=Coordenador
user.role.futureStudent=Futuros Alunos
user.role.oldStudent=Antigos Alunos
user.role.sudentAssociation=Associação de Estudantes
 
 
#Filter Errors
211,6 → 213,8
submit=Entrar
confirm=Confirmar
add=Adicionar
yes=Sim
no=Não
 
 
#Cursos
/impl/conf/WEB-INF/tlds/estgweb.tld
31,8 → 31,8
<tagclass>pt.estgp.estgweb.web.tags.IsAdminTag</tagclass>
</tag>
<tag>
<name>isAdmin</name>
<tagclass>pt.estgp.estgweb.web.tags.IsAdminTag</tagclass>
<name>isNotAdmin</name>
<tagclass>pt.estgp.estgweb.web.tags.IsNotAdminTag</tagclass>
</tag>
<tag>
<name>pageUrlStat</name>
/impl/conf/WEB-INF/web.xml
111,6 → 111,10
<servlet-name>tmpStream</servlet-name>
<servlet-class>pt.estgp.estgweb.web.TmpStream</servlet-class>
</servlet>
<servlet>
<servlet-name>imageStream</servlet-name>
<servlet-class>pt.estgp.estgweb.web.ImageStream</servlet-class>
</servlet>
 
<!--MAPPINGS-->
<servlet-mapping>
137,6 → 141,10
<servlet-name>tmpStream</servlet-name>
<url-pattern>/tmpStream/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>imageStream</servlet-name>
<url-pattern>/imageStream/*</url-pattern>
</servlet-mapping>
 
<!--START FILES-->
<welcome-file-list>
/impl/conf/app.properties
1,5 → 1,5
tmp.dir=@tmp.dir@
use.ldap=false
use.ldap=true
system.language=pt
#Session Settings
user.session.timeout.minutes=15
42,7 → 42,10
user.role.16=pedagogicCouncil
user.role.17=erasmusCouncil
user.role.18=courseCoordinator
user.role.19=sudentAssociation
user.role.20=representativeCouncil
 
 
#########################################################################
#
# Modules
52,21 → 55,32
#########################################################################
# Announcements
#
announcements.text.summary.size=250
announcements.automatic.validation.role.1=all
announcements.automatic.validation.role.2=admin
announcements.automatic.validation.role.3=ci
announcements.automatic.validation.role.4=administrativeCouncil
 
announcements.max.visible=10
announcements.top.flash.news.timeout.miliseconds=7000
 
announcements.type.0=news
announcements.type.1=top.flash.news
announcements.type.2=bottom.flash.news
 
#role images for announcements
announcement.default.img=/imgs/rolesIcons/estg.gif
role.admin.img=/imgs/rolesIcons/ae.gif
announcement.default.img=/imgs/rolesIcons/nd.gif
role.admin.img=/imgs/rolesIcons/estg.gif
role.sudentAssociation.img=/imgs/rolesIcons/ae.gif
role.administrativeCouncil.img=/imgs/rolesIcons/c_directivo.gif
role.scientificCouncil.img=/imgs/rolesIcons/c_cientifico.gif
role.representativeCouncil.img=/imgs/rolesIcons/ass_repre.gif
role.teacher.eg.img=/imgs/rolesIcons/ne.gif
role.teacher.dg.img=/imgs/rolesIcons/ngm.gif
role.services.img=/imgs/rolesIcons/secretaria.gif
 
 
 
#########################################################################
# Link Analysis
#
/impl/conf/berserk/sd.xml
152,5 → 152,15
<chain name="Logger"/>
</filterChains>
</service>
<service>
<name>LoadTopFlashNewsIterate</name>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTopFlashNewsIterateService</implementationClass>
<description>Load an Announcement one flash News</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
</serviceDefinitions>
/impl/src/java/jomm/dao/impl/AbstractDao.java
397,7 → 397,8
* using the current value of the identifier property if the assigned
* generator is used.)
*/
public final Serializable save(CLAZZ obj) {
public Serializable save(CLAZZ obj)
{
try {
return (Serializable) getCurrentSession().save(obj);
}
/impl/src/java/pt/estgp/estgweb/Globals.java
27,5 → 27,6
public static final int NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX=5;
public static final int NUMBER_ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_INDEX=1;
public static final int NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX=2;
public static final int ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_TIMEOUT=ConfigProperties.getIntProperty("announcements.top.flash.news.timeout.miliseconds");
 
}
/impl/src/java/pt/estgp/estgweb/services/announcements/LoadTopFlashNewsIterateService.java
New file
0,0 → 1,70
package pt.estgp.estgweb.services.announcements;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.Globals;
import org.apache.log4j.Logger;
 
import java.util.List;
import java.util.ArrayList;
 
/**
* Created by IntelliJ IDEA.
* User: Fabio
* Date: 28/Mar/2008
* Time: 11:42:28
* To change this template use File | Settings | File Templates.
*/
public class LoadTopFlashNewsIterateService implements IService
{
 
private static final String flashNewsIterator = "flashNewsIterator";
 
private static final Logger logger = Logger.getLogger(LoadTopFlashNewsIterateService.class);
 
 
public AnnouncementView run(UserSession sess)
{
Integer iterator = (Integer) ((UserSessionImpl)sess).get(flashNewsIterator);
if(iterator == null)
iterator = 0;
 
int size = DaoFactory.getAnnouncementDaoImpl().countAnnouncements(1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS);
iterator = iterator % size;
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(iterator, 1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS);
iterator++;
((UserSessionImpl)sess).put(flashNewsIterator,iterator);
 
if(announcements == null)
return null;
logger.info("Loading announcement top flash iterator");
if(announcements.size() > 0)
{
AnnouncementView announcementView = new AnnouncementView(announcements.get(0));
return announcementView;
}
return null;
}
 
//tens de ter cuidado com o nome que metes no servico, tavas a meter LoadRoleTypeMaxAnnouncements e no XML estava LoadRoleTypeMaxAnnouncementsService, o nome nao tem de ser igual a classe mas convem, por norma eu tenho tirado a palavra service do nome do servico
//ou seja esta LoadRoleTypeMaxAnnouncements para a classe LoadRoleTypeMaxAnnouncementsService logo no sm.execute tem de estar LoadRoleTypeMaxAnnouncements
//mudei a propriedade log.file build.properties para log.file=${data.dir}/estgweb.log assim já não dá o erro do log
//adicionei as libs jsp-api.jar da pasta tomcat/common/lib para não te falhar os imports nas TAGS aqui no Intellij
//adiciona sempre todos os jars da common aqui no Intellij faltava-te o activation.jar do jaxb e era preciso para o MimeTypeGuesser
public static void main(String[] args) throws Throwable {
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] arguments = new Object[]{};
AnnouncementView announcementView = (AnnouncementView) sm.execute("testecookie", "LoadTopFlashNewsIterate",arguments,names);
System.out.println("-->"+announcementView.getTitle());
 
 
}
}
/impl/src/java/pt/estgp/estgweb/domain/UserSessionImpl.java
55,13 → 55,13
sessionObjectId.setKeyId(key);
sessionObjectId.setUserSession(this);
sessionObject.setId(sessionObjectId);
getObjects().add(sessionObject);
}
ByteArrayOutputStream os = new ByteArrayOutputStream();
XMLEncoder xenc = new XMLEncoder(os);
xenc.writeObject(obj);
xenc.close();
sessionObject.setXmlObject(os.toString());
getObjects().add(sessionObject);
}
 
/**
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java
4,6 → 4,7
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.AnnouncementImpl;
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.utils.ConfigProperties;
 
import java.util.List;
import java.util.Date;
17,6 → 18,8
*/
public class AnnouncementView extends DomainObjectView
{
public static final int TEXT_SUMMARY_SIZE = ConfigProperties.getIntProperty("announcements.text.summary.size");
 
private long id;
private String title;
private String text;
190,4 → 193,11
public void setCounter(Integer counter) {
this.counter = counter;
}
 
public String getTextSummary()
{
if(getText().length() > TEXT_SUMMARY_SIZE)
return getText().substring(0,getText().substring(0,TEXT_SUMMARY_SIZE).lastIndexOf(' ')) + "...";
return getText();
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java
54,36 → 54,29
criteria.add(co)
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate")))
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate")))
.add(eq("status",true))
.setMaxResults(maxAnnouncements)
.addOrder(Order.desc("saveDate"));
return criteria.list();
}
 
/*public List<Announcement> findAnnouncements(int maxAnnouncements,String targetRole,String type)
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String type)
{
if(targetRole == null)
{
targetRole="all";
}
Criteria criteria = createCriteria();
Criterion coRole = like("targetRoles","%" + targetRole + "%");
Criterion coType=eq("type",type) ;
return findAnnouncements(0,maxAnnouncements,roles, type);
}
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements,List<String> roles,String type)
{
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles,type);
return criteria.setFirstResult(maxAnnouncements*startPage).list();
}
 
public int countAnnouncements(int maxAnnouncements,List<String> roles,String type)
{
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles,type);
return criteria.list().size();
}
 
MyCalendar cNow = new MyCalendar();
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(),cNow.getMonth(),cNow.getDay());
Date now = calendarWithOutTime.getTime();
criteria.add(coRole)
.add(coType)
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate")))
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate")))
.add(like("targetRoles","%" + targetRole + "%"))
.setMaxResults(maxAnnouncements)
.addOrder(Order.desc("saveDate"));
return criteria.list();
}*/
 
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String type)
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements,List<String> roles,String type)
{
if(roles == null)
{
108,11 → 101,13
.add(coType)
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate")))
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate")))
.add(eq("status",true))
.setMaxResults(maxAnnouncements)
.addOrder(Order.desc("saveDate"));
return criteria.list();
return criteria;
}
 
 
public static void main(String[] args)
{
AbstractDao.getCurrentSession().beginTransaction();
127,7 → 122,7
GenericUser us = a.getOwner();
List<String> userRoles=us.getOwnerRoles();
for(String role:userRoles){
System.out.println("--->"+role);
System.out.println("--->"+role);
}
System.out.println(a.getSaveDate() + ":" + a.getTitle() + " " + a.getOwner().getName() );
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserDaoImpl.java
8,8 → 8,11
 
 
import java.util.List;
import java.util.Date;
import java.io.Serializable;
 
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.Announcement;
 
/**
* @author Jorge Machado
17,7 → 20,7
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class UserDaoImpl extends UserDao
public class UserDaoImpl<Announcement> extends UserDao
{
public static UserDaoImpl getInstance()
{
117,4 → 120,16
}
}
 
public Serializable save(User obj)
{
try {
obj.setSaveDate(new Date());
return super.save(obj);
}
catch (HibernateException e) {
throw new DaoException(e);
}
 
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ImageDaoImpl.java
1,5 → 1,14
package pt.estgp.estgweb.domain.dao.impl;
 
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import static org.hibernate.criterion.Restrictions.*;
import pt.estgp.estgweb.domain.Image;
 
import java.util.List;
 
import jomm.dao.impl.AbstractDao;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
/impl/src/java/pt/estgp/estgweb/web/form/announcements/AnnouncementsForm.java
1,21 → 1,18
package pt.estgp.estgweb.web.form.announcements;
 
import org.apache.struts.action.ActionForm;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.form.ApplicationForm;
import pt.estgp.estgweb.web.utils.DatesUtils;
 
import java.util.ArrayList;
import java.util.List;
 
import jomm.utils.MessageResources;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
25,6 → 22,9
public class AnnouncementsForm extends ApplicationForm
{
 
private static final Logger logger = Logger.getLogger(AnnouncementsForm.class);
private static final String TARGET_ROLES_KEY = "targetRoles";
 
private AnnouncementView announcementView;
 
private String role;
38,9 → 38,9
private String targetPrioritiesStr;
private Integer counter;
private List<String> selectedRoles;
 
 
 
private static List<String> targetRoles = ConfigProperties.getListValues("user.role");
private static List<String> announcementTypes = ConfigProperties.getListValues("announcements.type");
private static List<String> targetPriorities = ConfigProperties.getListValues("announcements.priority");
188,15 → 188,34
 
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest)
{
UserSessionImpl userSession = null;
try
{
userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest(httpServletRequest);
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY);
if(roles == null || roles.size() == 0)
{
roles = new ArrayList<String>();
roles.add(targetRolesStr);
announcementView.setTargetRoles(roles);
}
}
catch (Throwable throwable)
{
logger.error(throwable,throwable);
}
 
 
 
if(httpServletRequest.getParameter("dispatch").equals("addRole") || httpServletRequest.getParameter("dispatch").equals("removeRole"))
return null;
ActionErrors errors = new ActionErrors();
if(url.contains("http://"))
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.http","announcement.linkAnnouncement");
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.http","announcement.linkAnnouncement");
if(url.contains("https://"))
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.https","announcement.linkAnnouncement");
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.https","announcement.linkAnnouncement");
if(url.contains("ftp://"))
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.ftp","announcement.linkAnnouncement");
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.ftp","announcement.linkAnnouncement");
if(announcementView.getTitle() == null || announcementView.getTitle().trim().length() == 0)
addMessageWithKeys(errors,httpServletRequest,"errors.required","announcement.title");
if(announcementView.getText() == null || announcementView.getText().trim().length() == 0)
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/AnnouncementsController.java
38,7 → 38,7
{
 
private static final Logger logger = Logger.getLogger(AnnouncementsController.class);
 
private static final String TARGET_ROLES_KEY = "targetRoles";
public ActionForward save(ActionMapping mapping,
54,10 → 54,6
if(announcementsForm.getAnnouncementView().getId() <= 0)
{
Announcement a = DomainObjectFactory.createAnnouncementImpl();
UserSessionImpl userSession = null;
userSession = (UserSessionImpl) request.getAttribute(Globals.USER_SESSION_KEY);
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY);
announcementsForm.getAnnouncementView().setTargetRoles(roles);
announcementsForm.getAnnouncementView().persistViewInObject(a);
IServiceManager sm = ServiceManager.getInstance();
 
75,6 → 71,8
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());
96,6 → 94,8
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);
120,10 → 120,7
}
else
{
UserSessionImpl userSession = (UserSessionImpl) request.getAttribute(Globals.USER_SESSION_KEY);
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY);
AnnouncementView a = announcementsForm.getAnnouncementView();
a.setTargetRoles(roles);
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{a};
/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java
43,7 → 43,9
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest hrequest = (HttpServletRequest) request;
 
if(((HttpServletRequest)request).getServletPath().indexOf("errorNoCookies.do")>=0 || !hrequest.isRequestedSessionIdFromCookie())
chain.doFilter(request,response);
try
/impl/src/java/pt/estgp/estgweb/web/ImageStream.java
New file
0,0 → 1,55
package pt.estgp.estgweb.web;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl;
 
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
 
/**
* @author Fabio
* @date 4/Abr/2008
* @time 11:03:00
* @see pt.estgp.estgweb.web
*/
public class ImageStream extends HttpServlet
{
 
private static final Logger logger = Logger.getLogger(ImageStream.class);
 
 
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String imageRequarired = request.getPathInfo();
imageRequarired=imageRequarired.substring(1);
 
long id=Long.parseLong(imageRequarired.trim());
AbstractDao.getCurrentSession().beginTransaction();
Image image = new ImageDaoImpl().get(id);
try {
//String mimeType = MimeTypeGuesser.getInstance().guessMimeType(a.getName());
response.setContentType(image.getContentType());
byte[] imagemStream = image.getImage();
response.setContentLength(imagemStream.length);
OutputStream out = response.getOutputStream();
if(imagemStream!=null)
out.write(imagemStream);
else
logger.warn("Image "+image.getId()+" has 0 bytes");
out.flush();
out.close();
}
catch (Exception e1)
{
e1.printStackTrace();
}
 
AbstractDao.getCurrentSession().getTransaction().commit();
}
 
}
 
/impl/src/java/pt/estgp/estgweb/web/tags/IsAdminTag.java
21,7 → 21,7
public int doEndTag() throws JspException {
 
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY);
if(userSession!=null && userSession.getUser() !=null && ((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE))
if(userSession!=null && userSession.getUser() !=null && (((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE) || ((UserImpl)userSession.getUser()).isSuperuser()))
{
String toPage = bodyContent.getString().trim();
JspWriter writer = pageContext.getOut();
/impl/src/java/pt/estgp/estgweb/web/tags/IsNotAdminTag.java
New file
0,0 → 1,44
package pt.estgp.estgweb.web.tags;
 
import org.apache.log4j.Logger;
 
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
 
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.Globals;
 
public class IsNotAdminTag extends BodyTagSupport {
 
private static final Logger logger = Logger.getLogger(IsNotAdminTag.class);
 
 
public int doStartTag() throws JspException {
return EVAL_BODY_TAG;
}
public int doEndTag() throws JspException {
 
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY);
if(userSession == null || userSession.getUser() == null || !(((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE) && !((UserImpl)userSession.getUser()).isSuperuser()))
{
String toPage = bodyContent.getString().trim();
JspWriter writer = pageContext.getOut();
try
{
writer.write(toPage);
}
catch(Exception e)
{
logger.error(e,e);
throw new JspException(e);
}
}
 
// Continue processing this page
return EVAL_PAGE;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/examples/DBInit.java
21,10 → 21,15
{
AbstractDao.getCurrentSession().beginTransaction();
UserImpl user = DomainObjectFactory.createUserImpl();
user.setUsername("1");
user.setUsername("super");
user.setRoles("all,admin");
user.setPassword(BytesUtils.getMD5("1"));
DaoFactory.getUserDaoImpl().save(user);
UserImpl userStudent = DomainObjectFactory.createUserImpl();
userStudent.setUsername("student");
userStudent.setRoles("student");
userStudent.setPassword(BytesUtils.getMD5("1"));
DaoFactory.getUserDaoImpl().save(userStudent);
AbstractDao.getCurrentSession().getTransaction().commit();
}
}
/impl/src/hbm/pt/estgp/estgweb/domain/Image.hbm.xml
14,6 → 14,8
<timestamp name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="name" type="string"/>
<property name="contentType" type="string"/>
<property name="size" type="int"/>
<property name="description" type="text"/>
<property name="image" type="binary" length="4194304"/>
<subclass name="pt.estgp.estgweb.domain.ImageImpl" discriminator-value="ImageImpl"/>
/impl/src/web/imgs/rolesIcons/estg.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/impl/src/web/admin/announcements/submitAnnouncement.jsp
16,8 → 16,22
 
<input type="hidden" name="dispatch" value="addRole">
<table class="form">
 
<estgweb:isAdmin>
<tr>
<th>
<bean:message key="announcement.status"/>
</th>
<td>
<html:select property="announcementView.status">
<html:option value="true"><bean:message key="yes"/></html:option>
<html:option value="false"><bean:message key="no"/></html:option>
</html:select>
</td>
</tr>
</estgweb:isAdmin>
<tr>
<th>
<bean:message key="announcement.typeAnnouncement"/>
</th>
<td>
55,17 → 69,27
<bean:message key="announcement.target.roles"/>
</th>
<td>
<select name="targetRolesStr">
<html:select property="targetRolesStr">
<estgweb:isAdmin>
<logic:present name="AnnouncementsForm" property="targetRoles">
<logic:iterate id="item" name="AnnouncementsForm" property="targetRoles">
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" comparableObjectProperty="targetRolesStr">
<jomm:message patternMessage="user.role.{0}" name0="item"/>
</jomm:option>
</logic:iterate>
<input type="button" value="<bean:message key="add"/>" onclick="set(this.form,'addRole');this.form.submit()">
</logic:present>
</select>
<input type="button" value="<bean:message key="add"/>" onclick="set(this.form,'addRole');this.form.submit()">
</estgweb:isAdmin>
<estgweb:isNotAdmin>
<html:option value="all"><bean:message key="user.role.all"/></html:option>
<html:option value="student"><bean:message key="user.role.student"/></html:option>
<html:option value="oldStudent"><bean:message key="user.role.oldStudent"/></html:option>
<html:option value="futureStudent"><bean:message key="user.role.futureStudent"/></html:option>
<html:option value="teacher"><bean:message key="user.role.teacher"/></html:option>
</estgweb:isNotAdmin>
</html:select>
 
 
<logic:present name="AnnouncementsForm" property="selectedRoles">
<logic:notEmpty name="AnnouncementsForm" property="selectedRoles">
<ul>
/impl/src/web/css/style.css
83,11 → 83,11
 
h1
{
font-size:14pt;
font-size:1.2em;
}
h2
{
font-size:12pt;
font-size:1em;
}
 
/*************************************************************************************/
307,8 → 307,28
background-color:#4d4d4d;
}
 
.flashTopNews td,.flashCenterNews td,.flashBottomNews td
#flashTopNews table
{
width:100%;
}
#flashTopNews, #flashTopNews table
{
background-color:#4d4d4d;
height:100px;
padding:0;
margin:0;
}
#flashTopNews img
{
height:100px;
}
.imageNewsTop
{
text-align:right;
}
 
#flashTopNews td,.flashCenterNews td,.flashBottomNews td
{
vertical-align:top;
}
 
338,7 → 358,7
font-weight:bold;
}
 
.titleNewsCenter,.descriptionNewsCenter,.descriptionNewsBottom,.linkLeftMenu a
.flashCenterNews a,.descriptionNewsBottom a,.linkLeftMenu a,.flashTopNews a
{
text-decoration:none;
}
365,9 → 385,10
 
.lastnews ul
{
padding:0;
list-style: none;
padding-left:5px;
WIDTH: 160px;
padding-right:5px;
width:160px;
}
 
#leftMenuModule h2
/impl/src/web/js/ajax.js
1,121 → 1,161
var xmlHttp;
var servidorBaseUrl = "@server.base.url@";
/**
*
* AJAX Functions
*
* This code is protected under GNU LGPL License
*
* @author Jorge Machado
* @date April 2008
**/
 
/**
* Starts XMLHTTP Ajax request
*
* @author Jorge Machado
* @date April 2008
*
* params:
* @params HTTP GET Parameters for query string
* @xmlHttpRequest request
* @id target element
* @stateChanged target function
* @innerPhrase to put while waiting for response
* @navjsp requested jsp
*/
function startRequest(xmlHttpRequest,params,id,stateChanged,innerPhrase,navjsp)
{
if(innerPhrase != '')
getObjectById(id).innerHTML = innerPhrase;
if (xmlHttpRequest==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url= navjsp;
if(params != null && params.length > 0)
{
url=url+"?"+ params;
url=url+"&sid="+Math.random();
}
else
{
url=url+"?sid="+Math.random();
}
xmlHttpRequest.onreadystatechange=stateChanged;
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.send(null);
}
 
function getObjectById(objectId) {
 
// cross-browser function to get an object's style object given its id
try
/**
* Return an HTML element given ID
*
* @author Jorge Machado
* @date April 2008
*
* params:
* @objectId required object
*/
function getObjectById(objectId)
{
// cross-browser function to get an object's style object given its id
try
{
if(document.getElementById && document.getElementById(objectId))
{
if(document.getElementById && document.getElementById(objectId)) {
// W3C DOM
return document.getElementById(objectId);
} else if (document.all(objectId)) {
return document.getElementById(objectId);
}
else if (document.all(objectId))
{
// MSIE 4 DOM
return document.all(objectId);
} else if (document.layers && document.layers[objectId]) {
return document.all(objectId);
}
else if (document.layers && document.layers[objectId])
{
// NN 4 DOM.. note: this won't find nested layers
return document.layers[objectId];
} else {
return false;
}
return document.layers[objectId];
}
catch(e)
else
{
return false;
}
 
} // getObjectById
 
function GetXmlHttpObject()
{
var objXMLHttp=null;
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}
catch(e)
{
return false;
}
}
 
/**
* Creates a new XmlHttpObject
* @author Jorge Machado
* @date April 2008
*
* params:
* @handler target xmlHttpObject function
*/
function GetXmlHttpObject(handler)
{
 
var objXmlHttp=null;
 
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera") ;
return ;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP";
}
try
{
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler ;
return objXmlHttp;
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled") ;
return ;
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
var objXmlHttp = null;
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera") ;
return objXmlHttp;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP";
}
try
{
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler ;
return objXmlHttp;
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled") ;
return objXmlHttp;
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
}
 
/**
*
* Application Methods Examples
*
*
*/
/***************************************************
TopFlashNews
***************************************************/
var xmlHttpTopFlashNews;
var getFlashNewsTimeout;
var getFlashNewsJsp;
 
 
function getImportState()
function getFlashNews(jsp,timeout)
{
xmlHttp=GetXmlHttpObject(stateChangedGetImportState);
getObjectById("importState").innerHTML = "<div class=\"statusSearch\">Updating import state ....</div>";
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
//http://servidor:8080
var url= servidorBaseUrl + "/jsp/import/getImportState.jsp";
url=url+"?sid="+Math.random();
xmlHttp.onreadystatechange=stateChangedGetImportState;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
getFlashNewsJsp = jsp;
getFlashNewsTimeout = timeout;
getFlashNewsTimeoutCall();
}
 
function stateChangedGetImportState()
function getFlashNewsTimeoutCall()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
var html = xmlHttp.responseText;
getObjectById("importState").innerHTML=html;
if(!(getObjectById("importStateStatus") != null && getObjectById("importStateStatus").value == 'STOPPED'))
{
setTimeout(getImportState,5000);
}
}
xmlHttpTopFlashNews=GetXmlHttpObject(stateChangedGetFlashNews);
startRequest(xmlHttpTopFlashNews,"","flashTopNews",stateChangedGetFlashNews,"",getFlashNewsJsp)
}
function stateChangedGetFlashNews()
{
if (xmlHttpTopFlashNews.readyState==4 || xmlHttpTopFlashNews.readyState=="complete")
{
getObjectById("flashTopNews").innerHTML=xmlHttpTopFlashNews.responseText;
setTimeout(getFlashNewsTimeoutCall,getFlashNewsTimeout);
}
}
 
 
 
/impl/src/web/public/index.jsp
23,41 → 23,31
<jomm:messages/>
<html:errors/>
 
<script type="text/javascript">
<!--
getFlashNews('<%=request.getContextPath()%>/public/announcements/getFlashNews.jsp',<%=Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_TIMEOUT%>);
-->
</script>
 
<div class="indexPage" >
 
<div class="header">
<h1> <bean:message key="mainAnnouncements"/></h1>
</div>
 
<table class="flashTopNews">
<tr>
<td>
<div class="textNewsTop">
<logic:present name="Announcements">
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="top.flash.news" name="item" property="type">
<%if (topAnnouncements <= Globals.NUMBER_ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_INDEX) {
%>
<div class="titleNewsTop">
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link>
</div>
<div class="descriptionNewsTop">
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.text}</html:link>
</div>
<%
}
topAnnouncements++;
%>
</logic:equal>
</logic:iterate>
</logic:present>
</div>
</td>
<td class="imageNewsTop">
<img src="<%=request.getContextPath()%>/imgs/destaque_1.jpg"/>
</td>
</tr>
</table>
<div id="flashTopNews">
<table>
<tr>
<td>
<div class="textNewsTop">
<bean:message key="announcements.loading"/>
</div>
</td>
<td class="imageNewsTop">
</td>
</tr>
</table>
</div>
 
<table class="flashCenterNews">
<tr>
65,7 → 55,7
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="bottom.flash.news" name="item" property="type">
<%if(centerAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX)
{
{
%>
<td class="imageNewsCenter">
<img src="<%=request.getContextPath()%>/imgs/destaque_2_1.jpg"/>
79,11 → 69,11
</div>
</td>
<%
}
else{
}
centerAnnouncements++;
%>
}
else{
}
centerAnnouncements++;
%>
</logic:equal>
</logic:iterate>
</div>
95,16 → 85,16
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="news" name="item" property="type">
<%if(bottomAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX)
{
{
%>
<td class="imageNewsBottom">
<img src="<%=request.getContextPath()%>/imgs/destaque_3_3.gif"/>
</td>
<%
}
else{
}
bottomAnnouncements++;
}
else{
}
bottomAnnouncements++;
%>
</logic:equal>
</logic:iterate>
116,8 → 106,8
<logic:iterate length="5" id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="news" name="item" property="type">
<%
if(bottomAnnouncements<=4)
{
if(bottomAnnouncements<=4)
{
%>
<td width="50px">
<div class="titleNewsBottom">
128,8 → 118,8
</div>
</td>
<%
}
bottomAnnouncements++;
}
bottomAnnouncements++;
%>
</logic:equal>
</logic:iterate>
/impl/src/web/public/portals/alunos/student.jsp
12,16 → 12,12
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="contactosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
 
</td>
<td class="column">
 
 
<jsp:include page="mobilidadeLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="accaoSocialLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
 
</td>
<td class="column">
<jsp:include page="orgaosLinks.jsp"/>
/impl/src/web/public/portals/Docentes/teacher.jsp
4,25 → 4,27
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<div class="portal">
<div class="portalContent">
<table class="columnTable">
<table class="columnTable" width="100%">
<tbody>
<tr>
<td class="column" width="50%">
<jsp:include page="servicosLinks.jsp"/>
<td class="column">
<jsp:include page="institutoPolitecnicoLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="informacaoAcademicaLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="contactosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="informacaoAcademicaLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
</td>
<td class="column" width="50%">
<td class="column">
<jsp:include page="mobilidadeLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="accaoSocialLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="orgaosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="institutoPolitecnicoLinks.jsp"/>
</td>
<td class="column">
<jsp:include page="servicosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
</td>
</tr>
/impl/src/web/public/portals/antigosAlunos/oldStudent.jsp
4,22 → 4,24
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<div class="portal">
<div class="portalContent">
<table class="columnTable">
<table class="columnTable" width="100%">
<tbody>
<tr>
<td class="column" width="50%">
<td class="column">
<jsp:include page="estgLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="servicosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="actividadesLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
</td>
<td class="column" width="50%">
<td class="column">
<jsp:include page="formacaoPosGraduadaLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="institutoPolitecnicoLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
</td>
<td class="column">
<jsp:include page="actividadesLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="contactosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
</td>
/impl/src/web/public/portals/futurosAlunos/futureStudent.jsp
4,28 → 4,32
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<div class="portal">
<div class="portalContent">
<table class="columnTable">
<table class="columnTable" width="100%">
<tbody>
<tr>
<td class="column" width="50%">
<td class="column">
<jsp:include page="estgLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="servicosLinks.jsp"/>
<jsp:include page="informacaoAcademicaLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="contactosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
 
</td>
<td class="column">
<jsp:include page="institutoPolitecnicoLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="orgaosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="accaoSocialLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
</td>
<td class="column" width="50%">
<jsp:include page="informacaoAcademicaLinks.jsp"/>
<td class="column">
<jsp:include page="servicosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="mobilidadeLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="accaoSocialLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
<jsp:include page="orgaosLinks.jsp"/>
<jsp:include page="../blocoPortal.jsp"/>
</td>
</tr>
</tbody>
/impl/src/web/public/announcements/getFlashNews.jsp
New file
0,0 → 1,39
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %>
<%@ page import="java.util.List" %>
<%@page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%
//String iterator = request.getParameter("iterator");
IServiceManager sm = ServiceManager.getInstance();
// String[] names = new String[]{"iterator"};
String[] names = new String[]{};
//Object[] arguments = new Object[]{Integer.parseInt(iterator)};
Object[] arguments = new Object[]{};
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "LoadTopFlashNewsIterate", arguments, names);
%>
<table>
<tr>
<td>
<div id="textNewsTop">
<div class="titleNewsTop">
<html:link action="/loadAnnouncement?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTitle()%></html:link>
</div>
<div class="descriptionNewsTop">
<html:link action="/loadAnnouncement?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTextSummary()%></html:link>
</div>
</div>
</td>
<td class="imageNewsTop">
<%if(announcementView.getBigImage() != null){%><img alt="<%=announcementView.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=announcementView.getBigImage().getId()%>"><%}%>
</td>
</tr>
</table>
/impl/src/web/public/announcements/announcements.jsp
17,34 → 17,24
 
<div class="lastNews">
<div class="header">
<h1><bean:message key="announcements"/></h1>
<h1><bean:message key="announcements"/></h1>
</div>
 
<table class="lastNewsBlock">
<tr>
<td>
<logic:present name="Announcements">
<div class="listClean">
<ul>
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<li>
<logic:empty name="item" property="url">
<logic:equal value="news" name="item" property="type">
<div class="titleLastNews"><html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link></div>
</logic:equal>
</logic:empty>
<logic:notEmpty name="item" property="url">
<logic:equal value="news" name="item" property="type">
<div class="titleLastNews"><html:link href="${item.url}">${item.title}</html:link></div>
</logic:equal>
</logic:notEmpty>
</li>
</logic:iterate>
</ul>
</div>
</logic:present>
</td>
</tr>
 
</table>
<div class="lastNewsBlock">
<logic:present name="Announcements">
<ul>
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="news" name="item" property="type">
<li>
<logic:empty name="item" property="url">
<div class="titleLastNews"><html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link></div>
</logic:empty>
<logic:notEmpty name="item" property="url">
<div class="titleLastNews"><html:link href="${item.url}">${item.title}</html:link></div>
</logic:notEmpty>
</li>
</logic:equal>
</logic:iterate>
</ul>
</logic:present>
</div>
</div>
/impl/gen/java/pt/estgp/estgweb/domain/Course.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonth.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDayId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
 
/impl/gen/java/pt/estgp/estgweb/domain/SessionObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/GenericUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/User.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYear.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonthId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
 
/impl/gen/java/pt/estgp/estgweb/domain/UserSession.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/Image.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
14,15 → 14,19
private Date updateDate;
private Date saveDate;
private String name;
private String contentType;
private int size;
private String description;
private byte[] image;
 
public Image() {
}
 
public Image(Date saveDate, String name, String description, byte[] image) {
public Image(Date saveDate, String name, String contentType, int size, String description, byte[] image) {
this.saveDate = saveDate;
this.name = name;
this.contentType = contentType;
this.size = size;
this.description = description;
this.image = image;
}
55,6 → 59,20
public void setName(String name) {
this.name = name;
}
public String getContentType() {
return this.contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public int getSize() {
return this.size;
}
public void setSize(int size) {
this.size = size;
}
public String getDescription() {
return this.description;
}
/impl/gen/java/pt/estgp/estgweb/domain/SessionObjectId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
 
/impl/gen/java/pt/estgp/estgweb/domain/Announcement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/Group.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDay.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYearId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
 
/impl/gen/java/pt/estgp/estgweb/domain/CourseUserAssociation.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/UrlStat.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/build.properties
25,6 → 25,8
tomcat.username=admin
tomcat.password=admin
 
service.url=${tomcat.url}${tomcat.context.path}
 
#IF is ROOT use Nothing
#example for ROOT:
# tomcat.context.path.install=/
/impl/build.xml
276,6 → 276,9
<include name="**/*"/>
</fileset>
</copy>
<replace file="${build.dir.war}/js/ajax.js">
<replacefilter token="@server.base.url@" value="${tomcat.context.path}"/>
</replace>
</target>
 
<target name="war" depends="build.war">