/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitProgram.java |
---|
16,6 → 16,7 |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import pt.estgp.estgweb.utils.StringsUtils; |
110,13 → 111,18 |
} |
public void createPdf(CourseUnit cu, List<String> errors) throws IOException, TransformerException, FOPException { |
createPdf(cu,errors,null); |
} |
public void createPdf(CourseUnit cu, List<String> errors,UserSession u) throws IOException, TransformerException, FOPException { |
createPdf(cu,errors,null,null); |
} |
public void createPdf(CourseUnit cu, List<String> errors,UserSession u,List<String> warns) throws IOException, TransformerException, FOPException { |
String path = generatePdfFile(cu, errors, u); |
146,26 → 152,35 |
//NOVO |
RepositoryFileImpl repoFile = repositoryService.loadView(cu.getProgramStreamId()); |
sendPdfFtpIonline(cu,errors,u,path,repoFile.getLastVersion().getSaveDate(),null); |
sendPdfFtpIonline(cu,errors,u,path,repoFile.getLastVersion().getSaveDate(),null,warns); |
} |
public boolean sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u, FTPClient client) throws IOException, TransformerException, FOPException |
public boolean sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u, FTPClient client, List<String> warns) throws IOException, TransformerException, FOPException |
{ |
RepositoryService repositoryService = new RepositoryService(); |
if(cu.getProgramStreamId() != null && cu.getProgramStreamId().length()> 0) |
{ |
RepositoryFileImpl repoFile = repositoryService.loadView(cu.getProgramStreamId()); |
String path = generatePdfFile(cu, errors, u); |
sendPdfFtpIonline(cu,errors,u,path,repoFile.getLastVersion().getSaveDate(),client); |
sendPdfFtpIonline(cu,errors,u,path,repoFile.getLastVersion().getSaveDate(),client,warns); |
return true; |
} |
return false; |
} |
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd.HH_mm_ss"); |
private void sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u,String pdfPath,Date versionDate,FTPClient client) throws IOException, TransformerException, FOPException { |
private void sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u,String pdfPath,Date versionDate,FTPClient client,List<String> warnings) throws IOException, TransformerException, FOPException { |
if(ConfigProperties.getBooleanProperty("test.control.var.DontSendIonlineFiles")) |
{ |
String warn = "System in TEST Environement - will NOT send file to ionline test.control.var.DontSendIonlineFiles = true"; |
if(warnings != null) |
warnings.add(warn); |
logger.warn(warn); |
return; |
} |
FtpServer server = null; |
if(client == null) |
{ |
425,7 → 440,7 |
try { |
List<String> errors = new ArrayList<String>(); |
System.out.print("Sending " + next.getCourse().getName() + " - " + next.getSemestre() + " - " + next.getNormalizedName()); |
if(sendPdfFtpIonline(next,errors,null,client)) |
if(sendPdfFtpIonline(next,errors,null,client,null)) |
System.out.print(" ... OK"); |
else |
System.out.print(" ... FAIL probably no StreamID"); |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/YearSemestreCourseUnitIteratorService.java |
---|
New file |
0,0 → 1,124 |
package pt.estgp.estgweb.services.sigesimports; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.jobs.ServiceJob; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.List; |
/** |
* @author Jorge Machado |
*/ |
public abstract class YearSemestreCourseUnitIteratorService extends ServiceJob implements IService |
{ |
private static final Logger logger = Logger.getLogger(YearSemestreCourseUnitIteratorService.class); |
private static final int MAX_COMMIT = 100; |
/** |
* 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 |
* @return |
* @throws pt.estgp.estgweb.services.expceptions.ServiceException |
*/ |
public ILogMessages run(String year,String semestre) throws ServiceException |
{ |
String msgS = "STARTING ITERATING UNITS ABSTRACT SERVICE FOR year: " + year + " semestre: " + semestre; |
serviceLogInfo(msgS); |
logger.info(msgS); |
int found = 0; |
DefaultLogMessages logMessages = new DefaultLogMessages(); |
try |
{ |
logMessages.addMessage(new DefaultLogMessage("year semestre iterator service", LogMessageTypeEnum.INFO, "instituicao " + DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode())); |
serviceLogInfo(logMessages.getLastMessage()); |
int i = 0; |
List<Long> units = DaoFactory.getCourseUnitDaoImpl().loadIds(year,semestre); |
for (Long cuId: units) |
{ |
found++; |
if (i++ > MAX_COMMIT) |
{ |
i = 0; |
setProgress((int) (((float)found)/((float)units.size())*100.0f)); |
commitPartially(); |
} |
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(cuId); |
runUnit(cu,logMessages); |
} |
setProgress(100); |
logger.info("######################################"); |
serviceLogInfo("######################################"); |
logger.info("######################################"); |
serviceLogInfo("######################################"); |
logger.info("STATS " + year + " " + semestre); |
serviceLogInfo("STATS " + year + " " + semestre); |
logger.info("Total Iteradas: " + found); |
serviceLogInfo("Total Iteradas: " + found); |
printStatsVariables(); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
serviceLogError(e.toString(),e); |
} |
logger.info("terminating iteration of units"); |
serviceLogInfo("terminating iteration of units"); |
logMessages.addMessage(new DefaultLogMessage("terminating iteration of units terminating", LogMessageTypeEnum.INFO)); |
return logMessages; |
} |
protected abstract ILogMessages runUnit(CourseUnit unit,DefaultLogMessages messages); |
protected abstract void resetVariables(); |
protected abstract void printStatsVariables(); |
/** |
* Parameters for ServiceJob |
* importYear : String |
* cloneOnlyNews : Boolean |
* generateAllPdfs : Boolean |
* |
* @throws Throwable |
*/ |
@Override |
protected ILogMessages runJobServiceTask() throws Throwable |
{ |
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject(); |
String semestre = getParametersMap().get(JOB_semestre_KEY).getObject(); |
return run(importYear,semestre); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/SincronizeLastYearCourseUnitProgramsService.java |
---|
100,6 → 100,7 |
if(cu.getCourseUnitProgram() == null || !cloneOnlyNews) |
{ |
//todo cuidado que ignoro o semestre |
List<CourseUnit> lista = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique(cu.getCode(),cu.getCourseCode(),importYearBefore); |
if(lista != null && lista.size() > 0) |
{ |
135,13 → 136,28 |
CourseUnitProgramImpl cProgram = (CourseUnitProgramImpl) DaoFactory.getCourseUnitProgramDaoImpl().narrow(cu.getCourseUnitProgram()); |
cProgram.cloneFrom(cuOld.getCourseUnitProgram()); |
List<String> errors = new ArrayList<String>(); |
List<String> warnings = new ArrayList<String>(); |
clonados.add(cu.getCode()); |
service.createPdf(cu,errors); |
if(errors.size() > 0) |
{ |
for(String error:errors) |
{ |
serviceLogError(error); |
logMessages.addMessage(new DefaultLogMessage("Unit: " + cu.getCode() + " ERROR generating PDF:" + error, LogMessageTypeEnum.ERROR)); |
serviceLogError(logMessages.getLastMessage()); |
logger.error(logMessages.getLastMessage()); |
} |
} |
if(warnings.size() > 0) |
{ |
for(String warning: warnings) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.warning",LogMessageTypeEnum.WARNING,"Unit: " + cu.getCode() + " Warning generating PDF:" + warning)); |
serviceLogWarn(logMessages.getLastMessage()); |
logger.warn(logMessages.getLastMessage()); |
} |
} |
cu.setValidProgram(validate); |
} |
else |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/GenerateCourseUnitProgramsService.java |
---|
New file |
0,0 → 1,98 |
package pt.estgp.estgweb.services.sigesimports; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author Jorge Machado |
*/ |
public class GenerateCourseUnitProgramsService extends YearSemestreCourseUnitIteratorService |
{ |
private static final Logger logger = Logger.getLogger(GenerateCourseUnitProgramsService.class); |
int failedPrograms = 0; |
int dontHaveProgram = 0; |
int ok = 0; |
@Override |
protected ILogMessages runUnit(CourseUnit unit,DefaultLogMessages logMessages) { |
SaveCourseUnitProgram service = new SaveCourseUnitProgram(); |
List<String> errors = new ArrayList<String>(); |
List<String> warnings = new ArrayList<String>(); |
try |
{ |
if(unit.getCourseUnitProgram() != null) |
{ |
service.createPdf(unit,errors,null,warnings); |
if(warnings.size() > 0) |
{ |
for(String warning: warnings) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.warning",LogMessageTypeEnum.WARNING,"Unit: " + unit.getCode() + " Warning generating PDF:" + warning)); |
serviceLogWarn(logMessages.getLastMessage()); |
logger.warn(logMessages.getLastMessage()); |
} |
} |
if(errors.size() == 0) |
ok++; |
else |
{ |
failedPrograms++; |
for(String error: errors) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.error",LogMessageTypeEnum.ERROR,"Unit: " + unit.getCode() + " ERROR generating PDF:" + error)); |
serviceLogError(logMessages.getLastMessage()); |
logger.error(logMessages.getLastMessage()); |
} |
} |
} |
else |
dontHaveProgram++; |
} |
catch (Throwable e) |
{ |
failedPrograms++; |
serviceLogError(e.toString()); |
logMessages.addMessage(new DefaultLogMessage("import.error",LogMessageTypeEnum.ERROR,e.toString())); |
logger.error(e,e); |
} |
return logMessages; |
} |
@Override |
protected void resetVariables() { |
failedPrograms = 0; |
dontHaveProgram = 0; |
ok=0; |
} |
@Override |
protected void printStatsVariables() { |
logger.info("Generated Programs " + ok); |
serviceLogInfo("Generated Programs " + ok); |
logger.info("Failed Programs " + failedPrograms); |
serviceLogInfo("Failed Programs " + failedPrograms); |
logger.info("Without Programs to generate " + dontHaveProgram); |
serviceLogInfo("Without Programs to generate " + dontHaveProgram); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/jobs/JobScheduleService.java |
---|
193,6 → 193,25 |
JobServiceTaskSchedulerParameter parameter = params.iterator().next(); |
parameter.setObject(jobJobImportYearKey); |
} |
else if(persistent.getTargetService().equals(GenerateCourseUnitProgramsService.class.getName())) |
{ |
if(params == null || params.size() == 0) |
{ |
createParameter(persistent,ServiceJob.JOB_importYear_KEY); |
createParameter(persistent,ServiceJob.JOB_semestre_KEY); |
} |
for(JobServiceTaskSchedulerParameter param:persistent.getServiceTaskSchedulerParameters()) |
{ |
if(param.getName().equals(ServiceJob.JOB_importYear_KEY)) |
{ |
param.setObject(jobJobImportYearKey); |
} |
else if(param.getName().equals(ServiceJob.JOB_semestre_KEY)) |
{ |
param.setObject(jobJobSemestreKey); |
} |
} |
} |
else if(persistent.getTargetService().equals(ImportSumariesJson.class.getName())) |
{ |
if(params == null || params.size() == 0) |
274,6 → 293,7 |
scheduleImportTeachers(); |
scheduleImportCourses(); |
scheduleImportStudents(); |
scheduleGeneratePrograms(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
492,4 → 512,46 |
new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess); |
} |
public static void scheduleGeneratePrograms() |
{ |
JobServiceTaskScheduler jobServiceTaskScheduler = DomainObjectFactory.createJobServiceTaskSchedulerImpl(); |
jobServiceTaskScheduler.setId(0); |
JobServiceTaskSchedulerParameterImpl param1 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl(); |
param1.setJobServiceTaskScheduler(jobServiceTaskScheduler); |
param1.setName(ImportTeachersService.JOB_importYear_KEY); |
param1.setDescription("desc1"); |
param1.setObject("201516"); |
JobServiceTaskSchedulerParameterImpl param2 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl(); |
param2.setJobServiceTaskScheduler(jobServiceTaskScheduler); |
param2.setName(ImportTeachersService.JOB_semestre_KEY); |
param2.setDescription("desc2"); |
param2.setObject("S1"); |
Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>(); |
params.add(param1); |
params.add(param2); |
jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params); |
jobServiceTaskScheduler.setDaily(true); |
jobServiceTaskScheduler.setWeekly(false); |
jobServiceTaskScheduler.setMonthly(false); |
jobServiceTaskScheduler.setMonthday(GregorianCalendar.NOVEMBER); |
jobServiceTaskScheduler.setWeekday(GregorianCalendar.MONDAY); |
jobServiceTaskScheduler.setHour(02); |
jobServiceTaskScheduler.setMinute(0); |
jobServiceTaskScheduler.setSecond(0); |
jobServiceTaskScheduler.setTargetService(GenerateCourseUnitProgramsService.class.getName()); |
User u = (User) DaoFactory.getTeacherDaoImpl().findByEmail("jmachado@estgp.pt").get(0); |
UserSession sess = new UserSession() { |
@Override |
public Serializable getSerializable() { |
return null; |
} |
}; |
sess.setUser(u); |
jobServiceTaskScheduler.setDescription("Programas"); |
new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess); |
} |
} |