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