4,7 → 4,11 |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitProgram; |
import pt.estgp.estgweb.domain.CourseUnitProgramImpl; |
import pt.estgp.estgweb.domain.CourseUnitProgramPart2Impl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
23,8 → 27,28 |
{ |
private static final Logger logger = Logger.getLogger(SincronizeLastYearCourseUnitProgramsService.class); |
|
|
public ILogMessages run(String year) throws ServiceException |
|
/** |
* DESCRICAO DE SERVICO |
* |
* Unidades sem ficha é-lhes atribuida a ficha do ano anterior, |
* 1º é atribuido o mesmo professor como responsável |
* 2º a Ficha é clonada |
* 3º a Ficha fica com estado de não validada |
* |
* Restrições por ordem de prioridade |
* - Fichas com estado validadas não são clonadas |
* - Fichas invalidas poderão ser clonadas se: |
* - Não existir ficha |
* - ou para fichas já clonadas apenas são clonadas novamente se a condição |
* de entrada cloneOnlyNews for false |
* |
* @param year |
* @param cloneOnlyNews |
* @return |
* @throws ServiceException |
*/ |
public ILogMessages run(String year,boolean cloneOnlyNews) throws ServiceException |
{ |
|
int found = 0; |
44,6 → 68,7 |
if(cu.getCourseUnitProgram() == null) |
{ |
|
SaveCourseUnitProgram service = new SaveCourseUnitProgram(); |
List<CourseUnit> lista = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique(cu.getCode(),cu.getCourseCode(),importYearBefore); |
if(lista != null && lista.size() > 0) |
{ |
56,7 → 81,27 |
if(cuOld.getResponsableTeacher() != null && cu.getResponsableTeacher() == null) |
cu.setResponsableTeacher(cuOld.getResponsableTeacher()); |
|
//todo clonagem aqui |
boolean novaFicha = false; |
|
if(cu.getCourseUnitProgram() == null) |
{ |
novaFicha = true; |
CourseUnitProgram program = new CourseUnitProgramImpl(); |
DaoFactory.getCourseUnitProgramDaoImpl().save(program); |
program.setCourseUnitProgramPart2(new CourseUnitProgramPart2Impl()); |
DaoFactory.getCourseUnitProgramPart2DaoImpl().save(program.getCourseUnitProgramPart2()); |
cu.setCourseUnitProgram(program); |
cu.setValidProgram(false); |
} |
|
//So clona a ficha no caso de não estar validada pelo CC |
if(novaFicha || (!cu.isValidProgram() && !cloneOnlyNews)) |
{ |
cu.getCourseUnitProgram().cloneFrom(cuOld.getCourseUnitProgram()); |
List<String> errors = new ArrayList<String>(); |
service.createPdf(cu,errors); |
} |
|
} |
else |
{ |
102,8 → 147,11 |
String year = DatesUtils.getImportYear(); |
if(args != null && args.length > 0) |
year = args[0]; |
boolean cloneOnlyNews = true; |
if(args != null && args.length > 1) |
cloneOnlyNews = Boolean.parseBoolean(args[1]); |
AbstractDao.getCurrentSession().beginTransaction(); |
new SincronizeLastYearCourseUnitProgramsService().run(year); |
new SincronizeLastYearCourseUnitProgramsService().run(year,cloneOnlyNews); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
|