Search in sources :

Example 26 with ComplexJobTrigger

use of org.pentaho.platform.api.scheduler2.ComplexJobTrigger in project pentaho-platform by pentaho.

the class ComplexTriggerTest method timeSliceTest.

@Test
public void timeSliceTest() {
    ComplexJobTrigger trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010);
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH);
    trigger.addDayOfWeekRecurrence(ComplexJobTrigger.SATURDAY);
    trigger.addHourlyRecurrence(12);
    trigger.addMinuteRecurrence(15);
    trigger.addSecondRecurrence(1);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0,1 0,15 0,12 ? 3 7 2010");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010);
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH);
    trigger.setDayOfWeekRecurrence(ComplexJobTrigger.SATURDAY);
    trigger.setHourlyRecurrence(12);
    trigger.setMinuteRecurrence(15);
    trigger.setSecondRecurrence(1);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "1 15 12 ? 3 7 2010");
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010);
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH);
    trigger.addDayOfMonthRecurrence(10);
    trigger.addHourlyRecurrence(12);
    trigger.addMinuteRecurrence(15);
    trigger.addSecondRecurrence(1);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0,1 0,15 0,12 10 3 ? 2010");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010);
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH);
    trigger.setDayOfMonthRecurrence(10);
    trigger.setHourlyRecurrence(12);
    trigger.setMinuteRecurrence(15);
    trigger.setSecondRecurrence(1);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "1 15 12 10 3 ? 2010");
    trigger = new ComplexJobTrigger(2010, ComplexJobTrigger.MARCH, null, ComplexJobTrigger.SATURDAY, 12);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0 12 ? 3 7 2010");
    trigger = new ComplexJobTrigger(2010, ComplexJobTrigger.MARCH, 10, null, 12);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0 12 10 3 ? 2010");
    trigger = QuartzScheduler.createComplexTrigger("5 15 12 ? 3 7 2010");
    Assert.assertEquals(trigger.getYearlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getYearlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getYearlyRecurrences().get(0)).getValues().size(), 1);
    Assert.assertEquals(((RecurrenceList) trigger.getYearlyRecurrences().get(0)).getValues().get(0), new Integer(2010));
    Assert.assertEquals(trigger.getMonthlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getMonthlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getMonthlyRecurrences().get(0)).getValues().size(), 1);
    Assert.assertEquals(((RecurrenceList) trigger.getMonthlyRecurrences().get(0)).getValues().get(0), new Integer(ComplexJobTrigger.MARCH));
    Assert.assertEquals(trigger.getDayOfMonthRecurrences().size(), 0);
    Assert.assertEquals(trigger.getDayOfWeekRecurrences().size(), 1);
    Assert.assertTrue(trigger.getDayOfWeekRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getDayOfWeekRecurrences().get(0)).getValues().size(), 1);
    Assert.assertEquals(((RecurrenceList) trigger.getDayOfWeekRecurrences().get(0)).getValues().get(0), new Integer(7));
    Assert.assertEquals(trigger.getHourlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getHourlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getHourlyRecurrences().get(0)).getValues().size(), 1);
    Assert.assertEquals(((RecurrenceList) trigger.getHourlyRecurrences().get(0)).getValues().get(0), new Integer(12));
    Assert.assertEquals(trigger.getMinuteRecurrences().size(), 1);
    Assert.assertTrue(trigger.getMinuteRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getMinuteRecurrences().get(0)).getValues().size(), 1);
    Assert.assertEquals(((RecurrenceList) trigger.getMinuteRecurrences().get(0)).getValues().get(0), new Integer(15));
    Assert.assertEquals(trigger.getSecondRecurrences().size(), 1);
    Assert.assertTrue(trigger.getSecondRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getSecondRecurrences().get(0)).getValues().size(), 1);
    Assert.assertEquals(((RecurrenceList) trigger.getSecondRecurrences().get(0)).getValues().get(0), new Integer(5));
    trigger = QuartzScheduler.createComplexTrigger("* * * * * ? *");
    Assert.assertEquals(trigger.getYearlyRecurrences().size(), 0);
    Assert.assertEquals(trigger.getMonthlyRecurrences().size(), 0);
    Assert.assertEquals(trigger.getDayOfMonthRecurrences().size(), 0);
    Assert.assertEquals(trigger.getDayOfWeekRecurrences().size(), 0);
    Assert.assertEquals(trigger.getHourlyRecurrences().size(), 0);
    Assert.assertEquals(trigger.getMinuteRecurrences().size(), 0);
    Assert.assertEquals(trigger.getSecondRecurrences().size(), 0);
    trigger = QuartzScheduler.createComplexTrigger("* * * ? * * *");
    Assert.assertEquals(trigger.getYearlyRecurrences().size(), 0);
    Assert.assertEquals(trigger.getMonthlyRecurrences().size(), 0);
    Assert.assertEquals(trigger.getDayOfMonthRecurrences().size(), 0);
    Assert.assertEquals(trigger.getDayOfWeekRecurrences().size(), 0);
    Assert.assertEquals(trigger.getHourlyRecurrences().size(), 0);
    Assert.assertEquals(trigger.getMinuteRecurrences().size(), 0);
    Assert.assertEquals(trigger.getSecondRecurrences().size(), 0);
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010, 2013);
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.addDayOfMonthRecurrence(3, 10);
    trigger.addHourlyRecurrence(12, 15);
    trigger.addMinuteRecurrence(30, 45);
    trigger.addSecondRecurrence(1, 2);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0,1,2 0,30,45 0,12,15 3,10 3,5 ? 2010,2013");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010, 2013);
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.setDayOfMonthRecurrence(3, 10);
    trigger.setHourlyRecurrence(12, 15);
    trigger.setMinuteRecurrence(30, 45);
    trigger.setSecondRecurrence(1, 2);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "1,2 30,45 12,15 3,10 3,5 ? 2010,2013");
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010, 2013);
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.addDayOfMonthRecurrence(3, 10);
    trigger.addHourlyRecurrence(12, 15);
    trigger.addMinuteRecurrence(30, 45);
    trigger.addSecondRecurrence(1, 2);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0,1,2 0,30,45 0,12,15 3,10 3,5 ? 2010,2013");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010, 2013);
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.setDayOfMonthRecurrence(3, 10);
    trigger.setHourlyRecurrence(12, 15);
    trigger.setMinuteRecurrence(30, 45);
    trigger.setSecondRecurrence(1, 2);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "1,2 30,45 12,15 3,10 3,5 ? 2010,2013");
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010, 2013);
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.addDayOfWeekRecurrence(ComplexJobTrigger.SATURDAY, ComplexJobTrigger.SUNDAY);
    trigger.addHourlyRecurrence(12, 15);
    trigger.addMinuteRecurrence(30, 45);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0,30,45 0,12,15 ? 3,5 1,7 2010,2013");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010, 2013);
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.setDayOfWeekRecurrence(ComplexJobTrigger.SATURDAY, ComplexJobTrigger.SUNDAY);
    trigger.setHourlyRecurrence(12, 15);
    trigger.setMinuteRecurrence(30, 45);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 30,45 12,15 ? 3,5 1,7 2010,2013");
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010, 2013);
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.addDayOfWeekRecurrence(ComplexJobTrigger.SATURDAY, ComplexJobTrigger.SUNDAY);
    trigger.addHourlyRecurrence(12, 15);
    trigger.addMinuteRecurrence(30, 45);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0,30,45 0,12,15 ? 3,5 1,7 2010,2013");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010, 2013);
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.setDayOfWeekRecurrence(ComplexJobTrigger.SATURDAY, ComplexJobTrigger.SUNDAY);
    trigger.setHourlyRecurrence(12, 15);
    trigger.setMinuteRecurrence(30, 45);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 30,45 12,15 ? 3,5 1,7 2010,2013");
    trigger = QuartzScheduler.createComplexTrigger("0 30,45 12,15 3,10 3,5 ? 2010,2013");
    Assert.assertEquals(trigger.getYearlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getYearlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getYearlyRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getYearlyRecurrences().get(0)).getValues().get(0), new Integer(2010));
    Assert.assertEquals(((RecurrenceList) trigger.getYearlyRecurrences().get(0)).getValues().get(1), new Integer(2013));
    Assert.assertEquals(trigger.getMonthlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getMonthlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getMonthlyRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getMonthlyRecurrences().get(0)).getValues().get(0), new Integer(ComplexJobTrigger.MARCH));
    Assert.assertEquals(((RecurrenceList) trigger.getMonthlyRecurrences().get(0)).getValues().get(1), new Integer(ComplexJobTrigger.MAY));
    Assert.assertEquals(trigger.getDayOfMonthRecurrences().size(), 1);
    Assert.assertTrue(trigger.getDayOfMonthRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getDayOfMonthRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getDayOfMonthRecurrences().get(0)).getValues().get(0), new Integer(3));
    Assert.assertEquals(((RecurrenceList) trigger.getDayOfMonthRecurrences().get(0)).getValues().get(1), new Integer(10));
    Assert.assertEquals(trigger.getDayOfWeekRecurrences().size(), 0);
    Assert.assertEquals(trigger.getHourlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getHourlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getHourlyRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getHourlyRecurrences().get(0)).getValues().get(0), new Integer(12));
    Assert.assertEquals(((RecurrenceList) trigger.getHourlyRecurrences().get(0)).getValues().get(1), new Integer(15));
    Assert.assertEquals(trigger.getMinuteRecurrences().size(), 1);
    Assert.assertTrue(trigger.getMinuteRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getMinuteRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getMinuteRecurrences().get(0)).getValues().get(0), new Integer(30));
    Assert.assertEquals(((RecurrenceList) trigger.getMinuteRecurrences().get(0)).getValues().get(1), new Integer(45));
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(new SequentialRecurrence(2010, 2013));
    trigger.addMonthlyRecurrence(new SequentialRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY));
    trigger.addDayOfMonthRecurrence(new SequentialRecurrence(15, 20));
    trigger.addHourlyRecurrence(new SequentialRecurrence(12, 15));
    trigger.addMinuteRecurrence(new SequentialRecurrence(30, 45));
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0,30-45 0,12-15 15-20 3-5 ? 2010-2013");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(new SequentialRecurrence(2010, 2013));
    trigger.setMonthlyRecurrence(new SequentialRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY));
    trigger.setDayOfMonthRecurrence(new SequentialRecurrence(15, 20));
    trigger.setHourlyRecurrence(new SequentialRecurrence(12, 15));
    trigger.setMinuteRecurrence(new SequentialRecurrence(30, 45));
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 30-45 12-15 15-20 3-5 ? 2010-2013");
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010, 2011, 2012, 2013);
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.APRIL, ComplexJobTrigger.MAY);
    trigger.addDayOfMonthRecurrence(15, 16, 17, 18, 19, 20);
    trigger.addHourlyRecurrence(12, 13, 14, 15);
    trigger.addMinuteRecurrence(30, 31, 32, 33, 34, 35, 36);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0,30-36 0,12-15 15-20 3-5 ? 2010-2013");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010, 2011, 2012, 2013);
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.APRIL, ComplexJobTrigger.MAY);
    trigger.setDayOfMonthRecurrence(15, 16, 17, 18, 19, 20);
    trigger.setHourlyRecurrence(12, 13, 14, 15);
    trigger.setMinuteRecurrence(30, 31, 32, 33, 34, 35, 36);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 30-36 12-15 15-20 3-5 ? 2010-2013");
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010, 2011, 2012, 2013);
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.APRIL, ComplexJobTrigger.MAY);
    trigger.addDayOfWeekRecurrence(ComplexJobTrigger.SUNDAY, ComplexJobTrigger.MONDAY, ComplexJobTrigger.TUESDAY, ComplexJobTrigger.WEDNESDAY, ComplexJobTrigger.THURSDAY, ComplexJobTrigger.FRIDAY, ComplexJobTrigger.SATURDAY);
    trigger.addHourlyRecurrence(12, 13, 14, 15);
    trigger.addMinuteRecurrence(30, 31, 32, 33, 34, 35, 36);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0,30-36 0,12-15 ? 3-5 1-7 2010-2013");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010, 2011, 2012, 2013);
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.APRIL, ComplexJobTrigger.MAY);
    trigger.setDayOfWeekRecurrence(ComplexJobTrigger.SUNDAY, ComplexJobTrigger.MONDAY, ComplexJobTrigger.TUESDAY, ComplexJobTrigger.WEDNESDAY, ComplexJobTrigger.THURSDAY, ComplexJobTrigger.FRIDAY, ComplexJobTrigger.SATURDAY);
    trigger.setHourlyRecurrence(12, 13, 14, 15);
    trigger.setMinuteRecurrence(30, 31, 32, 33, 34, 35, 36);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 30-36 12-15 ? 3-5 1-7 2010-2013");
    trigger = QuartzScheduler.createComplexTrigger("0 30-45 12-15 ? 3-5 1-7 2010-2013");
    Assert.assertEquals(trigger.getYearlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getYearlyRecurrences().get(0) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getYearlyRecurrences().get(0)).getFirstValue(), new Integer(2010));
    Assert.assertEquals(((SequentialRecurrence) trigger.getYearlyRecurrences().get(0)).getLastValue(), new Integer(2013));
    Assert.assertEquals(trigger.getMonthlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getMonthlyRecurrences().get(0) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getMonthlyRecurrences().get(0)).getFirstValue(), new Integer(ComplexJobTrigger.MARCH));
    Assert.assertEquals(((SequentialRecurrence) trigger.getMonthlyRecurrences().get(0)).getLastValue(), new Integer(ComplexJobTrigger.MAY));
    Assert.assertEquals(trigger.getDayOfMonthRecurrences().size(), 0);
    Assert.assertEquals(trigger.getDayOfWeekRecurrences().size(), 1);
    Assert.assertTrue(trigger.getDayOfWeekRecurrences().get(0) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getDayOfWeekRecurrences().get(0)).getFirstValue(), new Integer(ComplexJobTrigger.SUNDAY));
    Assert.assertEquals(((SequentialRecurrence) trigger.getDayOfWeekRecurrences().get(0)).getLastValue(), new Integer(ComplexJobTrigger.SATURDAY));
    Assert.assertEquals(trigger.getHourlyRecurrences().size(), 1);
    Assert.assertTrue(trigger.getHourlyRecurrences().get(0) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getHourlyRecurrences().get(0)).getFirstValue(), new Integer(12));
    Assert.assertEquals(((SequentialRecurrence) trigger.getHourlyRecurrences().get(0)).getLastValue(), new Integer(15));
    Assert.assertEquals(trigger.getMinuteRecurrences().size(), 1);
    Assert.assertTrue(trigger.getMinuteRecurrences().get(0) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getMinuteRecurrences().get(0)).getFirstValue(), new Integer(30));
    Assert.assertEquals(((SequentialRecurrence) trigger.getMinuteRecurrences().get(0)).getLastValue(), new Integer(45));
    trigger = new ComplexJobTrigger();
    trigger.addDayOfWeekRecurrence(new QualifiedDayOfWeek(DayOfWeekQualifier.LAST, DayOfWeek.FRI));
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0 0 ? * 6L *");
    trigger = new ComplexJobTrigger();
    trigger.addDayOfWeekRecurrence(new QualifiedDayOfWeek(DayOfWeekQualifier.LAST, DayOfWeek.FRI));
    trigger.addDayOfWeekRecurrence(new QualifiedDayOfWeek(DayOfWeekQualifier.THIRD, DayOfWeek.SUN));
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0 0 ? * 6L,1#3 *");
    trigger = QuartzScheduler.createComplexTrigger("* 0 0 ? * 6L,1#3 *");
    Assert.assertEquals(trigger.getDayOfWeekRecurrences().size(), 2);
    Assert.assertTrue(trigger.getDayOfWeekRecurrences().get(0) instanceof QualifiedDayOfWeek);
    Assert.assertEquals(((QualifiedDayOfWeek) trigger.getDayOfWeekRecurrences().get(0)).getQualifier(), DayOfWeekQualifier.LAST);
    Assert.assertEquals(((QualifiedDayOfWeek) trigger.getDayOfWeekRecurrences().get(0)).getDayOfWeek(), DayOfWeek.FRI);
    Assert.assertTrue(trigger.getDayOfWeekRecurrences().get(1) instanceof QualifiedDayOfWeek);
    Assert.assertEquals(((QualifiedDayOfWeek) trigger.getDayOfWeekRecurrences().get(1)).getQualifier(), DayOfWeekQualifier.THIRD);
    Assert.assertEquals(((QualifiedDayOfWeek) trigger.getDayOfWeekRecurrences().get(1)).getDayOfWeek(), DayOfWeek.SUN);
    trigger = new ComplexJobTrigger();
    trigger.addYearlyRecurrence(2010, 2013);
    trigger.addYearlyRecurrence(new SequentialRecurrence(2015, 2020));
    trigger.addYearlyRecurrence(new IncrementalRecurrence(2025, 5));
    trigger.addMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.addMonthlyRecurrence(new SequentialRecurrence(ComplexJobTrigger.JULY, ComplexJobTrigger.SEPTEMBER));
    trigger.addMonthlyRecurrence(new IncrementalRecurrence(ComplexJobTrigger.JANUARY, 3));
    trigger.addDayOfMonthRecurrence(3, 10);
    trigger.addDayOfMonthRecurrence(new SequentialRecurrence(15, 20));
    trigger.addDayOfMonthRecurrence(new IncrementalRecurrence(21, 3));
    trigger.addHourlyRecurrence(12, 15);
    trigger.addHourlyRecurrence(new SequentialRecurrence(25, 30));
    trigger.addHourlyRecurrence(new IncrementalRecurrence(10, 5));
    trigger.addMinuteRecurrence(30, 45);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 0,30,45 0,12,15,25-30,10/5 3,10,15-20,21/3 3,5,7-9,1/3 ? 2010,2013,2015-2020,2025/5");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(2010, 2013);
    trigger.addYearlyRecurrence(new SequentialRecurrence(2015, 2020));
    trigger.addYearlyRecurrence(new IncrementalRecurrence(2025, 5));
    trigger.setMonthlyRecurrence(ComplexJobTrigger.MARCH, ComplexJobTrigger.MAY);
    trigger.addMonthlyRecurrence(new SequentialRecurrence(ComplexJobTrigger.JULY, ComplexJobTrigger.SEPTEMBER));
    trigger.addMonthlyRecurrence(new IncrementalRecurrence(ComplexJobTrigger.JANUARY, 3));
    trigger.setDayOfWeekRecurrence(ComplexJobTrigger.THURSDAY, ComplexJobTrigger.FRIDAY);
    trigger.addDayOfWeekRecurrence(new SequentialRecurrence(ComplexJobTrigger.SUNDAY, ComplexJobTrigger.MONDAY));
    trigger.setHourlyRecurrence(12, 15);
    trigger.addHourlyRecurrence(new SequentialRecurrence(25, 30));
    trigger.addHourlyRecurrence(new IncrementalRecurrence(10, 5));
    trigger.setMinuteRecurrence(30, 45);
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "0 30,45 12,15,25-30,10/5 ? 3,5,7-9,1/3 5,6,1-2 2010,2013,2015-2020,2025/5");
    trigger = new ComplexJobTrigger();
    trigger.setYearlyRecurrence(new SequentialRecurrence(2015, 2020));
    trigger.setMonthlyRecurrence(new SequentialRecurrence(ComplexJobTrigger.JULY, ComplexJobTrigger.SEPTEMBER));
    trigger.setDayOfWeekRecurrence(new SequentialRecurrence(ComplexJobTrigger.SUNDAY, ComplexJobTrigger.MONDAY));
    trigger.setHourlyRecurrence(new SequentialRecurrence(25, 30));
    trigger.setMinuteRecurrence(new SequentialRecurrence(5, 10));
    trigger.setSecondRecurrence(new SequentialRecurrence(30, 35));
    System.out.println(trigger.toString());
    Assert.assertEquals(trigger.toString(), "30-35 5-10 25-30 ? 7-9 1-2 2015-2020");
    trigger = QuartzScheduler.createComplexTrigger("0 30,45 12,15,25-30,10/5 3,10,15-20,21/3 3,5,7-9," + "1/3 ? 2010,2013,2015-2020,2025/5");
    Assert.assertEquals(trigger.getYearlyRecurrences().size(), 3);
    Assert.assertTrue(trigger.getYearlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getYearlyRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getYearlyRecurrences().get(0)).getValues().get(0), new Integer(2010));
    Assert.assertEquals(((RecurrenceList) trigger.getYearlyRecurrences().get(0)).getValues().get(1), new Integer(2013));
    Assert.assertTrue(trigger.getYearlyRecurrences().get(1) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getYearlyRecurrences().get(1)).getFirstValue(), new Integer(2015));
    Assert.assertEquals(((SequentialRecurrence) trigger.getYearlyRecurrences().get(1)).getLastValue(), new Integer(2020));
    Assert.assertTrue(trigger.getYearlyRecurrences().get(2) instanceof IncrementalRecurrence);
    Assert.assertEquals(((IncrementalRecurrence) trigger.getYearlyRecurrences().get(2)).getStartingValue(), new Integer(2025));
    Assert.assertEquals(((IncrementalRecurrence) trigger.getYearlyRecurrences().get(2)).getIncrement(), new Integer(5));
    Assert.assertEquals(trigger.getMonthlyRecurrences().size(), 3);
    Assert.assertTrue(trigger.getMonthlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getMonthlyRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getMonthlyRecurrences().get(0)).getValues().get(0), new Integer(ComplexJobTrigger.MARCH));
    Assert.assertEquals(((RecurrenceList) trigger.getMonthlyRecurrences().get(0)).getValues().get(1), new Integer(ComplexJobTrigger.MAY));
    Assert.assertTrue(trigger.getMonthlyRecurrences().get(1) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getMonthlyRecurrences().get(1)).getFirstValue(), new Integer(ComplexJobTrigger.JULY));
    Assert.assertEquals(((SequentialRecurrence) trigger.getMonthlyRecurrences().get(1)).getLastValue(), new Integer(ComplexJobTrigger.SEPTEMBER));
    Assert.assertTrue(trigger.getMonthlyRecurrences().get(2) instanceof IncrementalRecurrence);
    Assert.assertEquals(((IncrementalRecurrence) trigger.getMonthlyRecurrences().get(2)).getStartingValue(), new Integer(ComplexJobTrigger.JANUARY));
    Assert.assertEquals(((IncrementalRecurrence) trigger.getMonthlyRecurrences().get(2)).getIncrement(), new Integer(3));
    Assert.assertEquals(trigger.getDayOfMonthRecurrences().size(), 3);
    Assert.assertTrue(trigger.getDayOfMonthRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getDayOfMonthRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getDayOfMonthRecurrences().get(0)).getValues().get(0), new Integer(3));
    Assert.assertEquals(((RecurrenceList) trigger.getDayOfMonthRecurrences().get(0)).getValues().get(1), new Integer(10));
    Assert.assertTrue(trigger.getDayOfMonthRecurrences().get(1) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getDayOfMonthRecurrences().get(1)).getFirstValue(), new Integer(15));
    Assert.assertEquals(((SequentialRecurrence) trigger.getDayOfMonthRecurrences().get(1)).getLastValue(), new Integer(20));
    Assert.assertTrue(trigger.getDayOfMonthRecurrences().get(2) instanceof IncrementalRecurrence);
    Assert.assertEquals(((IncrementalRecurrence) trigger.getDayOfMonthRecurrences().get(2)).getStartingValue(), new Integer(21));
    Assert.assertEquals(((IncrementalRecurrence) trigger.getDayOfMonthRecurrences().get(2)).getIncrement(), new Integer(3));
    Assert.assertEquals(trigger.getDayOfMonthRecurrences().size(), 3);
    Assert.assertEquals(trigger.getDayOfWeekRecurrences().size(), 0);
    Assert.assertEquals(trigger.getHourlyRecurrences().size(), 3);
    Assert.assertTrue(trigger.getHourlyRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getHourlyRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getHourlyRecurrences().get(0)).getValues().get(0), new Integer(12));
    Assert.assertEquals(((RecurrenceList) trigger.getHourlyRecurrences().get(0)).getValues().get(1), new Integer(15));
    Assert.assertTrue(trigger.getHourlyRecurrences().get(1) instanceof SequentialRecurrence);
    Assert.assertEquals(((SequentialRecurrence) trigger.getHourlyRecurrences().get(1)).getFirstValue(), new Integer(25));
    Assert.assertEquals(((SequentialRecurrence) trigger.getHourlyRecurrences().get(1)).getLastValue(), new Integer(30));
    Assert.assertTrue(trigger.getHourlyRecurrences().get(2) instanceof IncrementalRecurrence);
    Assert.assertEquals(((IncrementalRecurrence) trigger.getHourlyRecurrences().get(2)).getStartingValue(), new Integer(10));
    Assert.assertEquals(((IncrementalRecurrence) trigger.getHourlyRecurrences().get(2)).getIncrement(), new Integer(5));
    Assert.assertEquals(trigger.getMinuteRecurrences().size(), 1);
    Assert.assertTrue(trigger.getMinuteRecurrences().get(0) instanceof RecurrenceList);
    Assert.assertEquals(((RecurrenceList) trigger.getMinuteRecurrences().get(0)).getValues().size(), 2);
    Assert.assertEquals(((RecurrenceList) trigger.getMinuteRecurrences().get(0)).getValues().get(0), new Integer(30));
    Assert.assertEquals(((RecurrenceList) trigger.getMinuteRecurrences().get(0)).getValues().get(1), new Integer(45));
}
Also used : QualifiedDayOfWeek(org.pentaho.platform.scheduler2.recur.QualifiedDayOfWeek) ComplexJobTrigger(org.pentaho.platform.api.scheduler2.ComplexJobTrigger) IncrementalRecurrence(org.pentaho.platform.scheduler2.recur.IncrementalRecurrence) RecurrenceList(org.pentaho.platform.scheduler2.recur.RecurrenceList) SequentialRecurrence(org.pentaho.platform.scheduler2.recur.SequentialRecurrence) Test(org.junit.Test)

