Subversion Repositories bacoAlunos

Rev

Rev 1306 | Rev 1312 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.services.jobs;

import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.sigesimports.*;
import pt.utl.ist.berserk.logic.serviceManager.IService;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.*;

/**
 * @author Jorge Machado
 * @date 11/Jul/2008
 * @see pt.estgp.estgweb.services.jobs
 */

public class JobScheduleService implements IService
{

    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(JobScheduleService.class);

    private static JobScheduleService instance = new JobScheduleService();

    public static JobScheduleService getInstance()
    {
        return instance;
    }
    public void scheduleNow(JobHandler handler, 1.5.0/docs/api/java/lang/String.html">String description, UserSession userSession)
    {
        schedule(handler, description, new 5+0%2Fdocs%2Fapi+Date">Date(),userSession);
    }

    public void schedule(JobHandler handler, 1.5.0/docs/api/java/lang/String.html">String description, 5+0%2Fdocs%2Fapi+Date">Date startDate, UserSession userSession)
    {
        Job job = DomainObjectFactory.createJobImpl();
        if(userSession != null && userSession.getUser() != null)
            job.setOwner(userSession.getUser());
        job.setDescription(description);
        job.setStartDate(startDate);
        job.setJobHandler(handler);
        DaoFactory.getJobDaoImpl().save(job);
    }

    /*
    public void scheduleServiceTask(JobServiceTask job, String description, Date startDate, UserSession userSession)
    {
        //Job job = DomainObjectFactory.createJobImpl();
        if(userSession != null && userSession.getUser() != null)
            job.setOwner(userSession.getUser());
        job.setDescription(description);
        job.setStartDate(startDate);
        //job.setJobHandler(); The handler is the specific Job
        DaoFactory.getJobDaoImpl().save(job);
    }
*/

    public void createOrUpdateScheduleServiceTask(JobServiceTaskScheduler schedule, UserSession userSession)
    {
        if(schedule.getId() <= 0)
        {
            schedule.setCreatedBy(userSession.getUser());
            //job.setJobHandler(); The handler is the specific Job
            DaoFactory.getJobServiceTaskSchedulerDaoImpl().save(schedule);
            for(JobServiceTaskSchedulerParameter param: schedule.getServiceTaskSchedulerParameters())
            {
                DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().save(param);
            }

        }
        else
        {
            JobServiceTaskScheduler persistent = DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(schedule.getId());
            //delete old parameters
            Iterator<JobServiceTaskSchedulerParameter> iter = persistent.getServiceTaskSchedulerParameters().iterator();
            while(iter.hasNext())
            {
                JobServiceTaskSchedulerParameter param = iter.next();
                iter.remove();
                param.setJobServiceTaskScheduler(null);
                DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().delete(param);
                //DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().evict(param);
            }

            DaoFactory.getJobServiceTaskSchedulerDaoImpl().saveOrUpdate(persistent);
            //set new ones
            for(JobServiceTaskSchedulerParameter param: schedule.getServiceTaskSchedulerParameters())
            {
                persistent.getServiceTaskSchedulerParameters().add(param);
                param.setJobServiceTaskScheduler(persistent);
                DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().save(param);
            }
            persistent.setServiceTaskSchedulerParameters(schedule.getServiceTaskSchedulerParameters());
            persistent.setNow(schedule.isNow());
            persistent.setDaily(schedule.isDaily());
            persistent.setWeekly(schedule.isWeekly());
            persistent.setMonthly(schedule.isMonthly());
            persistent.setWeekday(schedule.getWeekday());
            persistent.setMonthday(schedule.getMonthday());
            persistent.setHour(schedule.getHour());
            persistent.setMinute(schedule.getMinute());
            persistent.setSecond(schedule.getSecond());
            persistent.setDescription(schedule.getDescription());
            persistent.setTargetService(schedule.getTargetService());
            DaoFactory.getJobServiceTaskSchedulerDaoImpl().saveOrUpdate(persistent);
        }
    }

    public void runNow(1.5.0/docs/api/java/lang/Long.html">Long schedulerId, UserSession sess)
    {
        JobServiceTaskScheduler persistent = DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(schedulerId);
        logger.info("Will run now task " + persistent.getTargetService() + " id:" + schedulerId);
        persistent.setNow(true);
    }

    public JobServiceTaskScheduler toggleActive(1.5.0/docs/api/java/lang/Long.html">Long schedulerId, UserSession sess)
    {
        JobServiceTaskScheduler persistent = DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(schedulerId);
        if(persistent.isActive())
            logger.info("Will deactivate task " + persistent.getTargetService() + " id:" + schedulerId);
        else
            logger.info("Will activate task " + persistent.getTargetService() + " id:" + schedulerId);
        persistent.setActive(!persistent.isActive());
        return persistent;
    }

    public void delete(1.5.0/docs/api/java/lang/Long.html">Long schedulerId, UserSession sess)
    {

        JobServiceTaskScheduler persistent = DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(schedulerId);
        logger.warn("Will delete task " + persistent.getTargetService() + " id:" + schedulerId);
        Set<JobServiceTaskSchedulerParameter> params = persistent.getServiceTaskSchedulerParameters();
        if(params != null)
        {
            Iterator<JobServiceTaskSchedulerParameter> iterParam = params.iterator();
            while(iterParam.hasNext()) {
                JobServiceTaskSchedulerParameter next = iterParam.next();
                next.setJobServiceTaskScheduler(null);
                iterParam.remove();
                DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().delete(next);
            }
        }
        DaoFactory.getJobServiceTaskSchedulerDaoImpl().delete(persistent);
    }

    public void save(JobServiceTaskSchedulerImpl scheduler
            ,1.5.0/docs/api/java/lang/String.html">String jobCloneOnlyNewsKey
            ,1.5.0/docs/api/java/lang/String.html">String jobJobGenerateAllPdfsKey
            ,1.5.0/docs/api/java/lang/String.html">String jobJobImportYearKey
            ,1.5.0/docs/api/java/lang/String.html">String jobJobSemestreKey
            ,1.5.0/docs/api/java/lang/String.html">String jobSendEmailKey
            ,1.5.0/docs/api/java/lang/String.html">String jobSendIonlineKey
            ,1.5.0/docs/api/java/lang/String.html">String jobJobValidateKey
            ,UserSession sess)
    {
        JobServiceTaskSchedulerImpl persistent;
        if(scheduler.getId() <= 0)
        {
            persistent = DomainObjectFactory.createJobServiceTaskSchedulerImpl();
            persistent.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
            persistent.setActive(false);
            persistent.setCreatedBy(sess.getUser());
            DaoFactory.getJobServiceTaskSchedulerDaoImpl().save(persistent);

            logger.info("Will create task scheduller " + persistent.getTargetService() + " id:" + scheduler.getId());
        }
        else
        {
            persistent = (JobServiceTaskSchedulerImpl) DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(scheduler.getId());
            logger.warn("Will update task scheduller " + persistent.getTargetService() + " id:" + scheduler.getId());
        }

        persistent.setTargetService(scheduler.getTargetService());
        persistent.setDaily(scheduler.isDaily());
        persistent.setMonthly(scheduler.isMonthly());
        persistent.setWeekly(scheduler.isWeekly());

        persistent.setHour(scheduler.getHour());
        persistent.setMinute(scheduler.getMinute());
        persistent.setSecond(scheduler.getSecond());
        persistent.setDescription(scheduler.getDescription());

        Set<JobServiceTaskSchedulerParameter> params = persistent.getServiceTaskSchedulerParameters();
        if(persistent.getTargetService().equals(ImportCourseService.class.getName()) ||
           persistent.getTargetService().equals(ImportGradesService.class.getName()) ||
           persistent.getTargetService().equals(ImportStudentsService.class.getName()) ||
           persistent.getTargetService().equals(ImportTeachersService.class.getName()))
        {
            if(params == null || params.size() == 0)
            {
                createParameter(persistent,ServiceJob.JOB_importYear_KEY);
            }
            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)
            {
                createParameter(persistent,ServiceJob.JOB_importYear_KEY);
                createParameter(persistent,ServiceJob.JOB_semestre_KEY);
                createParameter(persistent,ServiceJob.JOB_sendIonline_KEY);
                createParameter(persistent,ServiceJob.JOB_sendEmail_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(param.getName().equals(ServiceJob.JOB_sendIonline_KEY))
                {
                    param.setObject(jobSendIonlineKey);
                }
                else if(param.getName().equals(ServiceJob.JOB_sendEmail_KEY))
                {
                    param.setObject(jobSendEmailKey);
                }
            }

        }
        else if(persistent.getTargetService().equals(SincronizeLastYearCourseUnitProgramsService.class.getName()))
        {
            if(params == null || params.size() == 0)
            {
                createParameter(persistent,ServiceJob.JOB_semestre_KEY);
                createParameter(persistent,ServiceJob.JOB_importYear_KEY);
                createParameter(persistent,ServiceJob.JOB_cloneOnlyNews_KEY);
                createParameter(persistent,ServiceJob.JOB_generateAllPdfs_KEY);
                createParameter(persistent,ServiceJob.JOB_validate_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(param.getName().equals(ServiceJob.JOB_cloneOnlyNews_KEY))
                {
                    param.setObject(jobCloneOnlyNewsKey);
                }
                else if(param.getName().equals(ServiceJob.JOB_generateAllPdfs_KEY))
                {
                    param.setObject(jobJobGenerateAllPdfsKey);
                }
                else if(param.getName().equals(ServiceJob.JOB_validate_KEY))
                {
                    param.setObject(jobJobValidateKey);
                }
            }
        }
    }

    private void createParameter(JobServiceTaskSchedulerImpl persistent,1.5.0/docs/api/java/lang/String.html">String name) {
        JobServiceTaskSchedulerParameterImpl param = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        param.setJobServiceTaskScheduler(persistent);
        persistent.getServiceTaskSchedulerParameters().add(param);
        param.setName(name);
        DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().save(param);
    }

    public static void main(1.5.0/docs/api/java/lang/String.html">String[] args) throws 1.5.0/docs/api/java/sql/SQLException.html">SQLException
    {
        AbstractDao.getCurrentSession().beginTransaction();
        scheduleImportSummaries();
        scheduleImportTeachers();
        scheduleImportCourses();
        scheduleImportStudents();
        scheduleGeneratePrograms();
        AbstractDao.getCurrentSession().getTransaction().commit();
    }

    public static void scheduleSincronizePrograms()
    {
        JobServiceTaskScheduler jobServiceTaskScheduler = DomainObjectFactory.createJobServiceTaskSchedulerImpl();
        jobServiceTaskScheduler.setId(0);
        JobServiceTaskSchedulerParameterImpl param1 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        JobServiceTaskSchedulerParameterImpl param2 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        JobServiceTaskSchedulerParameterImpl param3 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        JobServiceTaskSchedulerParameterImpl param4 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        JobServiceTaskSchedulerParameterImpl param5 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        param1.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param2.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param3.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param4.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param5.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param1.setName(SincronizeLastYearCourseUnitProgramsService.JOB_cloneOnlyNews_KEY);
        param2.setName(SincronizeLastYearCourseUnitProgramsService.JOB_generateAllPdfs_KEY);
        param3.setName(SincronizeLastYearCourseUnitProgramsService.JOB_importYear_KEY);
        param4.setName(SincronizeLastYearCourseUnitProgramsService.JOB_validate_KEY);
        param4.setName(SincronizeLastYearCourseUnitProgramsService.JOB_semestre_KEY);
        param1.setDescription("desc1");
        param2.setDescription("desc2");
        param3.setDescription("desc3");
        param4.setDescription("desc4");
        param5.setDescription("desc5");
        param1.setObject("false");
        param2.setObject("true");
        param3.setObject("201415");
        param4.setObject("true");
        param5.setObject("S1");
        Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>();
        params.add(param1);
        params.add(param2);
        params.add(param3);
        params.add(param4);
        params.add(param5);
        jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);

        jobServiceTaskScheduler.setDaily(true);
        jobServiceTaskScheduler.setMonthday(1);
        jobServiceTaskScheduler.setWeekday(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.MONDAY);
        jobServiceTaskScheduler.setHour(01);
        jobServiceTaskScheduler.setMinute(0);
        jobServiceTaskScheduler.setSecond(0);
        jobServiceTaskScheduler.setTargetService(SincronizeLastYearCourseUnitProgramsService.class.getName());
        User u = (User) DaoFactory.getTeacherDaoImpl().findByEmail("jmachado@estgp.pt").get(0);
        UserSession sess = new UserSession() {
            @1.5.0/docs/api/java/lang/Override.html">Override
            public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable() {
                return null;
            }
        };
        sess.setUser(u);
        jobServiceTaskScheduler.setDescription("TESTE2");
        new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess);

    }

    public static void scheduleImportSummaries()
    {
        JobServiceTaskScheduler jobServiceTaskScheduler = DomainObjectFactory.createJobServiceTaskSchedulerImpl();
        jobServiceTaskScheduler.setId(0);
        JobServiceTaskSchedulerParameterImpl param1 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        JobServiceTaskSchedulerParameterImpl param2 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        JobServiceTaskSchedulerParameterImpl param3 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        JobServiceTaskSchedulerParameterImpl param4 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        param1.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param2.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param3.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param4.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param1.setName(ImportSumariesJson.JOB_importYear_KEY);
        param2.setName(ImportSumariesJson.JOB_semestre_KEY);
        param3.setName(ImportSumariesJson.JOB_sendEmail_KEY);
        param4.setName(ImportSumariesJson.JOB_sendIonline_KEY);
        param1.setDescription("desc1");
        param2.setDescription("desc2");
        param3.setDescription("desc3");
        param4.setDescription("desc4");
        param1.setObject("201516");
        param2.setObject("S1");
        param3.setObject("false");
        param4.setObject("true");
        Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>();
        params.add(param1);
        params.add(param2);
        params.add(param3);
        params.add(param4);
        jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);

        jobServiceTaskScheduler.setDaily(true);
        jobServiceTaskScheduler.setWeekly(false);
        jobServiceTaskScheduler.setMonthly(false);
        jobServiceTaskScheduler.setMonthday(1);
        jobServiceTaskScheduler.setWeekday(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.MONDAY);
        jobServiceTaskScheduler.setHour(05);
        jobServiceTaskScheduler.setMinute(0);
        jobServiceTaskScheduler.setSecond(0);
        jobServiceTaskScheduler.setTargetService(ImportSumariesJson.class.getName());
        User u = (User) DaoFactory.getTeacherDaoImpl().findByEmail("jmachado@estgp.pt").get(0);
        UserSession sess = new UserSession() {
            @1.5.0/docs/api/java/lang/Override.html">Override
            public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable() {
                return null;
            }
        };
        sess.setUser(u);
        jobServiceTaskScheduler.setDescription("Sumarios");
        new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess);

    }

    public static void scheduleImportCourses()
    {
        JobServiceTaskScheduler jobServiceTaskScheduler = DomainObjectFactory.createJobServiceTaskSchedulerImpl();
        jobServiceTaskScheduler.setId(0);
        JobServiceTaskSchedulerParameterImpl param1 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        param1.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param1.setName(ImportCourseService.JOB_importYear_KEY);
        param1.setDescription("desc1");
        param1.setObject("201516");
        Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>();
        params.add(param1);
        jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);

        jobServiceTaskScheduler.setDaily(true);
        jobServiceTaskScheduler.setMonthly(false);
        jobServiceTaskScheduler.setMonthday(1);
        jobServiceTaskScheduler.setWeekday(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.MONDAY);
        jobServiceTaskScheduler.setHour(01);
        jobServiceTaskScheduler.setMinute(0);
        jobServiceTaskScheduler.setSecond(0);
        jobServiceTaskScheduler.setTargetService(ImportCourseService.class.getName());
        User u = (User) DaoFactory.getTeacherDaoImpl().findByEmail("jmachado@estgp.pt").get(0);
        UserSession sess = new UserSession() {
            @1.5.0/docs/api/java/lang/Override.html">Override
            public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable() {
                return null;
            }
        };
        sess.setUser(u);
        jobServiceTaskScheduler.setDescription("Cursos");
        new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess);

    }



    public static void scheduleImportStudents()
    {
        JobServiceTaskScheduler jobServiceTaskScheduler = DomainObjectFactory.createJobServiceTaskSchedulerImpl();
        jobServiceTaskScheduler.setId(0);
        JobServiceTaskSchedulerParameterImpl param1 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
        param1.setJobServiceTaskScheduler(jobServiceTaskScheduler);
        param1.setName(ImportStudentsService.JOB_importYear_KEY);
        param1.setDescription("desc1");
        param1.setObject("201516");
        Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>();
        params.add(param1);
        jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);

        jobServiceTaskScheduler.setDaily(true);
        jobServiceTaskScheduler.setMonthly(false);
        jobServiceTaskScheduler.setWeekly(false);
        jobServiceTaskScheduler.setMonthday(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.NOVEMBER);
        jobServiceTaskScheduler.setWeekday(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.MONDAY);
        jobServiceTaskScheduler.setHour(03);
        jobServiceTaskScheduler.setMinute(0);
        jobServiceTaskScheduler.setSecond(0);
        jobServiceTaskScheduler.setTargetService(ImportStudentsService.class.getName());
        User u = (User) DaoFactory.getTeacherDaoImpl().findByEmail("jmachado@estgp.pt").get(0);
        UserSession sess = new UserSession() {
            @1.5.0/docs/api/java/lang/Override.html">Override
            public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable() {
                return null;
            }
        };
        sess.setUser(u);
        jobServiceTaskScheduler.setDescription("Estudantes");
        new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess);

    }

    public static void scheduleImportTeachers()
    {
        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");
        Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>();
        params.add(param1);
        jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);

        jobServiceTaskScheduler.setDaily(true);
        jobServiceTaskScheduler.setWeekly(false);
        jobServiceTaskScheduler.setMonthly(false);
        jobServiceTaskScheduler.setMonthday(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.NOVEMBER);
        jobServiceTaskScheduler.setWeekday(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.MONDAY);
        jobServiceTaskScheduler.setHour(02);
        jobServiceTaskScheduler.setMinute(0);
        jobServiceTaskScheduler.setSecond(0);
        jobServiceTaskScheduler.setTargetService(ImportTeachersService.class.getName());
        User u = (User) DaoFactory.getTeacherDaoImpl().findByEmail("jmachado@estgp.pt").get(0);
        UserSession sess = new UserSession() {
            @1.5.0/docs/api/java/lang/Override.html">Override
            public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable() {
                return null;
            }
        };
        sess.setUser(u);
        jobServiceTaskScheduler.setDescription("Professores");
        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(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.NOVEMBER);
        jobServiceTaskScheduler.setWeekday(1.5.0/docs/api/java/util/GregorianCalendar.html">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() {
            @1.5.0/docs/api/java/lang/Override.html">Override
            public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable() {
                return null;
            }
        };
        sess.setUser(u);
        jobServiceTaskScheduler.setDescription("Programas");
        new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess);

    }
}