-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathModelClassFactory.php
59 lines (56 loc) · 1.93 KB
/
ModelClassFactory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
namespace Quartz;
use Quartz\Calendar\CronCalendar;
use Quartz\Calendar\DailyCalendar;
use Quartz\Calendar\HolidayCalendar;
use Quartz\Calendar\MonthlyCalendar;
use Quartz\Calendar\WeeklyCalendar;
use Quartz\Core\Key;
use Quartz\Core\SchedulerException;
use Quartz\JobDetail\JobDetail;
use Quartz\Triggers\CalendarIntervalTrigger;
use Quartz\Triggers\CronTrigger;
use Quartz\Triggers\DailyTimeIntervalTrigger;
use Quartz\Triggers\SimpleTrigger;
class ModelClassFactory
{
/**
* @throws SchedulerException
*/
public static function getClass(array $values): string
{
if (false == isset($values['instance'])) {
throw new SchedulerException('Values has no "instance" field');
}
switch ($values['instance']) {
// triggers
case SimpleTrigger::INSTANCE:
return SimpleTrigger::class;
case CronTrigger::INSTANCE:
return CronTrigger::class;
case CalendarIntervalTrigger::INSTANCE:
return CalendarIntervalTrigger::class;
case DailyTimeIntervalTrigger::INSTANCE:
return DailyTimeIntervalTrigger::class;
// job
case JobDetail::INSTANCE:
return JobDetail::class;
// calendars
case HolidayCalendar::INSTANCE:
return HolidayCalendar::class;
case WeeklyCalendar::INSTANCE:
return WeeklyCalendar::class;
case MonthlyCalendar::INSTANCE:
return MonthlyCalendar::class;
case CronCalendar::INSTANCE:
return CronCalendar::class;
case DailyCalendar::INSTANCE:
return DailyCalendar::class;
// key
case Key::INSTANCE:
return Key::class;
default:
throw new SchedulerException(sprintf('Unknown values instance: "%s"', $values['instance']));
}
}
}