Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 204 → Rev 206

/impl/conf/language/MessageResourcesIntranet.properties
25,7 → 25,8
intranet.course.unit.announcements=Os anúncios das minhas Unidades
course.unit.announcements.zero.announcements=Zero anúncios
 
courseunit.objectives=Objectivos da Unidade
courseunit.programfilepath=Programa Curricular
courseunit.programfilepath.not.available=O Programa Curricular não está disponivel
courseunit.objectives.not.available=Os objectivos não estão disponiveis
courseunit.works.zero=Não existem trabalhos
 
courseunit.title=Titulo
courseunit.description=Descrição
courseunit.status=Estado
/impl/conf/language/MessageResourcesCommon.properties
24,12 → 24,14
search.no.results.suggest.2=Será que deu um erro ortográfico?
search.no.results.suggest.3=Será que está a usar demasiadas palavras chave?
 
result.previous=Página Anterior
result.previous=Anterior
result.next=Próxima
 
 
todo.zero.todos=Não existem afazeres
 
courseunit.teachers=Professores
courseunit.students=Alunos
 
#Common Log
result.log.fatal=Erro fatal
/impl/conf/language/MessageResources.properties
118,6 → 118,10
mainAnnouncements=Destaques
staff.header=Informação para funcionários docentes e não docentes
staff=Docentes
status.valid=Válido
status.invalid=Inválido
status.active=Activo
status.inactive=Inactivo
 
#Menus Portais
portal.orgaos=Orgãos
271,7 → 275,10
profile.create.student=Criar Aluno
profile.create.user=Criar Utilizador
profile.create.users=Criar Usuario
profile.siges.code=Código SIGES
profile.siges.student.code=Número
 
 
profile.pop3server=Servidor de POP3
profile.pop3username=Username do Servidor de POP3
profile.pop3password=Password do Servidor de POP3
/impl/conf/language/MessageResourcesBlog.properties
4,12 → 4,15
#
################################################################################
module.Blogs=Blogs
module.BlogPosts=Posts
 
blog=Blog
blog.zero.editable=Não existem blogs onde eu possa publicar
blog.zero.placed=0 blogs criados
blog.posts.zero.placed=0 Posts colocados
blog.status.valid=Válido
blog.status.validate=Validar
blog.status.invalidate=Invalidar
blog.status.not.valid=Por validar
blog.title=Titulo
blog.name=Nome do Blog (será usado como prefixo do sitio WEB)
22,11 → 25,13
submit.blog=Criar um Blog
blog.owner=Criado por
blog.internal=Dominio
blog.autoValidation=Auto Validação de POSTS
 
blog.exceed.image.max.size=Excedeu o tamanho maximo da imagem
blogpost.text=Texto
blogpost.title=Titulo
blog.post.created.success=Post adicionado com sucesso
blog.post.updated.success=Post actualizado com sucesso
 
blog.old.months=Meses Anteriores
blog.confirm.delete=Tem a certeza que deseja apagar o Blog Selecionado? Todos os Posts serão apagados do Sistema.
40,7 → 45,10
 
blog.name.already.exist=O nome que atribuiu ao blog já existe
blog.bad.name=O nome que escolheu par o blog não é válido. Por favor escolha um nome contendo apenas os seguintes caracteres: de 'a' a 'z', de 'A' a 'Z', de '0' a '9' , '-' ou '_'
blog.validate.post.todo=Validar POST
blog.validate.blog.todo=Validar Blog
 
blog.intro.message=O Serviço de criação de Blogs requer validação por parte da administração. Depois de criar o seu blog aguarde que este seja validado pelo Administrador. Só assim os outros utilizadores terão acesso ao mesmo.
 
 
 
/impl/conf/language/MessageResourcesCourseUnits.properties
3,8 → 3,41
# COURSE UNITS MESSAGE RESOURCES
#
################################################################################
 
module.CourseUnits=Unidades Curriculares
course=Curso ({0})
courseunit=Unidade Curricular ({0})
 
courseunit.objectives=Objectivos da Unidade
courseunit.programfilepath=Programa Curricular
courseunit.programfilepath.not.available=O Programa Curricular não está disponivel
courseunit.objectives.not.available=Os objectivos não estão disponiveis
 
courseunit.program.description=Programa Curricular de {0}
 
courseunit.objectives.todo=Peenchimento dos objectivos da unidade
courseunit.program.todo=Upload do programa da unidade
courseunit.question.todo=Dúvida
course.unit.works=(Trabalhos)
courseunit.works=Trabalhos
courseunit.new=Criar Unidade Curricular
courseunit.edit=Editar Unidade Curricular
courseunit.search.unit=Procurar Unidade Curricular
 
courseunit.name=Nome
courseunit.code=Código
courseunit.semestre=Semestre
courseunit.importYear=Ano de Importação
courseunit.course=Curso
 
 
 
courseunit.created.success=Unidade Curricular {0} criada com sucesso
courseunit.updated.success=Unidade Curricular {0} actualizada com sucesso
 
courseunit.assignement.deliver.date=Data de Entrega
courseunit.assignement.deliver.type=Tipo de entrega
courseunit.assignement.deliver.type.zipfile=Ficheiro Comprimido (ZIP)
courseunit.assignement.deliver.type.nofile=Entrega não controlada pelo sistema
courseunit.assignement.deliver.late.permission=Permitir entregas atrasadas
 
courseunit.search=Procurar Unidade Curricular
/impl/conf/WEB-INF/struts/struts-blog.xml
22,6 → 22,7
<action path="/startAddPost" forward="/blogsController.do?dispatch=addPost"/>
<action path="/startEditPost" forward="/blogsController.do?dispatch=editPost"/>
<action path="/startDeletePost" forward="/blogsController.do?dispatch=deletePost"/>
<action path="/startValidatePost" forward="/blogsController.do?dispatch=validatePost"/>
<action path="/startLoadBlogMonth" forward="/blogsController.do?dispatch=loadMonth"/>
<action path="/startLoadBlog" forward="/blogsController.do?dispatch=load"/>
45,6 → 46,7
<action path="/user/startAddPostFromHome" forward="/user/blogsControllerFromHome.do?dispatch=addPost&amp;from=Home"/>
<action path="/user/startEditPostFromHome" forward="/user/blogsControllerFromHome.do?dispatch=editPost&amp;from=Home"/>
<action path="/user/startDeletePostFromHome" forward="/user/blogsControllerFromHome.do?dispatch=deletePost&amp;from=Home"/>
<action path="/user/startValidatePostFromHome" forward="/user/blogsControllerFromHome.do?dispatch=validatePost&amp;from=Home"/>
 
<action path="/user/startSubmitBlogFromHome" forward="/user/blogsControllerFromHome.do?dispatch=start&amp;from=Home"/>
<action path="/user/startDeleteBlogFromHome" forward="/user/blogsControllerFromHome.do?dispatch=delete&amp;from=Home"/>
68,6 → 70,7
<action path="/user/startAddPostFromServiceZone" forward="/user/blogsControllerFromServiceZone.do?dispatch=addPost&amp;from=ServiceZone"/>
<action path="/user/startEditPostFromServiceZone" forward="/user/blogsControllerFromServiceZone.do?dispatch=editPost&amp;from=ServiceZone"/>
<action path="/user/startDeletePostFromServiceZone" forward="/user/blogsControllerFromServiceZone.do?dispatch=deletePost&amp;from=ServiceZone"/>
<action path="/user/startValidatePostFromServiceZone" forward="/user/blogsControllerFromServiceZone.do?dispatch=validatePost&amp;from=ServiceZone"/>
 
<action path="/user/startSubmitBlogFromServiceZone" forward="/user/blogsControllerFromServiceZone.do?dispatch=start&amp;from=ServiceZone"/>
<action path="/user/startDeleteBlogFromServiceZone" forward="/user/blogsControllerFromServiceZone.do?dispatch=delete&amp;from=ServiceZone"/>
/impl/conf/WEB-INF/struts/struts-courseunits.xml
24,7 → 24,21
<action path="/startTeste2" forward="page.separators.home"/>
 
 
<action path="/startLoadCourseUnitWorks" forward="/courseUnitController.do?dispatch=loadWorks"/>
<action path="/startLoadCourseUnit" forward="/courseUnitController.do?dispatch=load"/>
<action path="/courseUnitController"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController"
name="CourseUnitsForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.welcome">
<forward name="load" path="page.load.courseunit"/>
<forward name="load.works" path="page.load.courseunit.works"/>
</action>
 
<!--<action path="/user/startLoadCourseUnitFromHome" forward="page.load.courseunit.from.home"/>-->
<action path="/user/startLoadCourseUnitWorksFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadWorks&amp;from=Home"/>
<action path="/user/startLoadCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=load&amp;from=Home"/>
<action path="/user/courseUnitControllerFromHome"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController"
34,10 → 48,34
validate="false"
input="page.welcome">
<forward name="load" path="page.load.courseunit.from.home"/>
<forward name="load.works" path="page.load.courseunit.works.from.home"/>
<forward name="submit" path="page.submit.courseunit.from.home"/>
</action>
 
 
 
 
<!--Administrative Services-->
<action path="/user/startFindCourseUnitAdminFromServiceZone" forward="page.search.courseunit.admin.from.service.zone"/>
<action path="/user/startEditCourseUnitAdminFromServiceZone" forward="/user/courseUnitControllerAdminFromServiceZone.do?dispatch=edit&amp;from=ServiceZone"/>
<action path="/user/startDeleteCourseUnitAdminFromServiceZone" forward="/user/courseUnitControllerAdminFromServiceZone.do?dispatch=delete&amp;from=ServiceZone"/>
<action path="/user/startSearchCourseUnitAdminFromServiceZone" forward="/user/courseUnitControllerAdminFromServiceZone.do?dispatch=search&amp;from=ServiceZone"/>
<action path="/user/startNewCourseUnitAdminFromServiceZone" forward="/user/courseUnitControllerAdminFromServiceZone.do?dispatch=newAdmin&amp;from=ServiceZone"/>
<action path="/user/startCreateOrUpdateCourseUnitAdminFromServiceZone" forward="/user/courseUnitControllerAdminFromServiceZone.do?dispatch=createOrUpdate&amp;from=ServiceZone"/>
<action path="/user/startLoadCourseUnitAdminFromServiceZone" forward="/user/courseUnitControllerAdminFromServiceZone.do?dispatch=load&amp;from=ServiceZone"/>
<action path="/user/courseUnitControllerAdminFromServiceZone"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAdminController"
name="CourseUnitsForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.separators.serviceZone">
<forward name="search" path="page.search.courseunit.admin.from.service.zone"/>
<forward name="load" path="page.submit.courseunit.admin.from.service.zone"/>
<forward name="submit" path="page.submit.courseunit.admin.from.service.zone"/>
<forward name="edit" path="page.edit.courseunit.admin.from.service.zone"/>
</action>
 
</action-mappings>
 
</struts-config>
/impl/conf/WEB-INF/struts/tiles-courseunits.xml
1,12 → 1,26
<?xml version="1.0" encoding="UTF-8" ?>
 
<!--<!DOCTYPE tiles-definitions PUBLIC-->
<!--"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"-->
<!--"http://struts.apache.org/dtds/tiles-config_1_1.dtd">-->
<!--"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"-->
<!--"http://struts.apache.org/dtds/tiles-config_1_1.dtd">-->
 
 
<tiles-definitions>
 
<definition name="page.load.courseunit" extends="base.layout1">
<put name="title" value="Unidade Curricular"/>
<put name="topnav" value="/public/courseunits/topnavCourseUnit.jsp"/>
<put name="navigation" value="/user/courseunits/menu.jsp"/>
<put name="body" value="/user/courseunits/courseunit.jsp"/>
</definition>
<definition name="page.load.courseunit.works" extends="base.layout1">
<put name="title" value="Trabalhos da Unidade Curricular"/>
<put name="topnav" value="/public/courseunits/topnavCourseUnit.jsp"/>
<put name="navigation" value="/user/courseunits/menu.jsp"/>
<put name="body" value="/user/courseunits/courseunitworks.jsp"/>
</definition>
 
 
<definition name="page.load.courseunit.from.home" extends="page.separators.home">
<put name="title" value="Unidade Curricular"/>
<put name="topnav" value="/user/home/topnavCourseUnit.jsp"/>
16,10 → 30,41
<definition name="page.submit.courseunit.from.home" extends="page.separators.home">
<put name="title" value="Unidade Curricular"/>
<put name="topnav" value="/user/home/topnavSubmitCourseUnit.jsp"/>
<put name="body" value="/user/courseunits/courseunit.jsp"/>
</definition>
<definition name="page.load.courseunit.works.from.home" extends="page.separators.home">
<put name="title" value="Trabalhos da Unidade Curricular"/>
<put name="topnav" value="/user/home/topnavCourseUnitWorks.jsp"/>
<put name="left" value="/user/courseunits/menu.jsp"/>
<put name="body" value="/user/courseunits/courseunitworks.jsp"/>
</definition>
 
 
 
 
 
 
<!--Administrative pages-->
 