Example 27 with ComplexJobTrigger

use of org.pentaho.platform.api.scheduler2.ComplexJobTrigger in project pentaho-platform by pentaho.

the class QuartzScheduler method createJob.

/**
 * {@inheritDoc}
 */
protected Job createJob(String jobName, Map<String, Serializable> jobParams, IJobTrigger trigger, IBackgroundExecutionStreamProvider outputStreamProvider) throws SchedulerException {
    String curUser = getCurrentUser();
    // determine if the job params tell us who owns the job
    Serializable jobOwner = jobParams.get(RESERVEDMAPKEY_ACTIONUSER);
    if (jobOwner != null && jobOwner.toString().length() > 0) {
        curUser = jobOwner.toString();
    }
    QuartzJobKey jobId = new QuartzJobKey(jobName, curUser);
    Trigger quartzTrigger = createQuartzTrigger(trigger, jobId);
    if (trigger.getEndTime() != null) {
        quartzTrigger.setEndTime(trigger.getEndTime());
    }
    Calendar triggerCalendar = quartzTrigger instanceof CronTrigger ? createQuartzCalendar((ComplexJobTrigger) trigger) : null;
    if (outputStreamProvider != null) {
        jobParams.put(RESERVEDMAPKEY_STREAMPROVIDER, outputStreamProvider);
    }
    if (trigger.getUiPassParam() != null) {
        jobParams.put(RESERVEDMAPKEY_UIPASSPARAM, trigger.getUiPassParam());
    }
    if (!jobParams.containsKey(RESERVEDMAPKEY_LINEAGE_ID)) {
        String uuid = UUID.randomUUID().toString();
        jobParams.put(RESERVEDMAPKEY_LINEAGE_ID, uuid);
    }
    JobDetail jobDetail = createJobDetails(jobId, jobParams);
    try {
        Scheduler scheduler = getQuartzScheduler();
        if (triggerCalendar != null) {
            scheduler.addCalendar(jobId.toString(), triggerCalendar, false, false);
            quartzTrigger.setCalendarName(jobId.toString());
        }
        logger.debug(MessageFormat.format("Scheduling job {0} with trigger {1} and job parameters [ {2} ]", jobId.toString(), trigger, // $NON-NLS-1$
        prettyPrintMap(jobParams)));
        scheduler.scheduleJob(jobDetail, quartzTrigger);
    } catch (org.quartz.SchedulerException e) {
        throw new SchedulerException(Messages.getInstance().getString("QuartzScheduler.ERROR_0001_FAILED_TO_SCHEDULE_JOB", jobName), // $NON-NLS-1$
        e);
    }
    Job job = new Job();
    job.setJobParams(jobParams);
    job.setJobTrigger((JobTrigger) trigger);
    job.setNextRun(quartzTrigger.getNextFireTime());
    job.setLastRun(quartzTrigger.getPreviousFireTime());
    job.setJobId(jobId.toString());
    job.setJobName(jobName);
    job.setUserName(curUser);
    job.setState(JobState.NORMAL);
    return job;
}
Also used : Serializable(java.io.Serializable) CronTrigger(org.quartz.CronTrigger) SchedulerException(org.pentaho.platform.api.scheduler2.SchedulerException) Scheduler(org.quartz.Scheduler) IScheduler(org.pentaho.platform.api.scheduler2.IScheduler) Calendar(org.quartz.Calendar) JobDetail(org.quartz.JobDetail) CronTrigger(org.quartz.CronTrigger) SimpleJobTrigger(org.pentaho.platform.api.scheduler2.SimpleJobTrigger) JobTrigger(org.pentaho.platform.api.scheduler2.JobTrigger) ComplexJobTrigger(org.pentaho.platform.api.scheduler2.ComplexJobTrigger) Trigger(org.quartz.Trigger) SimpleTrigger(org.quartz.SimpleTrigger) IJobTrigger(org.pentaho.platform.api.scheduler2.IJobTrigger) ComplexJobTrigger(org.pentaho.platform.api.scheduler2.ComplexJobTrigger) Job(org.pentaho.platform.api.scheduler2.Job)

