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