<definition name="page.submit.courseunit.admin.from.service.zone" extends="page.separators.serviceZone">
<put name="title" value="Unidade Curricular"/>
<put name="topnav" value="/user/serviceZone/topnavCourseUnit.jsp"/>
<put name="body" value="/admin/courseunits/courseunit.jsp"/>
</definition>
<definition name="page.search.courseunit.admin.from.service.zone" extends="page.separators.serviceZone">
<put name="title" value="Pesquisar Unidade Curricular"/>
<put name="topnav" value="/user/serviceZone/topnavSearchCourseUnit.jsp"/>
<put name="body" value="/admin/courseunits/findCourseunit.jsp"/>
</definition>
<definition name="page.edit.courseunit.admin.from.service.zone" extends="page.separators.serviceZone">
<put name="title" value="Unidade Curricular"/>
<put name="topnav" value="/user/serviceZone/topnavEditCourseUnit.jsp"/>
<put name="body" value="/admin/courseunits/courseunit.jsp"/>
</definition>
 
 
 
 
 
 
</tiles-definitions>
/impl/conf/app.properties
186,6 → 186,14
ws.siges.wsdl=@ws.siges.wsdl@
ws.siges.target.namespace=@ws.siges.target.namespace@
 
#
importFirstYearFormat=yyyy
importSecondYearFormat=yy
#importFirstYearFormat {0}
#importSecondYearFormat {1}
importFinalFormat={0}{1}
 
 
#########################################################################
#
#PopService
/impl/conf/berserk/sd.xml
49,6 → 49,17
<chain name="Logger"/>
</filterChains>
</service>
<service>
<name>LoadUsers</name>
<implementationClass>pt.estgp.estgweb.services.users.LoadUsersService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
 
 
<!--URL Statistics-->
274,6 → 285,17
</filterChains>
</service>
<service>
<name>ValidateBlogPost</name>
<implementationClass>pt.estgp.estgweb.services.blogs.ValidateBlogPostService</implementationClass>
<description>Validate a Post</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="OwnerBlogFromPost"/>
</filterChains>
</service>
<service>
<name>CreateBlogPost</name>
<implementationClass>pt.estgp.estgweb.services.blogs.CreateBlogPostService</implementationClass>
<description>Create a Blog Post</description>
601,6 → 623,37
</filterChains>
</service>
<service>
<name>LoadCourseUnitWorks</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitWorksService</implementationClass>
<description>Load course unit works</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
<service>
<name>CreateCourseUnitWork</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorkService</implementationClass>
<description>Load course unit works</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
<service>
<name>SearchCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.SearchCourseUnitService</implementationClass>
<description>Load course unit works</description>
<isTransactional>true</isTransactional>
<defaultMethod>search</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
<service>
<name>LoadTeachedUnits</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsService</implementationClass>
<description>Load teacher units</description>
635,6 → 688,70
</filterChains>
</service>
 
<service>
<name>AddTeacherCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UsersUnitsService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<defaultMethod>addTeacher</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
<service>
<name>RemoveTeacherCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UsersUnitsService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<defaultMethod>removeTeacher</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
 
<service>
<name>AddStudentCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UsersUnitsService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<defaultMethod>addStudent</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
<service>
<name>RemoveStudentCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UsersUnitsService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<defaultMethod>removeStudent</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
 
 
 
<!--Administratives-->
<service>
<name>CreateCourseUnitAdmin</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitAdminService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
 
<!--Repository-->
<service>
<name>StoreRepositoryFile</name>
/impl/conf/berserk/fd.xml
44,10 → 44,25
<filter>
<name>OwnerUsersClass</name>
<implementationClass>pt.estgp.estgweb.filters.filters.OwnerUsersClass</implementationClass>
<description>Checks if the requester contains certain roles</description>
<description>
Checks if the requester is owner of the requested bead
filter parameter: bean serializable id
filter parameter: bean class
</description>
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>OwnerUsersClassBean</name>
<implementationClass>pt.estgp.estgweb.filters.filters.OwnerUsersClassBean</implementationClass>
<description>
Checks if the requester is owner of the requested bean inside the loaded bean
filter parameter: bean serializable id
filter parameter: bean class
filter parameter: bean path to owned object from loaded bean
</description>
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>CanAddContentClass</name>
<implementationClass>pt.estgp.estgweb.filters.filters.CanAddContentClass</implementationClass>
<description>Checks if the requester can add content to specified object</description>
/impl/conf/berserk/fcd.xml
164,6 → 164,13
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>OwnerBlogFromPost</name>
<expression>OwnerUsersClassBean("serializable","pt.estgp.estgweb.domain.BlogPostImpl","blog")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>ExistBlog</name>
<expression>ExistObject("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Not Found Control</description>
/impl/src/java/jomm/utils/DatesUtils.java
1,6 → 1,7
package jomm.utils;
 
import java.util.Date;
import java.text.SimpleDateFormat;
 
/**
* @author Jorge Machado
57,4 → 58,6
}
}
 
 
}
/impl/src/java/pt/estgp/estgweb/utils/DatesUtils.java
New file
0,0 → 1,92
package pt.estgp.estgweb.utils;
 
import pt.estgp.estgweb.Globals;
 
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.text.SimpleDateFormat;
import java.text.MessageFormat;
 
import jomm.utils.MyCalendar;
 
/**
* @author Jorge Machado
* @date 13/Jun/2008
* @see pt.estgp.estgweb.utils
*/
public class DatesUtils
{
 
static SimpleDateFormat SIGES_importFirstYearFormat = new SimpleDateFormat(Globals.SIGES_importFirstYearFormat);
static SimpleDateFormat SIGES_importSecondYearFormat = new SimpleDateFormat(Globals.SIGES_importSecondYearFormat);
static MessageFormat SIGES_importFinalFormat = new MessageFormat(Globals.SIGES_importFinalFormat);
 
public static String getImportYear()
{
MyCalendar mc = new MyCalendar();
int month = mc.getMonth();
MyCalendar firstYear;
MyCalendar secondYear;
if(month <= 8)
{
firstYear = new MyCalendar(mc.getYear() - 1,1,1);
secondYear = new MyCalendar(mc.getYear(),1,1);
}
else
{
firstYear = new MyCalendar(mc.getYear(),1,1);
secondYear = new MyCalendar(mc.getYear()+1,1,1);
}
 
String firstYearStr = SIGES_importFirstYearFormat.format(firstYear.getTime());
String secondYearStr = SIGES_importSecondYearFormat.format(secondYear.getTime());
 
return getFormatedImportYear(firstYearStr,secondYearStr);
}
 
public static String getFormatedImportYear(String firstYearStr, String secondYearStr)
{
String[] years = {firstYearStr,secondYearStr};
return MessageFormat.format(Globals.SIGES_importFinalFormat,years);
}
 
public static List<String> getImportYears(int size)
{
MyCalendar mc = new MyCalendar();
int month = mc.getMonth();
MyCalendar firstYear;
MyCalendar secondYear;
if(month <= 8)
{
firstYear = new MyCalendar(mc.getYear() - 1,1,1);
secondYear = new MyCalendar(mc.getYear(),1,1);
}
else
{
firstYear = new MyCalendar(mc.getYear(),1,1);
secondYear = new MyCalendar(mc.getYear()+1,1,1);
}
 
String firstYearStr = SIGES_importFirstYearFormat.format(firstYear.getTime());
String secondYearStr = SIGES_importSecondYearFormat.format(secondYear.getTime());
 
List<String> importYears = new ArrayList<String>();
importYears.add(getFormatedImportYear(firstYearStr,secondYearStr));
 
for(int i = 0; i < size;i++)
{
firstYear = new MyCalendar(firstYear.getYear() - 1,1,1);
secondYear = new MyCalendar(secondYear.getYear() - 1,1,1);
firstYearStr = SIGES_importFirstYearFormat.format(firstYear.getTime());
secondYearStr = SIGES_importSecondYearFormat.format(secondYear.getTime());
importYears.add(getFormatedImportYear(firstYearStr,secondYearStr));
}
return importYears;
}
 
public static void main(String [] args)
{
System.out.println(getImportYears(10));
}
}
/impl/src/java/pt/estgp/estgweb/utils/RoleManager.java
52,6 → 52,20
return false;
}
 
public static boolean hasRole(List<String> roles, String requiredRole)
{
if(roles == null || roles.size() == 0)
return false;
 
for(String role: roles)
{
if(role.equals(requiredRole))
return true;
}
return false;
}
 
 
public static List readRoles()
{
if(roles == null)
/impl/src/java/pt/estgp/estgweb/Globals.java
82,4 → 82,11
public static final long MAX_BIGMAGE_FILE_SIZE_BYTES = MAX_BIGMAGE_FILE_SIZE_KBYTES * 1024;
public static final long MAX_SMALLIMAGE_FILE_SIZE_BYTES = MAX_SMALLIMAGE_FILE_SIZE_KBYTES * 1024;
 
 
//CourseUnits
public static final String SIGES_importFirstYearFormat = ConfigProperties.getProperty("importFirstYearFormat");
public static final String SIGES_importSecondYearFormat = ConfigProperties.getProperty("importSecondYearFormat");
public static final String SIGES_importFinalFormat = ConfigProperties.getProperty("importFinalFormat");
 
 
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/CourseUnitsCommonServices.java
New file
0,0 → 1,121
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.common.*;
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultResult;
import pt.estgp.estgweb.services.common.impl.DefaultToDo;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
import java.util.List;
import java.util.ArrayList;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
* <p/>
* <p/>
* Created at 17/Out/2003 , 23:45:24
*/
public class CourseUnitsCommonServices implements IService, IModuleCommonServices
{
private static final Logger logger = Logger.getLogger(CourseUnitsCommonServices.class);
 
 
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession)
{
return 0;
}
 
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
return search(null, search, searchType, page, maxResults, userSession);
}
 
public ISearchResults search(String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
DefaultSearchResults searchResults = new DefaultSearchResults();
searchResults.setModule(ModuleEnum.CourseUnits);
 
searchResults.setTotalResults(DaoFactory.getCourseUnitDaoImpl().countCourseUnitsActualYear(search, searchType));
if (searchResults.getTotalResults() > 0)
{
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().searchActualYear(search, searchType, maxResults, page);
if (courseUnits == null)
return searchResults;
for (CourseUnit courseUnit : courseUnits)
{
DefaultResult defaultResult = new DefaultResult();
defaultResult.setTitle(courseUnit.getName());
defaultResult.setSubTitle(courseUnit.getCourseName());
defaultResult.setSubTitleKey(false);
defaultResult.setText(courseUnit.getObjectives());
if (from == null)
defaultResult.setUrl("/startLoadCourseUnit.do?id=" + courseUnit.getId());
else
defaultResult.setUrl("/user/startLoadCourseUnitFrom" + from + ".do?id=" + courseUnit.getId());
searchResults.addResult(defaultResult);
}
}
return searchResults;
}
 
 
 
public int countToDo(UserSession userSession)
{
return 0;
}
 
public IToDoCat getToDo(UserSession userSession)
{
return null;
}
 
public List<IToDo> getAllToDos(UserSession userSession)
{
List<IToDo> todos = new ArrayList<IToDo>();
 
if(userSession.getUser() != null && userSession.getUser() instanceof Teacher)
{
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingObjectives(userSession.getUser().getId());
for(CourseUnit c: courseUnits)
{
DefaultToDo defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.objectives.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId());
todos.add(defaultToDo);
if(c.getProgramStreamId() == null || c.getProgramStreamId().length() == 0)
{
defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.program.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId());
todos.add(defaultToDo);
}
}
 
List<CourseUnitQuestion> courseUnitQuestions = DaoFactory.getCourseUnitQuestionDaoImpl().loadMissingQuestions(userSession.getUser().getId());
for(CourseUnitQuestion c: courseUnitQuestions)
{
DefaultToDo defaultToDo = new DefaultToDo(c.getQuestion(),null,c.getCourseUnit().getName(), "courseunit.question.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId());
todos.add(defaultToDo);
}
}
return todos;
}/*This method is invoked from object creation*/
 
public void adviseNew(DomainObject object)
{
//To change body of implemented methods use File | Settings | File Templates.
}
 
public void adviseUpdate(DomainObject object)
{
//To change body of implemented methods use File | Settings | File Templates.
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitService.java
8,6 → 8,7
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.views.BlogPostView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
38,12 → 39,15
 
private static final Logger logger = Logger.getLogger(LoadCourseUnitService.class);
 
public CourseUnitView run(long id, UserSession userSession) throws ServiceException
public CourseUnitView run(long id, boolean initTeachers, boolean initStudents, UserSession userSession) throws ServiceException
{
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(id);
 
if(c == null)
return null;
CourseUnitView cV = new CourseUnitView(c);
CourseUnitView cV = new CourseUnitView(c,initTeachers,initStudents);
 
if(c.getProgramStreamId()!= null)
{
RepositoryFile repositoryFile = repositoryService.loadView(c.getProgramStreamId());
/impl/src/java/pt/estgp/estgweb/services/courseunits/impl/CourseUnitViewResult.java
New file
0,0 → 1,14
package pt.estgp.estgweb.services.courseunits.impl;
 
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.services.common.impl.ClazzResult;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 16:13:08
* @see pt.estgp.estgweb.services.common.impl
*/
public class CourseUnitViewResult extends ClazzResult<CourseUnitView>
{
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/UsersUnitsService.java
New file
0,0 → 1,62
package pt.estgp.estgweb.services.courseunits;
 
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class UsersUnitsService implements IService
{
 
LoadCourseUnitService loadCourseUnitService = new LoadCourseUnitService();
 
public CourseUnitView addTeacher(long teacherId,long courseUnitId, UserSession userSession) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId);
TeacherImpl t = (TeacherImpl) DaoFactory.getTeacherDaoImpl().get(teacherId);
t.getId();
courseUnit.getTeachers().remove(t);
courseUnit.getTeachers().add(t);
return loadCourseUnitService.run(courseUnitId,true,true,userSession);
}
 
public CourseUnitView removeTeacher(long teacherId,long courseUnitId, UserSession userSession) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId);
TeacherImpl t = (TeacherImpl) DaoFactory.getTeacherDaoImpl().get(teacherId);
courseUnit.getTeachers().remove(t);
return loadCourseUnitService.run(courseUnitId,true,true,userSession);
}
 
public CourseUnitView addStudent(int code,long courseUnitId, UserSession userSession) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId);
StudentImpl s = (StudentImpl) DaoFactory.getStudentDaoImpl().loadBySigesCode(code);
courseUnit.getStudents().remove(s);
courseUnit.getStudents().add(s);
return loadCourseUnitService.run(courseUnitId,true,true,userSession);
}
 