Example 28 with ComplexJobTrigger

use of org.pentaho.platform.api.scheduler2.ComplexJobTrigger in project pentaho-platform by pentaho.

the class SchedulerResourceUtil method convertScheduleRequestToJobTrigger.

public static IJobTrigger convertScheduleRequestToJobTrigger(JobScheduleRequest scheduleRequest, IScheduler scheduler) throws SchedulerException, UnifiedRepositoryException {
    // Used to determine if created by a RunInBackgroundCommand
    boolean runInBackground = scheduleRequest.getSimpleJobTrigger() == null && scheduleRequest.getComplexJobTrigger() == null && scheduleRequest.getCronJobTrigger() == null;
    // add 10 seconds to the RIB to ensure execution (see PPP-3264)
    IJobTrigger jobTrigger = runInBackground ? new SimpleJobTrigger(new Date(System.currentTimeMillis() + 10000), null, 0, 0) : scheduleRequest.getSimpleJobTrigger();
    if (scheduleRequest.getSimpleJobTrigger() != null) {
        SimpleJobTrigger simpleJobTrigger = scheduleRequest.getSimpleJobTrigger();
        if (simpleJobTrigger.getStartTime() == null) {
            simpleJobTrigger.setStartTime(new Date());
        }
        jobTrigger = simpleJobTrigger;
    } else if (scheduleRequest.getComplexJobTrigger() != null) {
        ComplexJobTriggerProxy proxyTrigger = scheduleRequest.getComplexJobTrigger();
        ComplexJobTrigger complexJobTrigger = new ComplexJobTrigger();
        complexJobTrigger.setStartTime(proxyTrigger.getStartTime());
        complexJobTrigger.setEndTime(proxyTrigger.getEndTime());
        complexJobTrigger.setDuration(scheduleRequest.getDuration());
        if (proxyTrigger.getDaysOfWeek().length > 0) {
            if (proxyTrigger.getWeeksOfMonth().length > 0) {
                for (int dayOfWeek : proxyTrigger.getDaysOfWeek()) {
                    for (int weekOfMonth : proxyTrigger.getWeeksOfMonth()) {
                        QualifiedDayOfWeek qualifiedDayOfWeek = new QualifiedDayOfWeek();
                        qualifiedDayOfWeek.setDayOfWeek(DayOfWeek.values()[dayOfWeek]);
                        if (weekOfMonth == JobScheduleRequest.LAST_WEEK_OF_MONTH) {
                            qualifiedDayOfWeek.setQualifier(DayOfWeekQualifier.LAST);
                        } else {
                            qualifiedDayOfWeek.setQualifier(DayOfWeekQualifier.values()[weekOfMonth]);
                        }
                        complexJobTrigger.addDayOfWeekRecurrence(qualifiedDayOfWeek);
                    }
                }
            } else {
                for (int dayOfWeek : proxyTrigger.getDaysOfWeek()) {
                    complexJobTrigger.addDayOfWeekRecurrence(dayOfWeek + 1);
                }
            }
        } else if (proxyTrigger.getDaysOfMonth().length > 0) {
            for (int dayOfMonth : proxyTrigger.getDaysOfMonth()) {
                complexJobTrigger.addDayOfMonthRecurrence(dayOfMonth);
            }
        }
        for (int month : proxyTrigger.getMonthsOfYear()) {
            complexJobTrigger.addMonthlyRecurrence(month + 1);
        }
        for (int year : proxyTrigger.getYears()) {
            complexJobTrigger.addYearlyRecurrence(year);
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(complexJobTrigger.getStartTime());
        complexJobTrigger.setHourlyRecurrence(calendar.get(Calendar.HOUR_OF_DAY));
        complexJobTrigger.setMinuteRecurrence(calendar.get(Calendar.MINUTE));
        complexJobTrigger.setUiPassParam(scheduleRequest.getComplexJobTrigger().getUiPassParam());
        jobTrigger = complexJobTrigger;
    } else if (scheduleRequest.getCronJobTrigger() != null) {
        if (scheduler instanceof QuartzScheduler) {
            String cronString = scheduleRequest.getCronJobTrigger().getCronString();
            // $NON-NLS-1$
            String delims = "[ ]+";
            String[] tokens = cronString.split(delims);
            if (tokens.length < 7) {
                cronString += " *";
            }
            ComplexJobTrigger complexJobTrigger = QuartzScheduler.createComplexTrigger(cronString);
            complexJobTrigger.setStartTime(scheduleRequest.getCronJobTrigger().getStartTime());
            complexJobTrigger.setEndTime(scheduleRequest.getCronJobTrigger().getEndTime());
            complexJobTrigger.setDuration(scheduleRequest.getCronJobTrigger().getDuration());
            complexJobTrigger.setUiPassParam(scheduleRequest.getCronJobTrigger().getUiPassParam());
            jobTrigger = complexJobTrigger;
        } else {
            throw new IllegalArgumentException();
        }
    }
    return jobTrigger;
}
Also used : Calendar(java.util.Calendar) GregorianCalendar(java.util.GregorianCalendar) QuartzScheduler(org.pentaho.platform.scheduler2.quartz.QuartzScheduler) Date(java.util.Date) SimpleJobTrigger(org.pentaho.platform.api.scheduler2.SimpleJobTrigger) QualifiedDayOfWeek(org.pentaho.platform.scheduler2.recur.QualifiedDayOfWeek) ComplexJobTrigger(org.pentaho.platform.api.scheduler2.ComplexJobTrigger) IJobTrigger(org.pentaho.platform.api.scheduler2.IJobTrigger)

Aggregations

ComplexJobTrigger (org.pentaho.platform.api.scheduler2.ComplexJobTrigger)28 Test (org.junit.Test)21 IJobTrigger (org.pentaho.platform.api.scheduler2.IJobTrigger)12 Job (org.pentaho.platform.api.scheduler2.Job)12 Calendar (java.util.Calendar)8 SimpleJobTrigger (org.pentaho.platform.api.scheduler2.SimpleJobTrigger)8 ITimeRecurrence (org.pentaho.platform.api.scheduler2.recur.ITimeRecurrence)7 RecurrenceList (org.pentaho.platform.scheduler2.recur.RecurrenceList)6 IncrementalRecurrence (org.pentaho.platform.scheduler2.recur.IncrementalRecurrence)5 Serializable (java.io.Serializable)4 Date (java.util.Date)4 GregorianCalendar (java.util.GregorianCalendar)4 QualifiedDayOfWeek (org.pentaho.platform.scheduler2.recur.QualifiedDayOfWeek)4 HashMap (java.util.HashMap)3 JobTrigger (org.pentaho.platform.api.scheduler2.JobTrigger)3 Calendar (org.quartz.Calendar)3 CronTrigger (org.quartz.CronTrigger)3 SimpleTrigger (org.quartz.SimpleTrigger)3 CronJobTrigger (org.pentaho.platform.api.scheduler2.CronJobTrigger)2 IBackgroundExecutionStreamProvider (org.pentaho.platform.api.scheduler2.IBackgroundExecutionStreamProvider)2