/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/CoursesCommonServices.java |
---|
1,7 → 1,6 |
package pt.estgp.estgweb.services.courses; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.DomainObject; |
import pt.estgp.estgweb.domain.Teacher; |
10,7 → 9,6 |
import pt.estgp.estgweb.services.common.*; |
import pt.estgp.estgweb.services.common.impl.DefaultResult; |
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults; |
import pt.estgp.estgweb.services.common.impl.DefaultToDo; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.ArrayList; |
137,6 → 135,7 |
} |
} |
}*/ |
/* |
if(userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
{ |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
149,7 → 148,7 |
todos.add(defaultToDo); |
} |
} |
}/*This method is invoked from object creation*/ |
}*//*This method is invoked from object creation*/ |
return todos; |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
7,6 → 7,7 |
import org.hibernate.criterion.Expression; |
import org.hibernate.criterion.Order; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
19,8 → 20,7 |
import java.util.ArrayList; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.eq; |
import static org.hibernate.criterion.Restrictions.not; |
import static org.hibernate.criterion.Restrictions.*; |
/** |
* @author Jorge Machado |
408,6 → 408,78 |
return findAllStatus(importYear,true); |
} |
/** |
* Return only courses if user is from CourseCommission or Coordinator or have role Globals.SERVICES_PROGRAMS_ROLE |
* otherwise return null; |
* @param importYear |
* @param u |
* @return |
*/ |
public List<Course> findActiveCoursesCoordinationsOrCommissions(String importYear,User u) |
{ |
Criteria cri = getCriteriaForComissionsAndCoordinationsOr(u); |
if(cri == null) |
return new ArrayList<Course>(); |
return cri |
//.add(eq("importYear", importYear)) Nao podemos ter isto senao caso tenhamos o sistema num ano de interface diferente nao vem cursos nenhuns a nao ser os que desapareceram |
// no passado e mantiveram o ano anterior |
.add(eq("status", true)) |
.addOrder(Order.asc("name")) |
.list(); |
} |
public Criteria getCriteriaForComissionsAndCoordinationsOr(User u) |
{ |
return getCriteriaForComissionsAndCoordinationsOr(u,null,null); |
} |
/** |
* Restricts only courses if user is from CourseCommission or Coordinator or have role Globals.SERVICES_PROGRAMS_ROLE |
* @param u |
* @return |
*/ |
public Criteria getCriteriaForComissionsAndCoordinationsOr(User u,String courseAlias,Criteria init) |
{ |
if(courseAlias == null) |
courseAlias = ""; |
else |
courseAlias = courseAlias + "."; |
if(u.hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
{ |
if(init != null) |
return init; |
else |
return createCriteria(); |
} |
else if(u instanceof TeacherImpl) |
{ |
TeacherImpl tImpl = (TeacherImpl) DaoFactory.getTeacherDaoImpl().get(u.getId()); |
List<String> coordinatedRolesCourses = tImpl.obtainCourseComissionsAndCoordinationsRoles(); |
Criteria cri = init != null ? init : createCriteria(); |
if(coordinatedRolesCourses.size() > 0) |
{ |
cri.createAlias(courseAlias + "coordinator", "coord"); |
Criterion criterion = eq("coord.id", u.getId()); |
for(String role: coordinatedRolesCourses) |
{ |
criterion = or(criterion,eq(courseAlias+"validationRole",role)); |
} |
cri.add(criterion); |
return cri; |
} |
else |
return cri; |
} |
else |
{ |
return null; |
} |
} |
public List<Course> findAllNotIn(String importYear) |
{ |
return createCriteria().add(not(eq("importYear", importYear))) |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
15,6 → 15,7 |
import pt.estgp.estgweb.utils.DatesUtils; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.*; |
658,6 → 659,21 |
.list(); |
} |
public List<CourseUnit> loadMissingProgramOptimizedComissionsAndSecreariat(User u) |
{ |
Criteria crit = createCriteria() |
.createAlias("course", "c") |
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear())) |
.add(eq("semestre", DatesUtils.getSemestre())) |
.add((or(isNull("programStreamId"), eq("programStreamId", "")))); |
crit = DaoFactory.getCourseDaoImpl().getCriteriaForComissionsAndCoordinationsOr(u,"c",crit); |
if(crit == null) |
return new ArrayList<CourseUnit>(); |
else |
return crit.list(); |
} |
public List<CourseUnit> loadMissingProgramGivenCourse(long courseId) |
{ |
return createCriteria() |
675,12 → 691,29 |
.createAlias("course", "c") |
.add(eq("c.id", courseId)) |
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear())) |
.add(eq("semestre", DatesUtils.getSemestre())) |
//.add(eq("semestre", DatesUtils.getSemestre())) |
.add((and(isNotNull("programStreamId"), not(eq("programStreamId", ""))))) |
.add((eq("validProgram", false))) |
.list(); |
} |
public List<CourseUnit> loadMissingProgramValidateOptimizedComissionsAndSecreariat(User u) |
{ |
Criteria crit = createCriteria() |
.createAlias("course", "c") |
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear())) |
//.add(eq("semestre", DatesUtils.getSemestre())) |
.add((and(isNotNull("programStreamId"), not(eq("programStreamId", ""))))) |
.add((eq("validProgram", false))); |
crit = DaoFactory.getCourseDaoImpl().getCriteriaForComissionsAndCoordinationsOr(u,"c",crit); |
if(crit == null) |
return new ArrayList<CourseUnit>(); |
else |
return crit.list(); |
} |
public List<CourseUnit> loadMissingObjectivesOrProgramGivenCourse(long courseId) |
{ |
return createCriteria() |
728,12 → 761,13 |
public List<CourseMissingValidationProgram> loadMissingProgramValidate(UserSession userSession) |
{ |
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCourses(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
//List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCourses(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCoursesCoordinationsOrCommissions(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear(),userSession.getUser()); |
for(Course course: courses) |
{ |
CourseImpl cImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(course); |
if(cImpl.isFromCourseCommission(userSession) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
{ |
//CourseImpl cImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(course); |
//if(cImpl.isFromCourseCommission(userSession) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
//{ |
List<CourseUnit> courseUnits = loadMissingProgramValidateGivenCourse(course.getId()); |
if(courseUnits != null && courseUnits.size() > 0) |
{ |
742,11 → 776,43 |
c.courseUnits = courseUnits; |
result.add(c); |
} |
//} |
} |
return result; |
} |
//TODO |
public List<CourseMissingValidationProgram> loadMissingProgramValidateOptimized(UserSession userSession) |
{ |
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>(); |
//todo Em vez de FindAll faco a listagem total de cadeiras e é la dentro que restringe ou a todas |
//os cursos caso seja da secretaria ou aos cursos de que faz parte da comissao |
//Obtenho todas as cadeiras de todos os cursos |
//Organizo-as por curso |
//devolvo a lista final |
HashMap<Course,CourseMissingValidationProgram> mapaUnidadesCurso = new HashMap<Course, CourseMissingValidationProgram>(); |
List<CourseUnit> courseUnits = loadMissingProgramValidateOptimizedComissionsAndSecreariat(userSession.getUser()); |
for(CourseUnit cu : courseUnits) |
{ |
if(mapaUnidadesCurso.get(cu.getCourse()) == null) |
{ |
CourseMissingValidationProgram c = new CourseMissingValidationProgram(); |
c.course = DaoFactory.getCourseDaoImpl().narrow(cu.getCourse()); |
c.courseUnits = new ArrayList<CourseUnit>(); |
c.courseUnits.add(cu); |
result.add(c); |
mapaUnidadesCurso.put(c.course,c); |
} |
else |
{ |
CourseMissingValidationProgram c = mapaUnidadesCurso.get(cu.getCourse()); |
c.courseUnits.add(cu); |
} |
} |
return result; |
} |
/** |
* Load all programs missing from active courses |
* @param userSession |
755,13 → 821,13 |
public List<CourseMissingValidationProgram> loadMissingPrograms(UserSession userSession) |
{ |
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCourses(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
//List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCourses(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCoursesCoordinationsOrCommissions(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear(),userSession.getUser()); |
for(Course course: courses) |
{ |
//TODO IR BUSCAR APENAS CURSOS DAS COMISSOES OU COORDENACOES PARA ABREVIAR |
CourseImpl cImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(course); |
if(cImpl.isFromCourseCommission(userSession) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
{ |
//CourseImpl cImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(course); |
//if(cImpl.isFromCourseCommission(userSession) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
//{ |
List<CourseUnit> courseUnits = loadMissingProgramGivenCourse(course.getId()); |
if(courseUnits != null && courseUnits.size() > 0) |
{ |
770,16 → 836,54 |
c.courseUnits = courseUnits; |
result.add(c); |
} |
//} |
} |
return result; |
} |
public List<CourseMissingValidationProgram> loadMissingProgramsOptimized(UserSession userSession) |
{ |
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>(); |
//todo Em vez de FindAll faco a listagem total de cadeiras e é la dentro que restringe ou a todas |
//os cursos caso seja da secretaria ou aos cursos de que faz parte da comissao |
//Obtenho todas as cadeiras de todos os cursos |
//Organizo-as por curso |
//devolvo a lista final |
HashMap<Course,CourseMissingValidationProgram> mapaUnidadesCurso = new HashMap<Course, CourseMissingValidationProgram>(); |
List<CourseUnit> courseUnits = loadMissingProgramOptimizedComissionsAndSecreariat(userSession.getUser()); |
for(CourseUnit cu : courseUnits) |
{ |
if(mapaUnidadesCurso.get(cu.getCourse()) == null) |
{ |
CourseMissingValidationProgram c = new CourseMissingValidationProgram(); |
c.course = DaoFactory.getCourseDaoImpl().narrow(cu.getCourse()); |
c.courseUnits = new ArrayList<CourseUnit>(); |
c.courseUnits.add(cu); |
result.add(c); |
mapaUnidadesCurso.put(c.course,c); |
} |
else |
{ |
CourseMissingValidationProgram c = mapaUnidadesCurso.get(cu.getCourse()); |
c.courseUnits.add(cu); |
} |
} |
return result; |
} |
public static class CourseMissingValidationEvaluation |
{ |
public Course course; |
public List<CourseUnit> courseUnits; |
} |
/** |
* METODO ANTIGO QUE ESTAVA NA COURSE COMISSION |
* @param userSession |
* @return |
*/ |
public List<CourseMissingValidationEvaluation> loadMissingEvaluationValidate(UserSession userSession) |
{ |
List<CourseMissingValidationEvaluation> result = new ArrayList<CourseMissingValidationEvaluation>(); |
787,7 → 891,7 |
for(Course course: courses) |
{ |
CourseImpl cImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(course); |
if(cImpl.isFromCourseCommission(userSession) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
if(cImpl.isFromCourseCommission(userSession) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
{ |
List<CourseUnit> courseUnits = loadMissingEvaluationValidateGivenCourse(course.getId()); |
if(courseUnits != null && courseUnits.size() > 0) |
802,8 → 906,73 |
return result; |
} |
public List<CourseMissingValidationEvaluation> loadMissingEvaluationValidateOptimized(UserSession userSession) |
{ |
List<CourseMissingValidationEvaluation> result = new ArrayList<CourseMissingValidationEvaluation>(); |
//todo Em vez de FindAll faco a listagem total de cadeiras e é la dentro que restringe ou a todas |
//os cursos caso seja da secretaria ou aos cursos de que faz parte da comissao |
//Obtenho todas as cadeiras de todos os cursos |
//Organizo-as por curso |
//devolvo a lista final |
HashMap<Course,CourseMissingValidationEvaluation> mapaUnidadesCurso = new HashMap<Course, CourseMissingValidationEvaluation>(); |
List<CourseUnit> courseUnits = loadMissingEvaluationValidateOptimizedComissionsAndSecreariat(userSession.getUser()); |
for(CourseUnit cu : courseUnits) |
{ |
if(mapaUnidadesCurso.get(cu.getCourse()) == null) |
{ |
CourseMissingValidationEvaluation c = new CourseMissingValidationEvaluation(); |
c.course = DaoFactory.getCourseDaoImpl().narrow(cu.getCourse()); |
c.courseUnits = new ArrayList<CourseUnit>(); |
c.courseUnits.add(cu); |
result.add(c); |
mapaUnidadesCurso.put(c.course,c); |
} |
else |
{ |
CourseMissingValidationEvaluation c = mapaUnidadesCurso.get(cu.getCourse()); |
c.courseUnits.add(cu); |
} |
} |
return result; |
} |
//TODO PARA USAR MAIS TARDE |
/** |
* @param u utilizador com vista para cursos |
* Se for secretaria considera todos os cursos |
* Se nao for considera apenas comissoes de curso do professor se for TeacherImpl |
* @return |
*/ |
public List<CourseUnit> loadMissingEvaluationValidateOptimizedComissionsAndSecreariat(User u) |
{ |
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear(); |
Criterion degreesCrit = getCourseUnitActiveDegreeCourseIdsCriterion(activeYear); |
if(degreesCrit == null) |
return new ArrayList<CourseUnit>(); |
Criteria c = createCriteria() |
.createAlias("course", "c") |
.createAlias("courseUnitEvaluation", "ce") |
.add(eq("importYear", activeYear)) |
.add(degreesCrit) |
.add((eq("ce.closed", false))) |
.add((eq("ce.teacherComplete", true))); |
//NOVO para restringir os cursos de que é coordenador ou todos se for da secretaria de cursos |
c = DaoFactory.getCourseDaoImpl().getCriteriaForComissionsAndCoordinationsOr(u,"c",c); |
if(c == null) |
return new ArrayList<CourseUnit>(); |
else |
return c.list(); |
} |
/* |
* Neste caso apenas se validam as do ano anterior*/ |
929,7 → 1098,38 |
return teacherCompleteFalse; |
} |
public List<CourseMissingValidationEvaluation> loadMissingEvaluationOptimized(UserSession userSession) |
{ |
List<CourseMissingValidationEvaluation> result = new ArrayList<CourseMissingValidationEvaluation>(); |
//todo Em vez de FindAll faco a listagem total de cadeiras e é la dentro que restringe ou a todas |
//os cursos caso seja da secretaria ou aos cursos de que faz parte da comissao |
//Obtenho todas as cadeiras de todos os cursos |
//Organizo-as por curso |
//devolvo a lista final |
HashMap<Course,CourseMissingValidationEvaluation> mapaUnidadesCurso = new HashMap<Course, CourseMissingValidationEvaluation>(); |
List<CourseUnit> courseUnits = loadMissingEvaluationOptimizedComissionsAndSecreariat(userSession.getUser()); |
for(CourseUnit cu : courseUnits) |
{ |
if(mapaUnidadesCurso.get(cu.getCourse()) == null) |
{ |
CourseMissingValidationEvaluation c = new CourseMissingValidationEvaluation(); |
c.course = DaoFactory.getCourseDaoImpl().narrow(cu.getCourse()); |
c.courseUnits = new ArrayList<CourseUnit>(); |
c.courseUnits.add(cu); |
result.add(c); |
mapaUnidadesCurso.put(c.course,c); |
} |
else |
{ |
CourseMissingValidationEvaluation c = mapaUnidadesCurso.get(cu.getCourse()); |
c.courseUnits.add(cu); |
} |
} |
return result; |
} |
public List<CourseMissingValidationEvaluation> loadMissingEvaluation(UserSession userSession) |
{ |
List<CourseMissingValidationEvaluation> result = new ArrayList<CourseMissingValidationEvaluation>(); |
952,6 → 1152,43 |
return result; |
} |
public List<CourseUnit> loadMissingEvaluationOptimizedComissionsAndSecreariat(User u) |
{ |
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear(); |
Criterion degreesCrit = getCourseUnitActiveDegreeCourseIdsCriterion(activeYear); |
if(degreesCrit == null) |
return new ArrayList<CourseUnit>(); |
Criteria nullsCrit = createCriteria() |
.createAlias("course", "c") |
.add(eq("importYear", activeYear)) |
.add(degreesCrit) |
.add(isNull("courseUnitEvaluation")); |
Criteria teachrCompleteCrit = createCriteria() |
.createAlias("course", "c") |
.createAlias("courseUnitEvaluation", "ce") |
.add(degreesCrit) |
.add(eq("importYear", activeYear)) |
.add(eq("ce.teacherComplete", false)); |
//NOVO para restringir os cursos de que é coordenador ou todos se for da secretaria de cursos |
nullsCrit = DaoFactory.getCourseDaoImpl().getCriteriaForComissionsAndCoordinationsOr(u,"c",nullsCrit); |
if(nullsCrit == null) |
return new ArrayList<CourseUnit>(); |
teachrCompleteCrit = DaoFactory.getCourseDaoImpl().getCriteriaForComissionsAndCoordinationsOr(u,"c",teachrCompleteCrit); |
if(teachrCompleteCrit == null) |
return new ArrayList<CourseUnit>(); |
List<CourseUnit> nulls = nullsCrit.list(); |
List<CourseUnit> teacherCompleteFalse = teachrCompleteCrit.list(); |
teacherCompleteFalse.addAll(nulls); |
return teacherCompleteFalse; |
} |
public List<CourseUnit> loadMissingEvaluation(long courseId) |
{ |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/TeacherImpl.java |
---|
328,4 → 328,9 |
} |
return comissionsRoles; |
} |
public boolean hasCoordinationsOrBelongToCourseCommissions() |
{ |
return obtainCourseComissionsAndCoordinationsRoles().size() > 0; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java |
---|
65,6 → 65,7 |
private boolean autoBlock; |
private boolean manualBlock; |
private List<String> courseComissionsAndCoordinationsRoles; |
private List<RecordView> creatorRecords; |
private List<RecordView> contributorRecords; |
135,7 → 136,22 |
{ |
mainArea = ((Teacher)user).getMainArea(); |
code = ((Teacher)user).getSigesCode(); |
this.academicDegree = ((Teacher)user).getAcademicDegree(); |
this.academicDegree = ((Teacher)user).getAcademicDegree(); |
try{ |
TeacherImpl tImpl; |
if(!(user instanceof TeacherImpl)) |
{ |
tImpl = (TeacherImpl) DaoFactory.getTeacherDaoImpl().get(user.getId()); |
} |
else |
{ |
tImpl = (TeacherImpl) user; |
} |
this.courseComissionsAndCoordinationsRoles = tImpl.obtainCourseComissionsAndCoordinationsRoles(); |
}catch(Throwable e) |
{ |
logger.warn("Probably no transaction trying to load course comissions and coordinations roles"); |
} |
} |
else if(user instanceof Student) |
{ |
145,6 → 161,21 |
} |
} |
public List<String> getCourseComissionsAndCoordinationsRoles() |
{ |
return courseComissionsAndCoordinationsRoles; |
} |
public boolean hasCoordinationsOrBelongToCourseCommissions() |
{ |
if(courseComissionsAndCoordinationsRoles != null) |
return getCourseComissionsAndCoordinationsRoles().size() > 0; |
return false; |
} |
public void setCourseComissionsAndCoordinationsRoles(List<String> courseComissionsAndCoordinationsRoles) { |
this.courseComissionsAndCoordinationsRoles = courseComissionsAndCoordinationsRoles; |
} |
public List<CourseUnitView> getResponsableCourseUnits() { |
return responsableCourseUnits; |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/form/courseunits/CourseUnitsForm.java |
---|
220,12 → 220,26 |
return errors; |
} |
if(getUploadFile().getFileSize() > Globals.MAX_FILE_UPOLOAD_SIZE_MBYTES) |
if(getUploadFile() == null || getUploadFile().getFileSize() == 0) |
{ |
addMessage(errors, httpServletRequest, "errors.file.too.long", Globals.MAX_FILE_UPOLOAD_SIZE_MBYTES + "MB"); |
addMessageAsString(errors,"Um Ficheiro esta Vazio"); |
return errors; |
} |
//tod verificar |
try{ |
double fileSize = getUploadFile().getFileSize(); |
fileSize = fileSize / 1024.0 / 1024.0; |
if(fileSize > Globals.MAX_FILE_UPOLOAD_SIZE_MBYTES) |
{ |
addMessage(errors, httpServletRequest, "errors.file.too.long", Globals.MAX_FILE_UPOLOAD_SIZE_MBYTES + "MB"); |
return errors; |
} |
}catch(Throwable e) |
{ |
//muito pequeno se dividir por 0 nao faz mal |
} |
if(courseUnitAssignementView.getDeliverDate() == null || courseUnitAssignementView.getDeliverDate().length() == 0) |
{ |
addMessageWithKeys(errors,httpServletRequest,"errors.required","courseunit.assignement.deliver.date"); |
248,6 → 262,20 |
{ |
addMessage(errors,httpServletRequest,"errors.courseunit.assignement.deliver.file"); |
} |
//tod verificar |
try{ |
double fileSize = uploadFile.getFileSize(); |
fileSize = fileSize / 1024.0 / 1024.0; |
if(fileSize > Globals.MAX_FILE_UPOLOAD_SIZE_MBYTES) |
{ |
addMessage(errors, httpServletRequest, "errors.file.too.long", Globals.MAX_FILE_UPOLOAD_SIZE_MBYTES + "MB"); |
return errors; |
} |
}catch(Throwable e) |
{ |
//muito pequeno se dividir por 0 nao faz mal |
} |
// if(uploadFile != null && uploadFile.getFileName() !=null && !uploadFile.getFileName().endsWith(".zip")) |
// { |
// addMessage(errors,httpServletRequest,"errors.courseunit.assignement.deliver.zip"); |
/branches/v3/impl/src/doc/arquiteturaRequisitosDesenvolvimento/rolesUtilizacaoPreCondicoes.txt |
---|
New file |
0,0 → 1,28 |
###### |
Requisitos de utilização dos UserRolesConfigs e dos Roles em String |
###### |
########################################################## |
ALTERAÇÕES AO MODELO QUE USEM ROLES COMO STRING |
########################################################## |
Sempre que uma classe use roles deve ser atualizado o servico de substituicao de roles |
class: pt.estgp.estgweb.services.users.UserRoleConfigService |
metodo: addUpdateRole |
notas: deve adicionar um novo verificador de substituicao de role quando um role é substituido na administracao |
Locais que referenciam este serviço: |
- interface: Configuração de Papeis Institucionais - salvar role com chave modificada |
- interface: Gestão de Papeis Institucionais - Papeis de Coordenações - Criar e Normalizar Role |
Controladores que usem estes serviços dos Roles devem chamar o UserRoleProxy na camada de serviço |
para marcar os Roles como Dirty a fim de os recarregar para a cache |
Locais que referenciam este serviço: |
class: pt.estgp.estgweb.web.controllers.courses.CoursesController |
método: addCourseComissionRole |
chamada necessária: UserRoleProxy.setDirty(); |
/branches/v3/impl/src/web/user/home/teacher.jsp |
---|
6,12 → 6,13 |
<%@ 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" %> |
<%@ page import="jomm.dao.impl.AbstractDao" %> |
<%@ page import="jomm.dao.utils.HibernateUtils" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %> |
<%@ page import="pt.estgp.estgweb.domain.Teacher" %> |
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %> |
<%@ page import="pt.estgp.estgweb.domain.dao.impl.CourseUnitDaoImpl" %> |
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %> |
<%@ page import="java.util.List" %> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/> |
153,8 → 154,11 |
<div class="col-md-6 col-sm-12 col-xs-12" style="padding-left: 6px"> |
<% |
//todo METER AQUI FORMA DE CAREGAR OS PROFS TODOS QUE TÊM COORDENACOES |
if(true || UserSession.getUser().getRoles().indexOf("courseValidateProgram")>=0) |
AbstractDao.getCurrentSession().beginTransaction(); |
TeacherImpl tLoggedIn = (TeacherImpl) DaoFactory.getTeacherDaoImpl().get(UserSession.getUser().getId()); |
boolean hasCommisionsOrCoordinations = tLoggedIn.hasCoordinationsOrBelongToCourseCommissions(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
if( hasCommisionsOrCoordinations ) |
{ |
%> |
<div class="panel panel-primary"> |
197,6 → 201,7 |
<jsp:include page="courseComission.jsp"/> |
<% |
} |
%> |
209,10 → 214,10 |
long time = System.currentTimeMillis(); |
List<CourseUnit> evaluations = DaoFactory.getCourseUnitDaoImpl().loadTeacherUnitsMissingEvaluation(UserSession); |
System.out.println("TIME10: " + (System.currentTimeMillis()-time)); |
//System.out.println("TIME10: " + (System.currentTimeMillis()-time)); |
time = System.currentTimeMillis(); |
List<CourseUnit> programs = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(UserSession.getUser().getId()); |
System.out.println("TIME11: " + (System.currentTimeMillis()-time)); |
//System.out.println("TIME11: " + (System.currentTimeMillis()-time)); |
time = System.currentTimeMillis(); |
if(programs != null && programs.size() > 0 || evaluations!= null && evaluations.size() > 0) |
{ |
/branches/v3/impl/src/web/user/home/courseComission.jsp |
---|
13,17 → 13,27 |
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear(); |
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees(); |
long time = System.currentTimeMillis(); |
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result0 = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(UserSession); |
//System.out.println("TIME1: " + (System.currentTimeMillis()-time)); |
//List<CourseUnitDaoImpl.CourseMissingValidationProgram> result0 = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(UserSession); |
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result0 = DaoFactory.getCourseUnitDaoImpl().loadMissingProgramsOptimized(UserSession); |
System.out.println("TIME1: " + (System.currentTimeMillis()-time)); |
time = System.currentTimeMillis(); |
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result1 = DaoFactory.getCourseUnitDaoImpl().loadMissingProgramValidate(UserSession); |
//System.out.println("TIME2: " + (System.currentTimeMillis()-time)); |
//List<CourseUnitDaoImpl.CourseMissingValidationProgram> result1 = DaoFactory.getCourseUnitDaoImpl().loadMissingProgramValidate(UserSession); |
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result1 = DaoFactory.getCourseUnitDaoImpl().loadMissingProgramValidateOptimized(UserSession); |
System.out.println("TIME2: " + (System.currentTimeMillis()-time)); |
time = System.currentTimeMillis(); |
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result2 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluationValidate(UserSession); |
//System.out.println("TIME3: " + (System.currentTimeMillis()-time)); |
// media de 4000 milis para administradores de programas |
//List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result2 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluationValidate(UserSession); |
//novo demora 90 em media |
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result2 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluationValidateOptimized(UserSession); |
System.out.println("TIME3: " + (System.currentTimeMillis()-time)); |
time = System.currentTimeMillis(); |
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result3 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluation(UserSession); |
//System.out.println("TIME4: " + (System.currentTimeMillis()-time)); |
// media de 4000 milis para administradores de programas |
//List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result3 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluation(UserSession); |
//novo demora 90 em media |
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result3 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluationOptimized(UserSession); |
System.out.println("TIME4: " + (System.currentTimeMillis()-time)); |
time = System.currentTimeMillis(); |
if(result0.size() > 0 || result1.size() > 0 || result2.size() > 0 || result3.size()>0) |
{ |