public CourseUnitView removeStudent(int code,long courseUnitId, UserSession userSession) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId);
StudentImpl s = (StudentImpl) DaoFactory.getStudentDaoImpl().loadBySigesCode(code);
courseUnit.getStudents().remove(s);
return loadCourseUnitService.run(courseUnitId,true,true,userSession);
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitWorksService.java
New file
0,0 → 1,59
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.RepositoryFile;
import pt.estgp.estgweb.domain.CourseUnitAssignement;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
import java.util.Set;
import java.util.HashSet;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class LoadCourseUnitWorksService implements IService
{
 
LoadCourseUnitService loadCourseUnitService = new LoadCourseUnitService();
 
private static final Logger logger = Logger.getLogger(LoadCourseUnitWorksService.class);
 
public CourseUnitView run(long id, UserSession userSession) throws ServiceException
{
CourseUnitView cV = loadCourseUnitService.run(id,false,false,userSession);
if(cV == null)
return null;
 
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(id);
if(courseUnit.getAssignements() != null)
{
Set<CourseUnitAssignementView> views = new HashSet<CourseUnitAssignementView>();
for(CourseUnitAssignement a: courseUnit.getAssignements())
{
long delivers = DaoFactory.getCourseUnitDeliverableDaoImpl().countAssignements(a.getId());
CourseUnitAssignementView view = new CourseUnitAssignementView(a,delivers);
views.add(view);
}
cV.setCourseUnitAssignements(views);
}
return cV;
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/SearchCourseUnitService.java
New file
0,0 → 1,71
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.common.*;
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultResult;
import pt.estgp.estgweb.services.common.impl.DefaultToDo;
import pt.estgp.estgweb.services.common.impl.ClazzResult;
import pt.estgp.estgweb.services.courseunits.impl.CourseUnitViewResult;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
import java.util.List;
import java.util.ArrayList;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
* <p/>
* <p/>
* Created at 17/Out/2003 , 23:45:24
*/
public class SearchCourseUnitService implements IService
{
private static final Logger logger = Logger.getLogger(SearchCourseUnitService.class);
 
 
 
 
public ISearchResults search(String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
DefaultSearchResults searchResults = new DefaultSearchResults();
searchResults.setModule(ModuleEnum.CourseUnits);
searchResults.setQuery(search);
searchResults.setSearchType(searchType.getMessageKey());
searchResults.setPage(page);
searchResults.setMaxResultsPage(maxResults);
 
searchResults.setTotalResults(DaoFactory.getCourseUnitDaoImpl().countCourseUnits(search, searchType));
if (searchResults.getTotalResults() > 0)
{
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().search(search, searchType, maxResults, page);
if (courseUnits == null)
return searchResults;
for (CourseUnit courseUnit : courseUnits)
{
CourseUnitViewResult defaultResult = new CourseUnitViewResult();
defaultResult.setTitle(courseUnit.getName());
defaultResult.setSubTitle(courseUnit.getCourseName());
defaultResult.setSubTitleKey(false);
defaultResult.setObject(new CourseUnitView(courseUnit));
if (from == null)
defaultResult.setUrl("/startEditCourseUnitAdmin.do?id=" + courseUnit.getId());
else
defaultResult.setUrl("/user/startEditCourseUnitAdminFrom" + from + ".do?id=" + courseUnit.getId());
searchResults.addResult(defaultResult);
}
}
return searchResults;
}
 
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitWorkService.java
New file
0,0 → 1,47
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.CourseUnitAssignement;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import org.apache.log4j.Logger;
 
import java.util.Set;
import java.util.HashSet;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class CreateCourseUnitWorkService implements IService
{
 
LoadCourseUnitWorksService loadCourseUnitWorksService = new LoadCourseUnitWorksService();
 
private static final Logger logger = Logger.getLogger(CreateCourseUnitWorkService.class);
 
public CourseUnitView run(CourseUnitAssignementView cUV, long id, UserSession userSession) throws ServiceException
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().get(id);
CourseUnitAssignement cU = DomainObjectFactory.createCourseUnitAssignementImpl();
cU.setCourseUnit(courseUnit);
cUV.persistViewInObject(cU);
DaoFactory.getCourseUnitAssignementDaoImpl().save(cU);
return loadCourseUnitWorksService.run(id,userSession);
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitAdminService.java
New file
0,0 → 1,59
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.CourseUnitAssignement;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.Globals;
import org.apache.log4j.Logger;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class CreateCourseUnitAdminService implements IService
{
 
LoadCourseUnitWorksService loadCourseUnitWorksService = new LoadCourseUnitWorksService();
 
private static final Logger logger = Logger.getLogger(CreateCourseUnitAdminService.class);
 
public CourseUnitView run(CourseUnitView cUV, UserSession userSession) throws ServiceException
{
 
CourseUnit courseUnit;
if(cUV.getId() > 0)
courseUnit = DaoFactory.getCourseUnitDaoImpl().get(cUV.getId());
else
{
courseUnit = DomainObjectFactory.createCourseUnitImpl();
DaoFactory.getCourseUnitDaoImpl().save(courseUnit);
}
cUV.persistViewAdminInObject(courseUnit);
 
courseUnit.setInstitutionCode("" + Globals.SIGES_INSTITUTION_CODE.intValue());
//por o curso
//por os profs
//por alunos
//por courseCode, courseName, CourseYear relativo ao Curso Escolhido
 
 
 
return loadCourseUnitWorksService.run(courseUnit.getId(),userSession);
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/ClazzResult.java
New file
0,0 → 1,30
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.IResult;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 16:13:08
* @see pt.estgp.estgweb.services.common.impl
*/
public class ClazzResult<CLAZZ> extends DefaultResult
{
private CLAZZ object;
 
 
public ClazzResult() {
}
 
 
public CLAZZ getObject()
{
return object;
}
 
public void setObject(CLAZZ object)
{
this.object = object;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultResult.java
11,6 → 11,7
public class DefaultResult implements IResult
{
 
private String title;
private String subTitle;
private String bestFragments;
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultToDo.java
111,7 → 111,7
}
else
{
return "(" + MessageResources.getMessage(request,"from") + " " + getFrom() + ")\t" + getDescription();
return getDescription() + " (" + MessageResources.getMessage(request,"from") + ": " + getFrom() + ")";
}
}
 
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultSearchResults.java
7,6 → 7,9
import java.util.List;
import java.util.ArrayList;
 
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.httpclient.URIException;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
44,7 → 47,7
public int getTotalResults() {
return totalResults;
}
 
public void setTotalResults(int totalResults) {
this.totalResults = totalResults;
}
69,7 → 72,7
public int getPage() {
return page;
}
 
public int getPage2Screen() {
return page + 1;
}
103,6 → 106,14
 
 
public String getQuery() {
try
{
return URIUtil.encodePath(query,"ISO-8859-1");
}
catch (URIException e)
{
e.printStackTrace();
}
return query;
}
 
/impl/src/java/pt/estgp/estgweb/services/common/ModuleEnum.java
3,6 → 3,9
import pt.estgp.estgweb.services.announcements.AnnouncementsCommonServices;
import pt.estgp.estgweb.services.email.EmailCommonServices;
import pt.estgp.estgweb.services.reminders.RemindersCommonServices;
import pt.estgp.estgweb.services.blogs.BlogsCommonServices;
import pt.estgp.estgweb.services.blogs.BlogPostsCommonServices;
import pt.estgp.estgweb.services.courseunits.CourseUnitsCommonServices;
 
/**
* @author Jorge Machado
16,7 → 19,10
 
Announcements("module.Announcements", new AnnouncementsCommonServices()),
Email("module.Email", new EmailCommonServices()),
Reminders("module.Reminders", new RemindersCommonServices());
Reminders("module.Reminders", new RemindersCommonServices()),
Blogs("module.Blogs", new BlogsCommonServices()),
BlogPosts("module.BlogPosts", new BlogPostsCommonServices()),
CourseUnits("module.CourseUnits", new CourseUnitsCommonServices());
// Questionarios("module.Qustionarios", new QuestionariosCommonServices());
 
// Events("module.Events",null),
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java
81,14 → 81,15
c.setName(d.getNomeCurso());
c.setDegree(d.getGrauCurso());
c.setCode("" + d.getCodigoCurso().intValue());
c.setImportYear(year);
c.setInstitutionalCode("" + d.getCodigoInstituicao().intValue());
}
 
/**
* Update Course Units
*/
updateCourseUnits(disciplinasMapS1, "S1",logMessages);
updateCourseUnits(disciplinasMapS2, "S2",logMessages);
updateCourseUnits(disciplinasMapS1, "S1",logMessages,year);
updateCourseUnits(disciplinasMapS2, "S2",logMessages,year);
}
catch (Throwable e)
{
126,7 → 127,7
}
}
 
private void updateCourseUnits(HashMap<String, Disciplina> disciplinasMapS, String semestre, DefaultLogMessages logMessages)
private void updateCourseUnits(HashMap<String, Disciplina> disciplinasMapS, String semestre, DefaultLogMessages logMessages, String year)
{
logMessages.addMessage(new DefaultLogMessage("import.semestre.updating.course.units." + semestre, LogMessageTypeEnum.INFO));
logger.info("updating " + semestre + " course units");
144,6 → 145,7
c.setCourseCode("" + d.getCodigoCurso());
c.setCourseName("" + d.getNomeCurso());
c.setSemestre(semestre);
c.setImportYear(year);
Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(c.getCourseCode());
c.setCourse(course);
DaoFactory.getCourseUnitDaoImpl().save(c);
/impl/src/java/pt/estgp/estgweb/services/users/LoadUsersService.java
New file
0,0 → 1,51
package pt.estgp.estgweb.services.users;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.expceptions.FieldException;
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException;
import pt.estgp.estgweb.services.common.CommonServicesManager;
import org.apache.log4j.Logger;
import org.hibernate.criterion.Order;
 
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
 
import jomm.utils.BytesUtils;
import jomm.dao.impl.AbstractDao;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
* <p/>
* <p/>
* Created at 17/Out/2003 , 23:45:24
*/
public class LoadUsersService implements IService
{
private static final Logger logger = Logger.getLogger(LoadUsersService.class);
 
public List<UserView> run(Class c, UserSession userSession) throws ServiceException
{
List<UserImpl> users = AbstractDao.getCurrentSession().createCriteria(c).addOrder(Order.asc("name")).list();
List<UserView> userViews = new ArrayList<UserView>();
for(UserImpl u :users)
{
UserView view = new UserView(u);
userViews.add(view);
}
return userViews;
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/BlogsCommonServices.java
2,12 → 2,17
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.common.*;
import pt.estgp.estgweb.services.common.impl.DefaultToDo;
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultResult;
import pt.estgp.estgweb.services.announcements.AnnouncementsCommonServices;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.DomainObject;
import pt.estgp.estgweb.domain.*;
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;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
32,14 → 37,51
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) {
return null; //To change body of implemented methods use File | Settings | File Templates.
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
return search(null,search, searchType,page,maxResults,userSession);
}
 
public ISearchResults search(String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) {
return null; //To change body of implemented methods use File | Settings | File Templates.
public ISearchResults search(String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
DefaultSearchResults searchResults = new DefaultSearchResults();
searchResults.setModule(ModuleEnum.Blogs);
List<String> roles;
if (userSession == null || userSession.getUser() == null || ((UserImpl) userSession.getUser()).getRolesList() == null || ((UserImpl) userSession.getUser()).getRolesList().size() == 0)
{
roles = new ArrayList<String>();
roles.add(Globals.ALL_ROLE);
}
else
roles = ((UserImpl) userSession.getUser()).getRolesList();
 
boolean internal = true;
if (userSession.getUser() == null)
internal = false;
searchResults.setTotalResults(DaoFactory.getBlogDaoImpl().countBlogs(search, searchType, roles, null,internal));
if (searchResults.getTotalResults() > 0)
{
List<Blog> blogs = DaoFactory.getBlogDaoImpl().searchBlogs(search, searchType, maxResults, page, roles,internal);
if (blogs == null)
return searchResults;
for (Blog blog : blogs)
{
DefaultResult defaultResult = new DefaultResult();
defaultResult.setTitle(blog.getTitle());
defaultResult.setSubTitle(null);
defaultResult.setSubTitleKey(true);
defaultResult.setText(blog.getDescription());
if(from == null)
defaultResult.setUrl("/startLoadBlog.do?id=" + blog.getId());
else
defaultResult.setUrl("/user/startLoadBlogFrom" + from + ".do?id=" + blog.getId());
searchResults.addResult(defaultResult);
}
}
return searchResults;
}
 
 
public int countToDo(UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
50,7 → 92,30
 
public List<IToDo> getAllToDos(UserSession userSession)
{
return null; //To change body of implemented methods use File | Settings | File Templates.
List<IToDo> todos = new ArrayList<IToDo>();
if(userSession.getUser().isSuperuserOrAdmin())
{
List<Blog> invalidBlogs = DaoFactory.getBlogDaoImpl().loadInvalidBlogs();
for(Blog b: invalidBlogs)
{
String username = null;
if(b.getOwner() instanceof UserImpl)
username = ((UserImpl)b.getOwner()).getUsername();
DefaultToDo defaultToDo = new DefaultToDo(b.getTitle(),b.getTargetRoles(),username, "blog.validate.blog.todo","/user/startLoadBlogFromHome.do?id=" + b.getId());
todos.add(defaultToDo);
}
}
 
List<BlogPost> invalidBlogsPosts = DaoFactory.getBlogPostDaoImpl().loadInvalidBlogPostsFromOwnedBlogs(userSession.getUser().getId());
for(BlogPost b: invalidBlogsPosts)
{
String username = null;
if(b.getOwner() instanceof UserImpl)
username = ((UserImpl)b.getOwner()).getUsername();
DefaultToDo defaultToDo = new DefaultToDo(b.getTitle(),null,username, "blog.validate.post.todo","/user/startLoadBlogFromHome.do?id=" + b.getBlog().getId());
todos.add(defaultToDo);
}
return todos;
}/*This method is invoked from object creation*/
public void adviseNew(DomainObject object)
{
/impl/src/java/pt/estgp/estgweb/services/blogs/ValidateBlogPostService.java
New file
0,0 → 1,41
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.BlogPostView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.BlogPostImpl;
import pt.estgp.estgweb.domain.BlogPost;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import org.apache.log4j.Logger;
 
import java.util.List;
import java.util.ArrayList;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class ValidateBlogPostService implements IService
{
 
private static final Logger logger = Logger.getLogger(ValidateBlogPostService.class);
 
public void run(long blogpostId, boolean newStatus, UserSession userSession) throws ServiceException
{
BlogPost blogPost = DaoFactory.getBlogPostDaoImpl().get(blogpostId);
blogPost.setStatus(newStatus);
}
 
 
}
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogService.java
30,6 → 30,8
{
private static final Logger logger = Logger.getLogger(CreateBlogService.class);
 
private LoadBlogService loadBlogService = new LoadBlogService();
 
public BlogView run(BlogView bV, UserSession userSession) throws ServiceException
{
Blog b;
44,9 → 46,12
{
b = DaoFactory.getBlogDaoImpl().get(bV.getSerializable());
}
bV.persistViewInObject(b);
if(userSession.getUser().isSuperuserOrAdmin())
bV.persistViewInObjectByAdmin(b);
else
bV.persistViewInObject(b);
if(b.getTargetRoles() == null || b.getTargetRoles().length() == 0)
b.setTargetRoles(Globals.ALL_ROLE);
return new BlogView(b);
return loadBlogService.loadIndex(b.getId(),userSession);
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/BlogPostsCommonServices.java
New file
0,0 → 1,121
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.common.*;
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultResult;
import pt.estgp.estgweb.services.common.impl.DefaultToDo;
import pt.estgp.estgweb.domain.*;
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;
 
import jomm.utils.MyCalendar;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
* <p/>
* <p/>
* Created at 17/Out/2003 , 23:45:24
*/
public class BlogPostsCommonServices implements IService, IModuleCommonServices
{
private static final Logger logger = Logger.getLogger(BlogPostsCommonServices.class);
 
 
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession)
{
return 0;
}
 
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
return search(null, search, searchType, page, maxResults, userSession);
}
 
public ISearchResults search(String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
DefaultSearchResults searchResults = new DefaultSearchResults();
searchResults.setModule(ModuleEnum.BlogPosts);
List<String> roles;
if (userSession == null || userSession.getUser() == null || ((UserImpl) userSession.getUser()).getRolesList() == null || ((UserImpl) userSession.getUser()).getRolesList().size() == 0)
{
roles = new ArrayList<String>();
roles.add(Globals.ALL_ROLE);
}
else
roles = userSession.getUser().getRolesList();
 
boolean internal = true;
if (userSession.getUser() == null)
internal = false;
searchResults.setTotalResults(DaoFactory.getBlogPostDaoImpl().countBlogPosts(search, searchType, roles, null, internal));
if (searchResults.getTotalResults() > 0)
{
List<BlogPost> blogPosts = DaoFactory.getBlogPostDaoImpl().searchBlogPosts(search, searchType, maxResults, page, roles, internal);
if (blogPosts == null)
return searchResults;
for (BlogPost blogPost : blogPosts)
{
DefaultResult defaultResult = new DefaultResult();
defaultResult.setTitle(blogPost.getTitle());
defaultResult.setSubTitle(null);
defaultResult.setSubTitleKey(true);
defaultResult.setText(blogPost.getText());
MyCalendar myCalendar = new MyCalendar();
if (myCalendar.getMonth() != blogPost.getMonth() || myCalendar.getYear() != blogPost.getYear())
{
if (from == null)
defaultResult.setUrl("/startLoadBlogMonth.do?month=" + blogPost.getMonth() + "&year=" + blogPost.getYear() + "&id=" + blogPost.getBlog().getId() + "#post" + blogPost.getId());
else
defaultResult.setUrl("/user/startLoadBlogMonthFrom" + from + ".do?month=" + blogPost.getMonth() + "&year=" + blogPost.getYear() + "&id=" + blogPost.getBlog().getId() + "#post" + blogPost.getId());
}
else
{
if (from == null)
defaultResult.setUrl("/startLoadBlog.do?id=" + blogPost.getBlog().getId() + "#post" + blogPost.getId());
else
defaultResult.setUrl("/user/startLoadBlogFrom" + from + ".do?id=" + blogPost.getBlog().getId() + "#post" + blogPost.getId());
}
searchResults.addResult(defaultResult);
}
}
return searchResults;
}
 
 
public int countToDo(UserSession userSession)
{
return 0;
}
 
public IToDoCat getToDo(UserSession userSession)
{
return null;
}
 
public List<IToDo> getAllToDos(UserSession userSession)
{
return null;
}/*This method is invoked from object creation*/
 
public void adviseNew(DomainObject object)
{
//To change body of implemented methods use File | Settings | File Templates.
}
 
public void adviseUpdate(DomainObject object)
{
//To change body of implemented methods use File | Settings | File Templates.
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogPostService.java
63,7 → 63,14
bPV.getImage().setImage(null);
}
 
 
Blog b = DaoFactory.getBlogDaoImpl().load(blogId);
 
if(b.isAutoValidation() || b.isOwnedBy(userSession.getUser()) || userSession.getUser().isSuperuserOrAdmin())
{
bPV.setStatus(true);
}
bPV.persistViewInObject(bP);
bP.setOwner(userSession.getUser());
bP.setBlog(b);
/impl/src/java/pt/estgp/estgweb/services/announcements/AnnouncementsCommonServices.java
66,9 → 66,9
defaultResult.setSubTitleKey(true);
defaultResult.setText(a.getText());
if(from == null)
defaultResult.setUrl("/loadAnnouncement.do?id=" + a.getId() + "&dispatch=load");
defaultResult.setUrl("/startLoadAnnouncement.do?id=" + a.getId());
else
defaultResult.setUrl("/startLoadAnnouncementFrom" + from + ".do?id=" + a.getId() + "&dispatch=load");
defaultResult.setUrl("/user/startLoadAnnouncementFrom" + from + ".do?id=" + a.getId() + "&dispatch=load");
searchResults.addResult(defaultResult);
}
}
98,7 → 98,7
List<Announcement> invalidAnnouncements = DaoFactory.getAnnouncementDaoImpl().loadInvalidAnnouncements();
for(Announcement a: invalidAnnouncements)
{
DefaultToDo defaultToDo = new DefaultToDo(a.getTitle(),a.getTargetRoles(),((UserImpl)a.getOwner()).getUsername(), "announcements.type." + a.getType(),"/user/startEditAnnouncementFromServiceZone.do?id=" + a.getId());
DefaultToDo defaultToDo = new DefaultToDo(a.getTitle(),a.getTargetRoles(),((UserImpl)a.getOwner()).getUsername(), "announcements.type." + a.getType(),"/user/startEditAnnouncementFromHome.do?id=" + a.getId());
todos.add(defaultToDo);
}
}
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
56,6 → 56,6
 
public boolean isInternal()
{
return true; //To change body of implemented methods use File | Settings | File Templates.
return true;
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/BlogPostDaoImpl.java
2,14 → 2,21
 
import pt.estgp.estgweb.domain.BlogImpl;
import pt.estgp.estgweb.domain.BlogPostImpl;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.BlogPost;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
import java.util.List;
import java.util.Calendar;
import java.util.Iterator;
import java.util.ArrayList;
 
import static org.hibernate.criterion.Restrictions.*;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Criterion;
import org.hibernate.Query;
import org.hibernate.Criteria;
import jomm.utils.MyCalendar;
 
/**
76,4 → 83,61
List<Object[]> l = q.list();
return l;
}
 
public List<BlogPost> loadInvalidBlogPostsFromOwnedBlogs(long ownerId)
{
return createQuery("select c from c in class " + getReferenceClass().getName() +
" where c.blog.owner.id = " + ownerId +
" and c.status = false"+
" order by c.updateDate")
.list();
}
 
private Criteria createRestrictionsCriteria(List<String> roles, boolean internal)
{
if (roles == null)
{
roles = new ArrayList<String>();
}
roles.add("all");
Criteria criteria = createCriteria();
criteria.createAlias("blog", "b");
Criterion coRole = null;
for (String role : roles)
{
Criterion cor = like("b.targetRoles", "%" + role + "%");
if (coRole == null)
coRole = cor;
else
coRole = or(coRole, cor);
}
 
if (!internal)
criteria.add(eq("b.internal", false));
 
criteria.add(coRole)
 
.add(eq("b.status", true))
.add(eq("status", true))
.addOrder(Order.desc("saveDate"));
return criteria;
}
 
public int countBlogPosts(String query, SearchTypeEnum searchType, List<String> roles, Object o, boolean internal)
{
Criterion c = DaoUtils.createSearchQuery(query,searchType,"text","title");
Criteria criteria = createRestrictionsCriteria(roles, internal);
criteria.add(c);
return criteria.list().size();
}
 
public List<BlogPost> searchBlogPosts(String query, SearchTypeEnum searchTypeEnum, int maxBlogs, int page, List<String> roles, boolean internal)
{
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "text", "title");
Criteria criteria = createRestrictionsCriteria(roles, internal);
criteria.add(c)
.setMaxResults(maxBlogs)
.setFirstResult(page * maxBlogs);
return criteria.list();
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java
1,6 → 1,7
package pt.estgp.estgweb.domain.dao.impl;
 
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
170,7 → 171,6
 
public List<Announcement> searchAnnouncements(String query, SearchTypeEnum searchTypeEnum, int maxAnnouncements, int page, List<String> roles, String subTarget, boolean internal)
{
 
Criterion c = createSearchQuery(query, searchTypeEnum);
Criteria criteria = createMaxAnnouncementsPageRolesTypeCriteria(page, maxAnnouncements, roles, null, null, internal);
criteria.add(c);
188,33 → 188,7
 
public Criterion createSearchQuery(String query, SearchTypeEnum searchTypeEnum)
{
Criterion c = null;
if (searchTypeEnum == SearchTypeEnum.ExactPhrase)
c = or(like("text", "%" + query + "%"), like("title", "%" + query + "%"));
else if (searchTypeEnum == SearchTypeEnum.AllWords)
{
String[] fields = query.split(" ");
for (String field : fields)
{
if (c == null)
c = or(like("text", "%" + field + "%"), like("title", "%" + field + "%"));
else
c = and(c, or(like("text", "%" + field + "%"), like("title", "%" + field + "%")));
}
 
}
else
{
String[] fields = query.split(" ");
for (String field : fields)
{
if (c == null)
c = or(like("text", "%" + field + "%"), like("title", "%" + field + "%"));
else
c = or(c, or(like("text", "%" + field + "%"), like("title", "%" + field + "%")));
}
}
return c;
return DaoUtils.createSearchQuery(query,searchTypeEnum,"text","title");
}
 
public List<AnnouncementImpl> loadOwnedAnnouncements(long ownerId)
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitAssignementDaoImpl.java
New file
0,0 → 1,29
package pt.estgp.estgweb.domain.dao.impl;
 
import static org.hibernate.criterion.Restrictions.*;
import org.hibernate.Query;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class CourseUnitAssignementDaoImpl extends CourseUnitAssignementDao
{
 
 
private CourseUnitAssignementDaoImpl()
{
}
 
public static CourseUnitAssignementDaoImpl getInstance()
{
if (myInstance == null)
myInstance = new CourseUnitAssignementDaoImpl();
return (CourseUnitAssignementDaoImpl) myInstance;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDeliverableDaoImpl.java
New file
0,0 → 1,34
package pt.estgp.estgweb.domain.dao.impl;
 
import org.hibernate.Query;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class CourseUnitDeliverableDaoImpl extends CourseUnitDeliverableDao
{
 
 
private CourseUnitDeliverableDaoImpl()
{
}
 
public static CourseUnitDeliverableDaoImpl getInstance()
{
if (myInstance == null)
myInstance = new CourseUnitDeliverableDaoImpl();
return (CourseUnitDeliverableDaoImpl) myInstance;
}
 
public long countAssignements(long courseUnitAssignementId)
{
Query q = createQuery("select count(c) from c in class " + getReferenceClass().getName() + " where c.courseUnitAssignement.id = " + courseUnitAssignementId);
return (Long) q.iterate().next();
 
// return createCriteria().add(eq("courseUnitAssignement.id",courseUnitAssignementId)).list().size();
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
1,7 → 1,15
package pt.estgp.estgweb.domain.dao.impl;
 
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.TeacherImpl;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.estgp.estgweb.utils.DatesUtils;
import static org.hibernate.criterion.Restrictions.*;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.Criteria;
 
import java.util.List;
import java.util.Set;
48,7 → 56,58
}
 
 
public int countCourseUnits(String query, SearchTypeEnum searchType)
{
Criterion c = DaoUtils.createSearchQuery(query,searchType,"objectives","name");
return createCriteria().add(c).list().size();
}
 
public List<CourseUnit> search(String query, SearchTypeEnum searchTypeEnum, int maxUnits, int page)
{
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "objectives", "name");
Criteria criteria = createCriteria();
criteria.add(c)
.addOrder(Order.asc("name"))
.setMaxResults(maxUnits)
.setFirstResult(page * maxUnits);
return criteria.list();
}
 
public int countCourseUnitsActualYear(String query, SearchTypeEnum searchType)
{
Criterion c = DaoUtils.createSearchQuery(query,searchType,"objectives","name");
return createCriteria()
.add(c)
.add(eq("importYear", DatesUtils.getImportYear()))
.list().size();
}
 
public List<CourseUnit> searchActualYear(String query, SearchTypeEnum searchTypeEnum, int maxUnits, int page)
{
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "objectives", "name");
Criteria criteria = createCriteria();
criteria.add(c)
.add(eq("importYear", DatesUtils.getImportYear()))
.addOrder(Order.asc("name"))
.setMaxResults(maxUnits)
.setFirstResult(page * maxUnits);
return criteria.list();
}
 
public List<CourseUnit> loadMissingObjectives(long teacherId)
{
//todo falta a projeccao do teacher id
return createCriteria()
.add(eq("importYear", DatesUtils.getImportYear()))
.add((or(isNull("objectives"),eq("objectives",""))))
.createAlias("teachers", "th")
.add(eq("th.id",teacherId))
.list();
}
 
 
 
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/BlogDaoImpl.java
3,6 → 3,9
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.BlogImpl;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
import java.util.List;
import java.util.Date;
45,8 → 48,8
if (roles == null)
{
roles = new ArrayList<String>();
roles.add("all");
}
roles.add("all");
Criteria criteria = createCriteria();
Criterion co = null;
for (String role : roles)
70,4 → 73,58
{
return createCriteria().add(eq("name", name)).list();
}
 
public List<Blog> loadInvalidBlogs()
{
return createCriteria()
.add(eq("status",false))
.addOrder(Order.asc("id")).list();
}
 
private Criteria createRestrictionsCriteria(List<String> roles, boolean internal)
{
if (roles == null)
{
roles = new ArrayList<String>();
}
roles.add("all");
Criteria criteria = createCriteria();
Criterion coRole = null;
for (String role : roles)
{
Criterion cor = like("targetRoles", "%" + role + "%");
if (coRole == null)
coRole = cor;
else
coRole = or(coRole, cor);
}
 
if (!internal)
criteria.add(eq("internal", false));
 
criteria.add(coRole)
.add(eq("status", true))
.addOrder(Order.desc("saveDate"));
return criteria;
}
 
 
public int countBlogs(String query, SearchTypeEnum searchType, List<String> roles, Object o, boolean internal)
{
Criterion c = DaoUtils.createSearchQuery(query,searchType,"description","title");
Criteria criteria = createRestrictionsCriteria(roles, internal);
criteria.add(c);
return criteria.list().size();
}
 
public List<Blog> searchBlogs(String query, SearchTypeEnum searchTypeEnum, int maxBlogs, int page, List<String> roles, boolean internal)
{
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "description", "title");
Criteria criteria = createRestrictionsCriteria(roles, internal);
criteria.add(c)
.setMaxResults(maxBlogs)
.setFirstResult(page * maxBlogs);
return criteria.list();
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/StudentDaoImpl.java
27,4 → 27,9
{
return (Student) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult();
}
 
public Student loadBySigesCode(String sigesCode)
{
return (Student) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult();
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitQuestionDaoImpl.java
New file
0,0 → 1,50
package pt.estgp.estgweb.domain.dao.impl;
 
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.CourseUnitQuestion;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.estgp.estgweb.utils.DatesUtils;
 
import java.util.List;
 
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Criteria;
import static org.hibernate.criterion.Restrictions.*;
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class CourseUnitQuestionDaoImpl extends CourseUnitQuestionDao
{
 
 
private CourseUnitQuestionDaoImpl()
{
}
 
public static CourseUnitQuestionDaoImpl getInstance()
{
if (myInstance == null)
myInstance = new CourseUnitQuestionDaoImpl();
return (CourseUnitQuestionDaoImpl) myInstance;
}
 
public List<CourseUnitQuestion> loadMissingQuestions(long teacherId)
{
//todo falta meter a projeccao para o teacherId
return createCriteria()
 
.createAlias("courseUnit","cu")
.createAlias("cu.teachers","th")
.add(eq("cu.importYear", DatesUtils.getImportYear()))
.add(eq("answred",false))
.add(eq("th.id",teacherId))
.list();
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoUtils.java
New file
0,0 → 1,46
package pt.estgp.estgweb.domain.dao;
 
import org.hibernate.criterion.Criterion;
import static org.hibernate.criterion.Restrictions.or;
import static org.hibernate.criterion.Restrictions.like;
import static org.hibernate.criterion.Restrictions.and;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
/**
* @author Jorge Machado
* @date 6/Jun/2008
* @see pt.estgp.estgweb.domain.dao
*/
public class DaoUtils
{
public static Criterion createSearchQuery(String query, SearchTypeEnum searchTypeEnum, String field1, String field2)
{
Criterion c = null;
if (searchTypeEnum == SearchTypeEnum.ExactPhrase)
c = or(like(field1, "%" + query + "%"), like(field2, "%" + query + "%"));
else if (searchTypeEnum == SearchTypeEnum.AllWords)
{
String[] fields = query.split(" ");
for (String field : fields)
{
if (c == null)
c = or(like(field1, "%" + field + "%"), like(field2, "%" + field + "%"));
else
c = and(c, or(like(field1, "%" + field + "%"), like(field2, "%" + field + "%")));
}
}
else
{
String[] fields = query.split(" ");
for (String field : fields)
{
if (c == null)
c = or(like(field1, "%" + field + "%"), like(field2, "%" + field + "%"));
else
c = or(c, or(like(field1, "%" + field + "%"), like(field2, "%" + field + "%")));
}
}
return c;
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java
25,6 → 25,10
{
return CourseDaoImpl.getInstance();
}
public static CourseUnitQuestionDaoImpl getCourseUnitQuestionDaoImpl()
{
return CourseUnitQuestionDaoImpl.getInstance();
}
 
public static CourseUserAssociationDaoImpl getCourseUserAssociationDaoImpl()
{
86,11 → 90,23
return BlogPostDaoImpl.getInstance();
}
 
public static CourseUnitDeliverableDaoImpl getCourseUnitDeliverableDaoImpl()
{
return CourseUnitDeliverableDaoImpl.getInstance();
}
 
public static CourseUnitAssignementDaoImpl getCourseUnitAssignementDaoImpl()
{
return CourseUnitAssignementDaoImpl.getInstance();
}
 
 
public static CourseUnitDaoImpl getCourseUnitDaoImpl()
{
return CourseUnitDaoImpl.getInstance();
}
 
 
public static CourseUnitBlogDaoImpl getCourseUnitBlogDaoImpl()
{
return CourseUnitBlogDaoImpl.getInstance();
/impl/src/java/pt/estgp/estgweb/domain/BlogImpl.java
1,6 → 1,7
package pt.estgp.estgweb.domain;
 
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.Globals;
 
import java.util.Date;
import java.util.List;
27,7 → 28,7
 
public boolean canAddPost(GenericUserImpl user)
{
return user.hasRole(getTargetRolesList()) || user.isSuperuserOrAdmin() || isOwnedBy(user);
return RoleManager.hasRole(getTargetRolesList(), Globals.ALL_ROLE) || user.hasRole(getTargetRolesList()) || user.isSuperuserOrAdmin() || isOwnedBy(user);
}
 
public boolean canAddContent(GenericUserImpl u)
74,11 → 75,11
 
public boolean canLoad(GenericUserImpl u)
{
return true;
return isStatus() || isOwnedBy(u) || u.isSuperuserOrAdmin();
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl u)
{
return true;
return canLoad(u);
}
}
/impl/src/java/pt/estgp/estgweb/domain/BlogPostImpl.java
45,11 → 45,16
 
public boolean canLoad(GenericUserImpl u)
{
return true;
return isStatus() || isOwnedBy(u) || u.isSuperuserOrAdmin();
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl u)
{
return true;
return canLoad(u);
}
 
public boolean isOwnedBy(GenericUser u)
{
return super.isOwnedBy(u) || getBlog().isOwnedBy(u);
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/BlogPostView.java
139,6 → 139,11
return status;
}
 
public boolean getStatus()
{
return status;
}
 
public void setStatus(boolean status)
{
this.status = status;
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitAssignementView.java
New file
0,0 → 1,155
package pt.estgp.estgweb.domain.views;
 
import pt.estgp.estgweb.domain.CourseUnitAssignement;
import pt.estgp.estgweb.domain.CourseUnitAssignementImpl;
import pt.estgp.estgweb.web.utils.DatesUtils;
 
import java.io.Serializable;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
* @time 19:34:49
* @see pt.estgp.estgweb.domain.views
*/
public class CourseUnitAssignementView extends DomainObjectView
{
 
private long id;
private String title;
private String description;
private long delivers;
private boolean status;
private String deliverType;
private boolean lateDelivers;
private String deliverDate;
private CourseUnitAssignement courseUnitAssignement;
 
public Class getReferenceClass()
{
return CourseUnitAssignementImpl.class;
}
 
public Serializable getSerializable()
{
return id;
}
 
public CourseUnitAssignementView()
{
}
 
public CourseUnitAssignementView(CourseUnitAssignement courseUnitAssignement, long delivers)
{
super(courseUnitAssignement);
this.courseUnitAssignement = courseUnitAssignement;
this.title = courseUnitAssignement.getTitle();
this.description = courseUnitAssignement.getDescription();
this.status = courseUnitAssignement.isStatus();
this.delivers = delivers;
this.deliverType = courseUnitAssignement.getDeliverType();
this.deliverDate = DatesUtils.getStringFromDate(courseUnitAssignement.getDeliverDate());
this.lateDelivers = courseUnitAssignement.isLateDelivers();
}
 
public void persistViewInObject(CourseUnitAssignement c)
{
c.setTitle(title);
c.setDescription(description);
c.setStatus(status);
c.setLateDelivers(lateDelivers);
c.setDeliverDate(DatesUtils.getDateFromString(deliverDate));
c.setDeliverType(deliverType);
}
 
public long getId()
{
return id;
}
 
public void setId(long id)
{
this.id = id;
}
 
public CourseUnitAssignement getCourseUnitAssignement()
{
return courseUnitAssignement;
}
 
public void setCourseUnitAssignement(CourseUnitAssignement courseUnitAssignement)
{
this.courseUnitAssignement = courseUnitAssignement;
}
 
public boolean isStatus()
{
return status;
}
 
public void setStatus(boolean status)
{
this.status = status;
}
 
public long getDelivers()
{
return delivers;
}
 
public void setDelivers(int delivers)
{
this.delivers = delivers;
}
 
public String getDescription()
{
return description;
}
 
public void setDescription(String description)
{
this.description = description;
}
 
public String getTitle()
{
return title;
}
 
public void setTitle(String title)
{
this.title = title;
}
 
 
public String getDeliverType()
{
return deliverType;
}
 
public void setDeliverType(String deliverType)
{
this.deliverType = deliverType;
}
 
public boolean isLateDelivers()
{
return lateDelivers;
}
 
public void setLateDelivers(boolean lateDelivers)
{
this.lateDelivers = lateDelivers;
}
 
public String getDeliverDate()
{
return deliverDate;
}
 
public void setDeliverDate(String deliverDate)
{
this.deliverDate = deliverDate;
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java
1,10 → 1,7
package pt.estgp.estgweb.domain.views;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.GenericUser;
import pt.estgp.estgweb.domain.IOwned;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.utils.RoleManager;
 
import java.io.Serializable;
27,6 → 24,7
 
 
private long id;
private int code;
private String name;
private List<String> userRoles;
private String address;
76,6 → 74,14
this.skype=user.getSkype();
this.gmail=user.getGmail();
this.msn=user.getMsn();
if(user instanceof Teacher)
{
code = ((Teacher)user).getSigesCode();
}
else if(user instanceof Student)
{
code = ((Student)user).getSigesCode();
}
}
 
public void persistViewInObjectAdmin(User user)
102,6 → 108,14
{
user.setPassword(BytesUtils.getDigestMD5Hex(password));
}
if(user instanceof Teacher)
{
((Teacher)user).setSigesCode(code);
}
else if(user instanceof Student)
{
((Student)user).setSigesCode(code);
}
}
 
public void persistViewInObjectUser(User user)
135,6 → 149,16
}
 
 
public int getCode()
{
return code;
}
 
public void setCode(int code)
{
this.code = code;
}
 
public boolean isPasswordLocal()
{
return passwordLocal;
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
6,6 → 6,8
import java.io.Serializable;
import java.util.Set;
import java.util.List;
import java.util.ArrayList;
import java.util.HashSet;
 
/**
* @author Jorge Machado
22,15 → 24,19
private String code;
private String courseCode;
private String courseName;
private String semestre;
private String importYear;
private BlogView blog;
private Set<CourseUnitAnnouncement> announcements;
private CourseUnit courseUnit;
private Set<TeacherImpl> teachers;
private Set<StudentImpl> students;
private Set<UserView> teachers;
private Set<UserView> students;
 
private String objectives;
private String programStreamId;
private int programSize;
private String extension;
private Set<CourseUnitAssignementView> courseUnitAssignements;
 
public Class getReferenceClass()
{
45,25 → 51,74
public CourseUnitView()
{
}
public CourseUnitView(CourseUnit courseUnit, boolean initTeachers, boolean initStudents )
{
super(courseUnit);
init(courseUnit, initTeachers, initStudents);
}
 
public CourseUnitView(CourseUnit courseUnit)
{
super(courseUnit);
init(courseUnit, false,false);
}
private void init(CourseUnit courseUnit, boolean initTeachers, boolean initStudents)
{
this.courseUnit = courseUnit;
this.courseName = courseUnit.getCourseName();
this.name = courseUnit.getName();
this.code = courseUnit.getCode();
this.importYear = courseUnit.getImportYear();
this.semestre = courseUnit.getSemestre();
this.importYear = courseUnit.getImportYear();
this.courseCode = courseUnit.getCourseCode();
// if(courseUnit.getBlog() != null)
// this.blog = new BlogView(courseUnit.getBlog());
this.id = courseUnit.getId();
this.students = courseUnit.getStudents();
this.teachers = courseUnit.getTeachers();
this.announcements = courseUnit.getAnnouncements();
this.objectives = courseUnit.getObjectives();
this.programStreamId = courseUnit.getProgramStreamId();
teachers = new HashSet<UserView>();
students = new HashSet<UserView>();
if(initTeachers && courseUnit.getTeachers() != null)
{
for(TeacherImpl t: courseUnit.getTeachers())
{
UserView u = new UserView(t);
teachers.add(u);
}
}
if(initStudents && courseUnit.getStudents() != null)
{
for(StudentImpl s: courseUnit.getStudents())
{
UserView u = new UserView(s);
students.add(u);
}
}
}
 
public int getTeachersSize()
{
if(teachers != null)
return teachers.size();
return 0;
}
 
public int getStudentsSize()
{
if(students != null)
return students.size();
return 0;
}
public void setCourseUnitAssignements(Set<CourseUnitAssignementView> courseUnitAssignements)
{
this.courseUnitAssignements = courseUnitAssignements;
}
 
public Set<CourseUnitAssignementView> getCourseUnitAssignements()
{
return courseUnitAssignements;
}
 
public void setId(long id)
{
this.id = id;
94,6 → 149,14
c.setObjectives(objectives);
}
 
public void persistViewAdminInObject(CourseUnit c)
{
c.setImportYear(importYear);
c.setName(name);
c.setCode(code);
c.setSemestre(semestre);
}
 
public String getObjectives()
{
return objectives;
129,6 → 192,26
return code;
}
 
public String getSemestre()
{
return semestre;
}
 
public void setSemestre(String semestre)
{
this.semestre = semestre;
}
 
public String getImportYear()
{
return importYear;
}
 
public void setImportYear(String importYear)
{
this.importYear = importYear;
}
 
public String getCourseCode()
{
return courseCode;
171,12 → 254,12
return announcements;
}
 
public Set<TeacherImpl> getTeachers()
public Set<UserView> getTeachers()
{
return teachers;
}
 
public Set<StudentImpl> getStudents()
public Set<UserView> getStudents()
{
return students;
}
204,7 → 287,7
{
return null;
}
 
/**
* Not implemented
* @return
223,4 → 306,7
{
return true;
}
 
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/views/BlogView.java
34,6 → 34,7
private List<MonthPosts> months;
private int month;
private int year;
boolean autoValidation;
 
private List<BlogPostView> lastPosts;
 
53,6 → 54,8
this.id = blog.getId();
this.owner = blog.getOwner();
this.name = blog.getName();
this.internal = blog.isInternal();
autoValidation = blog.isAutoValidation();
}
 
public void persistViewInObject(Blog blog)
63,11 → 66,26
blog.setTargetRoles(RoleManager.getSerialRoles(targetRoles));
if(image != null)
blog.setImage(image);
blog.setStatus(status);
blog.setInternal(internal);
blog.setAutoValidation(autoValidation);
}
public void persistViewInObjectByAdmin(Blog blog)
{
persistViewInObject(blog);
blog.setStatus(status);
}
 
 
public boolean isAutoValidation()
{
return autoValidation;
}
 
public void setAutoValidation(boolean autoValidation)
{
this.autoValidation = autoValidation;
}
 
public String getName()
{
return name;
/impl/src/java/pt/estgp/estgweb/filters/filters/OwnerUsersClassBean.java
New file
0,0 → 1,47
package pt.estgp.estgweb.filters.filters;
 
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException;
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.IOwned;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.utils.ReflectionBean;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
import org.apache.log4j.Logger;
 
public class OwnerUsersClassBean extends LoadControlFilter
{
private static final Logger logger = Logger.getLogger(OwnerUsersClassBean.class);
 
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception
{
 
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY);
 
if(userSession.getUser() == null)
{
logger.info("try access restricted area:" + request.getRequester());
throw new NeedAuthenticationException();
}
 
if(userSession.getUser().isSuperuser())
return;
 
Object bean = LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters());
 
ReflectionBean rbean = new ReflectionBean("o."+(String) filterParameters.getParameter(2));
IOwned iOwned = (IOwned) rbean.invoke(bean);
 
 
if(!iOwned.isOwnedBy(userSession.getUser()))
{
logger.warn(userSession.getUser().getUsername() + ": try access restricted area");
throw new AccessDeniedOperationException("fail.owner");
}
}
}
/impl/src/java/pt/estgp/estgweb/web/tags/CantManageTag.java
6,12 → 6,14
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.http.HttpServletRequest;
 
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.IOwned;
import pt.estgp.estgweb.domain.IInternal;
import pt.estgp.estgweb.domain.IValid;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.web.UserSessionProxy;
 
public class CantManageTag extends BodyTagSupport
{
68,7 → 70,7
public boolean go() throws JspException
{
 
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY);
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest((HttpServletRequest) pageContext.getRequest());
 
IOwned owned = (IOwned) RequestUtils.lookup(pageContext, name, property, null);
 
/impl/src/java/pt/estgp/estgweb/web/form/courseunits/CourseUnitsForm.java
4,8 → 4,23
import org.apache.struts.action.ActionErrors;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.domain.TeacherImpl;
import pt.estgp.estgweb.domain.Teacher;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
17,10 → 32,25
private static final Logger logger = Logger.getLogger(CourseUnitsForm.class);
 
CourseUnitView courseUnitView = new CourseUnitView();
//aux
long courseId;
long id;
long teacherId;
int studentCode;
 
//courseunit
FormFile programFile;
CourseUnitAssignementView courseUnitAssignementView = new CourseUnitAssignementView();
 
//search
String textToSearch;
String searchType = SearchTypeEnum.AllWords.getMessageKey();
int page;
 
//lists
List<UserView> teachers = null;
 
 
public CourseUnitView getCourseUnitView()
{
return courseUnitView;
41,6 → 71,125
this.programFile = programFile;
}
 
public List<String> getImportYears()
{
return DatesUtils.getImportYears(5);
}
 
 
public CourseUnitAssignementView getCourseUnitAssignementView()
{
return courseUnitAssignementView;
}
 
public void setCourseUnitAssignementView(CourseUnitAssignementView courseUnitAssignementView)
{
this.courseUnitAssignementView = courseUnitAssignementView;
}
 
 
public long getId()
{
return id;
}
 
public void setId(long id)
{
this.id = id;
}
 
public long getTeacherId()
{
return teacherId;
}
 
public void setTeacherId(long teacherId)
{
this.teacherId = teacherId;
}
 
 
public int getStudentCode()
{
return studentCode;
}
 
public void setStudentCode(int studentCode)
{
this.studentCode = studentCode;
}
 
public String getTextToSearch()
{
return textToSearch;
}
 
public void setTextToSearch(String textToSearch)
{
this.textToSearch = textToSearch;
}
 
 
public String getSearchType()
{
return searchType;
}
 
public void setSearchType(String searchType)
{
this.searchType = searchType;
}
 
public SearchTypeEnum getSearchTypeEnum()
{
return SearchTypeEnum.parse(searchType);
}
 
public void setSearchTypeEnum(SearchTypeEnum searchTypeEnum)
{
searchType = searchTypeEnum.getMessageKey();
}
 
 
public int getPage()
{
return page;
}
 
public void setPage(int page)
{
this.page = page;
}
 
public void initTeachers(HttpServletRequest request, HttpServletResponse response)
{
if(teachers == null)
{
IServiceManager sm = null;
try
{
sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{Teacher.class};
teachers = (List<UserView>) sm.execute(RequestUtils.getRequester(request, response), "LoadUsers", args, names);
}
catch (Throwable e)
{
logger.error(e,e);
}
}
}
 
public List<UserView> getTeachers()
{
return teachers;
}
 
public void setTeachers(List<UserView> teachers)
{
this.teachers = teachers;
}
 
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest)
{
ActionErrors errors = new ActionErrors();
/impl/src/java/pt/estgp/estgweb/web/UserSessionProxy.java
8,6 → 8,7
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletRequest;
 
/**
* @author Jorge Machado
64,8 → 65,10
}
}
 
public static UserSession loadUserSessionFromRequest(HttpServletRequest request) throws Throwable
public static UserSession loadUserSessionFromRequest(HttpServletRequest request)
{
return (UserSession) request.getAttribute(Globals.USER_SESSION_KEY);
}
 
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsAdminController.java
New file
0,0 → 1,300
package pt.estgp.estgweb.web.controllers.courseunits;
 
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
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.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
* @author Jorge Machado
* @author Fabio Velez
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class CourseUnitsAdminController extends CourseUnitsController
{
private static final Logger logger = Logger.getLogger(CourseUnitsAdminController.class);
 
 
public ActionForward createOrUpdateAdmin(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{cUF.getCourseUnitView()};
long id = cUF.getCourseUnitView().getId();
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "CreateCourseUnitAdmin", args, names);
request.setAttribute("CourseUnitView",cV);
cUF.setCourseUnitView(cV);
if(id > 0)
addMessage(request,"courseunit.updated.success","" + cV.getCode());
else
addMessage(request,"courseunit.created.success","" + cV.getCode());
return mapping.getInputForward();
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward edit(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{cUF.getId(),true,true};
 
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnit", args, names);
request.setAttribute("CourseUnitView",cV);
cUF.setCourseUnitView(cV);
cUF.initTeachers(request,response);
return mapping.findForward("edit");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward addTeacher(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
long teacherId = cUF.getTeacherId();
long courseUnitId = cUF.getCourseUnitView().getId();
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{teacherId,courseUnitId};
 
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "AddTeacherCourseUnit", args, names);
request.setAttribute("CourseUnitView",cV);
cUF.setCourseUnitView(cV);
cUF.initTeachers(request,response);
return mapping.findForward("edit");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward addStudent(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
int studentCode = cUF.getStudentCode();
long courseUnitId = cUF.getCourseUnitView().getId();
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{studentCode,courseUnitId};
 
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "AddStudentCourseUnit", args, names);
request.setAttribute("CourseUnitView",cV);
cUF.setCourseUnitView(cV);
cUF.initTeachers(request,response);
return mapping.findForward("edit");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward removeTeacher(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
long teacherId = cUF.getId(); //can't come in SELECT BOX because is for choose
long courseUnitId = cUF.getCourseUnitView().getId();
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{teacherId,courseUnitId};
 
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "RemoveTeacherCourseUnit", args, names);
request.setAttribute("CourseUnitView",cV);
cUF.setCourseUnitView(cV);
cUF.initTeachers(request,response);
return mapping.findForward("edit");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward removeStudent(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
int studentCode = (int) cUF.getId(); //can't come in SELECT BOX because is for choose
long courseUnitId = cUF.getCourseUnitView().getId();
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{studentCode,courseUnitId};
 
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "RemoveStudentCourseUnit", args, names);
request.setAttribute("CourseUnitView",cV);
cUF.setCourseUnitView(cV);
cUF.initTeachers(request,response);
return mapping.findForward("edit");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward newAdmin(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
CourseUnitView cV = new CourseUnitView();
request.setAttribute("CourseUnitView",cV);
cUF.setCourseUnitView(cV);
cUF.initTeachers(request,response);
return mapping.findForward("load");
}
 
public ActionForward search(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{"ServiceZone",cUF.getTextToSearch(),cUF.getSearchTypeEnum(),cUF.getPage(), Globals.SEARCH_MAX_RESULTS};
ISearchResults results = (ISearchResults) sm.execute(RequestUtils.getRequester(request, response), "SearchCourseUnit", args, names);
request.setAttribute("ISearchResults",results);
return mapping.findForward("search");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
 
 
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java
1,44 → 1,30
package pt.estgp.estgweb.web.controllers.courseunits;
 
import pt.estgp.estgweb.web.controllers.AddRolesController;
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.hibernate.ObjectNotFoundException;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.controllers.announcements.AnnouncementsController;
import pt.estgp.estgweb.web.form.announcements.AnnouncementsForm;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm;
import pt.estgp.estgweb.web.utils.DomainUtils;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
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.ExecutedFilterException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ExecutedFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterExpressionException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
import org.hibernate.ObjectNotFoundException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.Serializable;
import java.util.List;
 
import com.sun.deploy.association.utility.AppAssociationReaderFactory;
 
/**
* @author Jorge Machado
65,7 → 51,7
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{id};
Object[] args = new Object[]{id,false,false};
try
{
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnit", args, names);
107,10 → 93,99
}
}
 
public ActionForward loadWorks(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
long id = Long.parseLong(request.getParameter("id"));
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{id};
try
{
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnitWorks", args, names);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
return mapping.findForward("load.works");
}
catch (ExecutedFilterException e)
{
if (e.getCause() instanceof ObjectNotFoundException)
{
throw new NotFoundException(e.getCause().toString());
}
throw e;
}
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
 
public ActionForward createAssignement(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
long id = cUF.getCourseUnitView().getId();
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{cUF.getCourseUnitAssignementView(), id};
try
{
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "CreateCourseUnitWork", args, names);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
return mapping.findForward("load.works");
}
catch (ExecutedFilterException e)
{
if (e.getCause() instanceof ObjectNotFoundException)
{
throw new NotFoundException(e.getCause().toString());
}
throw e;
}
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward update(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
/impl/src/java/pt/estgp/estgweb/web/controllers/blogs/BlogsController.java
444,6 → 444,39
 
}
 
public ActionForward validatePost(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
 
String newStatusStr = request.getParameter("status");
boolean newStatus = Boolean.parseBoolean(newStatusStr);
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{new Long(request.getParameter("id")),newStatus};
sm.execute(RequestUtils.getRequester(request, response), "ValidateBlogPost", args, names);
 
addMessage(request, "blog.post.updated.success", "" + request.getParameter("id"));
 
return loadBlogAndForward(new Long(request.getParameter("blogId")), mapping, request, response);
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
 
}
 
 
public ActionForward deletePost(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
/impl/src/hbm/pt/estgp/estgweb/domain/Blog.hbm.xml
19,6 → 19,7
<property name="targetRoles" type="string"/>
<property name="internal" type="boolean"/>
<property name="status" type="boolean" />
<property name="autoValidation" type="boolean"/>
<many-to-one name="image" column="image" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/>
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/>
<set name="posts" cascade="delete" lazy="true">
/impl/src/hbm/pt/estgp/estgweb/domain/Course.hbm.xml
16,6 → 16,7
<property name="name" type="string"/>
<property name="description" type="text"/>
<property name="code" type="string"/>
<property name="importYear" type="string" index="importYearIndex"/>
<property name="institutionalCode" type="string"/>
<property name="externalSiteServer" type="string"/>
<property name="externalSitePath" type="string"/>
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
13,14 → 13,14
<discriminator column="discrimitator"/>
<timestamp name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="semestre" type="string"/>
<property name="name" type="string"/>
<property name="semestre" type="string" index="semestreIndex"/>
<property name="name" type="string" index="nameIndex"/>
<property name="code" type="string"/>
<property name="courseCode" type="string"/>
<property name="courseName" type="string" />
<property name="courseYear" type="string" />
<property name="courseName" type="string"/>
<property name="courseYear" type="string"/>
<property name="importYear" type="string" index="importYearIndex"/>
<property name="institutionCode" type="string" />
 
<property name="objectives" type="text"/>
<property name="programStreamId" type="string"/>
 
33,7 → 33,7
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/>
<set name="teachers" lazy="true" table="teachedunits">
<key column="courseUnitId"/>
<many-to-many class="pt.estgp.estgweb.domain.TeacherImpl" column="studentId"/>
<many-to-many class="pt.estgp.estgweb.domain.TeacherImpl" column="teacherId"/>
</set>
<set name="students" lazy="true" table="subscribedunits">
<key column="courseUnitId"/>
47,6 → 47,10
<key column="courseUnit"/>
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitQuestion" />
</set>
<set name="assignements" cascade="delete" lazy="true" order-by="saveDate desc">
<key column="courseUnit"/>
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitAssignement"/>
</set>
<subclass name="pt.estgp.estgweb.domain.CourseUnitImpl" discriminator-value="CourseUnitImpl"/>
</class>
 
78,6 → 82,9
<property name="deliverDate" type="timestamp"/>
<property name="deliverType" type="string"/>
<property name="lateDelivers" type="boolean"/>
<property name="title" type="string"/>
<property name="description" type="text"/>
<property name="status" type="boolean"/>
<many-to-one name="courseUnit" class="pt.estgp.estgweb.domain.CourseUnit" lazy="false" outer-join="true"/>
<subclass name="pt.estgp.estgweb.domain.CourseUnitAssignementImpl" discriminator-value="CourseUnitAssignementImpl"/>
</class>
/impl/src/web/admin/profile/findUser.jsp
36,6 → 36,7
<logic:present name="ProfileForm" property="usersFind">
<table class="dataTable">
<tr>
<th><bean:message key="profile.siges.student.code"/></th>
<th><bean:message key="username"/> </th>
<th><bean:message key="name"/> </th>
<th><bean:message key="email"/></th>
45,6 → 46,7
 
<logic:iterate id="userView" name="ProfileForm" property="usersFind" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<td>${userView.code}</td>
<td>${userView.username}</td>
<td>${userView.name}</td>
<td>${userView.email}</td>
/impl/src/web/admin/profile/profile.jsp
32,6 → 32,14
<baco:isNotAdmin>
<tr>
<th>
<bean:message key="profile.siges.code"/>
</th>
<td>
<html:text styleClass="text" property="userView.code" maxlength="250" readonly="true"/>
</td>
</tr>
<tr>
<th>
<bean:message key="username"/>
</th>
<td>
61,6 → 69,14
<baco:isAdmin>
<tr>
<th>
<bean:message key="profile.siges.code"/>
</th>
<td>
<html:text styleClass="text" property="userView.code" maxlength="250"/>
</td>
</tr>
<tr>
<th>
<bean:message key="username"/>
</th>
<td>
/impl/src/web/admin/courseunits/courseunit.jsp
New file
0,0 → 1,131
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
 
<html:form styleClass="form" action="/user/courseUnitControllerAdminFromServiceZone" enctype="multipart/form-data">
<input type="hidden" name="dispatch" value="createOrUpdateAdmin"/>
<html:hidden property="courseUnitView.id"/>
<html:hidden property="id"/>
<table>
<tr>
<th>
<bean:message key="courseunit.name"/>
</th>
<td>
<html:text styleClass="text" property="courseUnitView.name"/>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.code"/>
</th>
<td>
<html:text styleClass="text" property="courseUnitView.code"/>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.semestre"/>
</th>
<td>
<html:select property="courseUnitView.semestre">
<html:option value="S1">S1</html:option>
<html:option value="S2">S2</html:option>
</html:select>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.importYear"/>
</th>
<td>
<html:select property="courseUnitView.importYear">
<logic:iterate id="item" name="CourseUnitsForm" property="importYears">
<html:option value="${item}">${item}</html:option>
</logic:iterate>
</html:select>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.teachers"/>
</th>
<td>
<html:select property="teacherId">
<logic:present name="CourseUnitsForm" property="teachers">
<logic:iterate id="teacher" name="CourseUnitsForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<jomm:option itemName="teacher" itemProperty="id" comparableObjectName="CourseUnitsForm"
comparableObjectProperty="teacherId">
(${teacher.code}) ${teacher.name}
</jomm:option>
</logic:iterate>
<input type="button" value="<bean:message key="add"/>"
onclick="set(this.form,'addTeacher');this.form.submit();">
</logic:present>
</html:select>
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0">
<table class="dataTable removeButton">
<logic:iterate id="userView" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<th>
${userView.code}
</th>
<th>
${userView.name}
</th>
<td><input type="button" class="removeButton"
onclick="CourseUnitsForm.id.value='${userView.id}';set(this.form,'removeTeacher');this.form.submit();">
</td>
</tr>
</logic:iterate>
</table>
</logic:greaterThan>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.students"/>
</th>
<td>
<html:text styleClass="text" property="studentCode"/>
<input type="button" value="<bean:message key="add"/>"
onclick="set(this.form,'addStudent');this.form.submit();">
<logic:greaterThan name="CourseUnitView" property="studentsSize" value="0">
<table class="dataTable removeButton">
<logic:iterate id="userView" name="CourseUnitView" property="students" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<th>
${userView.code}
</th>
<th>
${userView.username}
</th>
<th>
${userView.name}
</th>
<th>
${userView.email}
</th>
<th>
${userView.address}
</th>
<td><input type="button" class="removeButton"
onclick="CourseUnitsForm.id.value='${userView.code}';set(this.form,'removeStudent');this.form.submit();">
</td>
</tr>
</logic:iterate>
</table>
</logic:greaterThan>
</td>
</tr>
 
</table>
<input type="button" onclick="set(form,'createOrUpdateAdmin');form.submit()" value="<bean:message key="confirm"/>">
</html:form>
/impl/src/web/admin/courseunits/findCourseunit.jsp
New file
0,0 → 1,80
<%@ page import="pt.estgp.estgweb.domain.StudentImpl" %>
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %>
<%@ page import="pt.estgp.estgweb.domain.UserImpl" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ 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/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jomm:messages/>
<html:form action="/user/courseUnitControllerAdminFromServiceZone?dispatch=search&from=ServiceZone">
<input type="hidden" name="dispatch" value="search">
<table class="form">
<tr>
<th>
<bean:message key="courseunit.search"/>
</th>
<td>
<html:text property="textToSearch" maxlength="50"/>
</td>
<td>
<input type="button" onclick="set(this.form,'search');this.form.submit()" value="<bean:message key="search"/>">
</td>
</tr>
<tr>
<td nowrap="nowrap" colspan="3">
<table>
<tr>
<td><html:radio property="searchType" value="search.type.all"/></td>
<td><bean:message key="search.type.all"/></td>
<td><html:radio property="searchType" value="search.type.any"/></td>
<td><bean:message key="search.type.any"/></td>
<td><html:radio property="searchType" value="search.type.phrase"/></td>
<td><bean:message key="search.type.phrase"/></td>
</tr>
</table>
</td>
</tr>
</table>
</html:form>
<logic:present name="ISearchResults" property="results">
<table class="dataTable">
<tr>
<th><bean:message key="courseunit.code"/> </th>
<th><bean:message key="courseunit.name"/> </th>
<th><bean:message key="courseunit.semestre"/></th>
<th><bean:message key="courseunit.importYear"/></th>
<th><bean:message key="courseunit.course"/></th>
<th></th>
<th></th>
</tr>
<logic:iterate id="courseunitresult" name="ISearchResults" property="results" type="pt.estgp.estgweb.services.courseunits.impl.CourseUnitViewResult" >
<tr>
<td>${courseunitresult.object.code}</td>
<td>${courseunitresult.object.name}</td>
<td>${courseunitresult.object.semestre}</td>
<td>${courseunitresult.object.importYear}</td>
<td>${courseunitresult.object.courseName}</td>
<td><html:link action="/user/startEditCourseUnitAdminFromServiceZone?id=${courseunitresult.object.id}"><bean:message key="edit"/></html:link></td>
<td><html:link action="/user/startDeleteCourseUnitAdminFromServiceZone?id=${courseunitresult.object.id}"><bean:message key="delete"/></html:link></td>
<td></td>
</tr>
</logic:iterate>
</table>
<p class="pages">
<bean:message key="search.pages"/>:
<logic:equal value="true" name="ISearchResults" property="hasPreviousPage">
<a href="<%=request.getContextPath()%>/user/startSearchCourseUnitAdminFromServiceZone.do?page=${ISearchResults.previousPage}&textToSearch=${ISearchResults.query}&searchType=${ISearchResults.searchType}">
&lt;
<bean:message key="result.previous"/>
</a>
</logic:equal>
${ISearchResults.page2Screen}
<logic:equal value="true" name="ISearchResults" property="hasNextPage">
<a href="<%=request.getContextPath()%>/user/startSearchCourseUnitAdminFromServiceZone.do?page=${ISearchResults.nextPage}&textToSearch=${ISearchResults.query}&searchType=${ISearchResults.searchType}">
<bean:message key="result.next"/>
&gt;</a>
</logic:equal>
</p>
</logic:present>
/impl/src/web/admin/blogs/submitBlog.jsp
23,6 → 23,10
request.setAttribute("user", user);
request.setAttribute("fromAction", fromAction);
%>
 
<baco:isNotAdmin>
<p></p><bean:message key="blog.intro.message"/></p>
</baco:isNotAdmin>
<html:form action="${user}/blogsController${fromAction}${from}" enctype="multipart/form-data">
<html:hidden property="role"/>
<html:hidden property="blogView.id"/>
48,6 → 52,21
</baco:isAdmin>
<tr>
<th>
<bean:message key="blog.autoValidation"/>
</th>
<td>
<html:select property="blogView.autoValidation">
<html:option value="true">
<bean:message key="yes"/>
</html:option>
<html:option value="false">
<bean:message key="no"/>
</html:option>
</html:select>
</td>
</tr>
<tr>
<th>
<bean:message key="blog.internal"/>
</th>
<td>
/impl/src/web/css/style.css
306,10 → 306,10
FONT: 11px / 20px "bitstream vera sans", "Lucida Grande", "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif
}
 
#topnav LI A:visited
{
COLOR: white;
}
/*#topnav LI A:visited*/
/*{*/
/*COLOR: white;*/
/*}*/
#topnav LI A:hover {
COLOR: black;
BACKGROUND-COLOR: #FFFFFF
353,11 → 353,6
color: black;
}
 
#searchResults {
 
padding-left: 10px;
}
 
#searchResults li a {
cursor: pointer;
}
373,6 → 368,7
#searchResults li .module {
position: absolute;
visibility: hidden;
margin-left:5px;
}
 
#searchResults li .module .result h2 {
409,6 → 405,12
padding-top: 3px;
}
 
#searchResults #googleResults
{
margin-left:5px;
 
}
 
/*************************************************************************************/
 
/*****************************Portal Page Template************************************/
471,7 → 473,7
}
 
.block a:visited {
color: #4d4d4d;
/*color: #4d4d4d;*/
text-decoration: none;
}
 
586,7 → 588,7
{
LIST-STYLE-TYPE: none;
padding: 0;
margin-left: 5px;
/*margin-left: 5px;*/
}
 
.listCircleWhite UL /*Lista circulo branco*/
765,9 → 767,9
color: #4d4d4d;
}
 
#lastnews li a:visited, .linkLeftMenu a:visited, .linkRightMenu a:visited {
color: #4d4d4d;
}
/*#lastnews li a:visited, .linkLeftMenu a:visited, .linkRightMenu a:visited {*/
/*color: #4d4d4d;*/
/*}*/
 
#lastnews li a:hover, .linkLeftMenu a:hover, .linkRightMenu a:hover {
color: #8EC73F;
1160,12 → 1162,17
border: 1px solid green;
width:100%;
}
 
.posts * a:hover
{
background-color:white;
}
.blog .oldMonths
{
vertical-align:top;
}
 
.blog .form table
.blog .form table, .blockForm table
{
border: 1px solid green;
margin-bottom:4px;
/impl/src/web/layout/navigationTop.jsp
94,6 → 94,7
if(query == null)
query = "";
 
allChecked = "checked=\"checked\"";
if(searchType == null)
allChecked = "checked=\"checked\"";
else if(searchType.equals("search.type.all"))
106,7 → 107,7
 
%>
<html:form action="/search" method="post">
<input type="hidden" name="dispatch" value="search">
<input type="hidden" name="dispatch" value="search"/>
<table>
<tr>
<td>
116,7 → 117,7
<input type="text" class="small" name="query" value="<%=query%>"/>
</td>
<td>
<input type="button" onclick="set(this.form,'search');this.form.submit()" value="<bean:message key="search"/>">
<input type="submit" value="<bean:message key="search"/>">
</td>
 
</tr>
/impl/src/web/public/courseunits/topnavCourseUnit.jsp
New file
0,0 → 1,12
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="jomm.web.utils.NavPlaceServer" %>
<%@ page import="jomm.web.utils.TopNav" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/Welcome.do", "Home");
topNav.addNavPlace(null, "course", CourseUnitView.getCourseName());
topNav.addNavPlace(null, "courseunit", CourseUnitView.getName());
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/public/search/searchResults.jsp
30,7 → 30,8
googlePage = p;
var searchresults = document.getElementById("googleSearchResults");
searchresults.innerHTML = loading;
OnLoad();
//OnLoad();
gWebSearch.gotoPage(googlePage);
}
function OnLoad()
{
78,15 → 79,25
// }
results += "</div>";
}
results += "</div>";
 
results += "<p class=\"pages\">";
 
results += pages + " ";
for (var j = 0; j < gWebSearch.cursor.pages.length; j++)
var limit = 1;
if(gWebSearch.cursor.estimatedResultCount > 8)
limit = 2;
if(gWebSearch.cursor.estimatedResultCount > 16)
limit = 3;
if(gWebSearch.cursor.estimatedResultCount > 24)
limit = 4;
if(gWebSearch.cursor.estimatedResultCount > 32)
limit = 5;
for (var j = 0; j < gWebSearch.cursor.pages.length && j < limit; j++)
{
if (j == gWebSearch.cursor.currentPageIndex)
results += " " + gWebSearch.cursor.pages[j].label;
else
results += ' <a onClick="gotoPage(' + j + ');" href="#googleSearchResults">' + gWebSearch.cursor.pages[j].label + "</a> ";
results += ' <a onClick="gotoPage(' + (j) + ');" href="#googleSearchResults">' + gWebSearch.cursor.pages[j].label + "</a> ";
}
if (gWebSearch.cursor.estimatedResultCount > 32)
{
94,6 → 105,7
}
 
results += "</p>";
results += "</div>";
searchresults.innerHTML = results;
}
}
118,12 → 130,12
<bean:message key="${searchResults.module.messageKey}"/>
<b>(${searchResults.totalResults})</b>
<a id="${searchResults.module.messageKey}SeeMore"
href="javascript:show('${searchResults.module.messageKey}','${searchResults.module.messageKey}SeeMore')">
href="javascript:showOrHide('${searchResults.module.messageKey}')">
<bean:message key="search.see.more"/>
</a>
</h1>
 
<div class="module" id="<%=searchResults.getModule().getMessageKey()%>">
<div class="module" id="<%=searchResults.getModule().getMessageKey()%>" style="visibility:hidden;">
<div id="${searchResults.module.messageKey}Results">
<logic:iterate id="result" name="searchResults" property="results"
type="pt.estgp.estgweb.services.common.IResult">
/impl/src/web/public/blogs/blog.jsp
138,9 → 138,25
<baco:canLoad name="post">
<tr>
<td colspan="2" class="title">
${post.title}
<a name="post${post.id}"></a>${post.title}
<baco:canManage name="post">
<a onclick="return confirm('${confirmDeletePost}')" href="<%=request.getContextPath()%>${user}/startDeletePost${fromAction}.do?id=${post.id}&blogId=${BlogView.id}"><bean:message key="blog.delete.post"/></a>
<baco:canManage name="BlogView">
<%
if(post.getStatus())
{
%>
<a href="<%=request.getContextPath()%>${user}/startValidatePost${fromAction}.do?status=false&id=${post.id}&blogId=${BlogView.id}"><bean:message key="blog.status.invalidate"/></a>
<%
}
else
{
%>
<a href="<%=request.getContextPath()%>${user}/startValidatePost${fromAction}.do?status=true&id=${post.id}&blogId=${BlogView.id}"><bean:message key="blog.status.validate"/></a>
<%
}
%>
</baco:canManage>
</baco:canManage>
</td>
</tr>
/impl/src/web/user/courseunits/menu.jsp
1,4 → 1,6
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<div class="linkLeftMenu">
<div class="listClean">
<ul>
12,7 → 14,7
<a href="<%=request.getContextPath()%>/">Blog</a>
</li>
<li>
<a href="<%=request.getContextPath()%>/">Trabalhos</a>
<a href="<%=request.getContextPath()%>/user/startLoadCourseUnitWorksFromHome.do?id=${CourseUnitView.id}">Trabalhos</a>
</li>
<li>
<a href="<%=request.getContextPath()%>/">Notas</a>
/impl/src/web/user/courseunits/courseunitworks.jsp
New file
0,0 → 1,123
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<div id="contentCourseUnit">
 
<div class="seccao">
<h2><bean:message key="courseunit.works"/></h2>
 
<a href="javascript:showOrHide('assignements')">Criar Novo</a>
 
<html:form styleId="assignements" style="position:absolute;visibility:hidden;" action="/user/courseUnitControllerFromHome">
<input type="hidden" name="dispatch" value="createAssignement">
<html:hidden property="courseUnitView.id"/>
<div class="form blockForm">
<table>
<tr>
<th>
<bean:message key="courseunit.title"/>
</th>
<td>
<html:text styleClass="text" property="courseUnitAssignementView.title"/>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.assignement.deliver.date"/>
</th>
<td>
<a href="javascript:cal.select(getObjectById('deliverDate'),'anchor1','yyyy/MM/dd')" name="anchor1" id="anchor1"><html:text styleClass="date" property="courseUnitAssignementView.deliverDate" styleId="deliverDate" readonly="true"/></a>
<input type="button" class="removeButton" onClick="CourseUnitsForm.deliverDate.value=null">
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.assignement.deliver.type"/>
</th>
<td>
<html:select property="courseUnitAssignementView.deliverType">
<html:option value="zipfile" key="courseunit.assignement.deliver.type.zipfile"/>
<html:option value="nofile" key="courseunit.assignement.deliver.type.nofile"/>
</html:select>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.assignement.deliver.late.permission"/>
</th>
<td>
<html:select property="courseUnitAssignementView.lateDelivers">
<html:option value="true" key="yes"/>
<html:option value="false" key="no"/>
</html:select>
</td>
</tr>
 
<tr>
<th>
<bean:message key="courseunit.description"/>
</th>
<td>
<html:textarea styleClass="textarea" property="courseUnitAssignementView.description"/>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.status"/>
</th>
<td>
<html:select property="courseUnitAssignementView.status">
<html:option value="true">
<bean:message key="status.active"/>
</html:option>
<html:option value="false">
<bean:message key="status.inactive"/>
</html:option>
</html:select>
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" onclick="this.form.submit()" value="<bean:message key="confirm"/>"/>
</td>
</tr>
</table>
</div>
</html:form>
<p>
<logic:notEmpty name="CourseUnitView" property="courseUnitAssignements">
 
 
<table class="dataTable">
<tr>
<th>Trabalho</th>
<th>Entregues</th>
</tr>
<logic:iterate id="work" name="CourseUnitView" property="courseUnitAssignements" type="pt.estgp.estgweb.domain.views.CourseUnitAssignementView">
<tr>
<td>
${work.title}
</td>
<td>
${work.delivers}
</td>
</tr>
</logic:iterate>
</table>
</logic:notEmpty>
<logic:empty name="CourseUnitView" property="courseUnitAssignements">
<bean:message key="courseunit.works.zero"/>
</logic:empty>
</p>
</div>
 
</div>
/impl/src/web/user/home/todos.jsp
59,11 → 59,20
<%
for (IToDo todo : toDoCat.getAllToDos())
{
 
if (todo.getUrl() != null)
{
%>
<li>
<a href="<%=request.getContextPath() + todo.getUrl()%>"><%=todo.getLabelInsideCat(request)%></a>
<a href="<%=request.getContextPath() + todo.getUrl()%>">
<%
if(todo.getCatKey() != null)
{
out.print(MessageResources.getMessage(request,todo.getCatKey()) + ":");
}
%>
<%=todo.getLabelInsideCat(request)%></a>
 
</li>
<%
}
/impl/src/web/user/home/topnavCourseUnitWorks.jsp
New file
0,0 → 1,13
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName());
topNav.addNavPlace(null, "courseunit",CourseUnitView.getName());
topNav.addNavPlace(null, "course.unit.works");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/user/serviceZone/topnavCourseUnit.jsp
New file
0,0 → 1,19
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back");
if(CourseUnitView.getId() <= 0)
{
topNav.addNavPlace(null, "courseunit.new");
}
else
{
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName());
topNav.addNavPlace(null, "courseunit",CourseUnitView.getName());
}
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/user/serviceZone/serviceZone.jsp
85,6 → 85,21
</li>
</ul>
</li>
<li>
<bean:message key="courses"/>
<ul>
<li>
<html:link action="/user/startNewCourseUnitAdminFromServiceZone">
<bean:message key="courseunit.new"/>
</html:link>
</li>
<li>
<html:link action="/user/startFindCourseUnitAdminFromServiceZone">
<bean:message key="courseunit.search"/>
</html:link>
</li>
</ul>
</li>
</baco:isAdmin>
</ul>
</div>
95,7 → 110,7
<bean:message key="intranet.editable.blogs"/>
</div>
<%
if (ownerBlogs.size() == 0)
if (editableBlogs.size() == 0)
{
%>
<div class="zerofound">
/impl/src/web/user/serviceZone/topnavEditCourseUnit.jsp
New file
0,0 → 1,11
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back");
topNav.addNavPlace("/user/startFindCourseUnitAdminFromServiceZone.do", "courseunit.search");
topNav.addNavPlace(null, "courseunit.edit");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/user/serviceZone/topnavSearchCourseUnit.jsp
New file
0,0 → 1,12
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.util.*"%>
<%@ page import="jomm.web.utils.NavPlace" %>
<%@ page import="jomm.web.utils.NavPlaceServer" %>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back");
topNav.addNavPlace(null, "courseunit.search");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/etc/todo/todo.txt
1,6 → 1,9
Jorge Meu
Tirar o getSerializable de noovo do domainObject e ver de onde devem herdar
 
Mensagens de Email no EI aparecem gigantes
Estilo das páginas do proxy aparecem com o numero de item deslocado
 
####
Modulo de Gestão de utilizadores Fabio
Eventos com controlo de listagem e controlo de Pagamentos Fabio
29,5 → 32,9
Pagina da disciplina a listar conteudos da intranet Jorge
 
 
####
FABIO
Imagens de Origem das noticias, parece-me que estão mal na pasta imgs
criar por defeito no DBInit um user com o role de cada uma das imagens (Secretaria, CI, CD, CC, CP, etc)
 
 
Meter mensagem no PRIMEIRO Login a dizer que caso não existam unidades curriculares para se deslocar ao Serviços Infpormaticos