Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1299 → Rev 1300

/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);
 
}
}