1 package host.exp.exponent.notifications.helpers
2 
3 import com.cronutils.builder.CronBuilder
4 import com.cronutils.model.Cron
5 import com.cronutils.model.field.expression.FieldExpressionFactory
6 import java.util.*
7 
8 object ExpoCronParser {
createCronInstancenull9   @JvmStatic fun createCronInstance(options: HashMap<String?, Any?>): Cron {
10     val cronBuilder = CronBuilder.cron(ExpoCronDefinitionBuilder.cronDefinition)
11 
12     val year = options["year"]
13     if (year is Number) {
14       cronBuilder.withYear(FieldExpressionFactory.on(year.toInt()))
15     } else {
16       cronBuilder.withYear(FieldExpressionFactory.always())
17     }
18 
19     val hour = options["hour"]
20     if (hour is Number) {
21       cronBuilder.withHour(FieldExpressionFactory.on(hour.toInt()))
22     } else {
23       cronBuilder.withHour(FieldExpressionFactory.always())
24     }
25 
26     val minute = options["minute"]
27     if (minute is Number) {
28       cronBuilder.withMinute(FieldExpressionFactory.on(minute.toInt()))
29     } else {
30       cronBuilder.withMinute(FieldExpressionFactory.always())
31     }
32 
33     val second = options["second"]
34     if (second is Number) {
35       cronBuilder.withSecond(FieldExpressionFactory.on(second.toInt()))
36     } else {
37       cronBuilder.withSecond(FieldExpressionFactory.always())
38     }
39 
40     val month = options["month"]
41     if (month is Number) {
42       cronBuilder.withMonth(FieldExpressionFactory.on(month.toInt()))
43     } else {
44       cronBuilder.withMonth(FieldExpressionFactory.always())
45     }
46 
47     val day = options["day"]
48     if (day is Number) {
49       cronBuilder.withDoM(FieldExpressionFactory.on(day.toInt()))
50     } else if (options.containsKey("weekDay")) {
51       cronBuilder.withDoM(FieldExpressionFactory.questionMark())
52     } else {
53       cronBuilder.withDoM(FieldExpressionFactory.always())
54     }
55 
56     val weekDay = options["weekDay"]
57     if (weekDay is Number) {
58       cronBuilder.withDoW(FieldExpressionFactory.on(weekDay.toInt()))
59     } else {
60       cronBuilder.withDoW(FieldExpressionFactory.questionMark())
61     }
62 
63     return cronBuilder.instance()
64   }
65 }
66