Search in sources :

Example 1 with Function

use of com.cronutils.Function in project cron-utils by jmrozanec.

the class DescriptionStrategyFactory method daysOfWeekInstance.

/**
 * Creates description strategy for days of week.
 *
 * @param bundle     - locale
 * @param expression - CronFieldExpression
 * @return - DescriptionStrategy instance, never null
 */
public static DescriptionStrategy daysOfWeekInstance(final ResourceBundle bundle, final FieldExpression expression, final FieldDefinition definition) {
    final Function<Integer, String> nominal = integer -> {
        final int diff = definition instanceof DayOfWeekFieldDefinition ? DayOfWeek.MONDAY.getValue() - ((DayOfWeekFieldDefinition) definition).getMondayDoWValue().getMondayDoWValue() : 0;
        return DayOfWeek.of(integer + diff < 1 ? 7 : integer + diff).getDisplayName(TextStyle.FULL, bundle.getLocale());
    };
    final NominalDescriptionStrategy dow = new NominalDescriptionStrategy(bundle, nominal, expression);
    dow.addDescription(fieldExpression -> {
        if (fieldExpression instanceof On) {
            final On on = (On) fieldExpression;
            switch(on.getSpecialChar().getValue()) {
                case HASH:
                    return String.format("%s %s %s ", nominal.apply(on.getTime().getValue()), on.getNth(), bundle.getString("of_every_month"));
                case L:
                    return String.format("%s %s %s ", bundle.getString("last"), nominal.apply(on.getTime().getValue()), bundle.getString("of_every_month"));
                default:
                    return "";
            }
        }
        return "";
    });
    return dow;
}
Also used : Every(com.cronutils.model.field.expression.Every) FieldDefinition(com.cronutils.model.field.definition.FieldDefinition) DayOfWeekFieldDefinition(com.cronutils.model.field.definition.DayOfWeekFieldDefinition) ResourceBundle(java.util.ResourceBundle) Month(java.time.Month) TextStyle(java.time.format.TextStyle) DayOfWeek(java.time.DayOfWeek) FieldExpression(com.cronutils.model.field.expression.FieldExpression) On(com.cronutils.model.field.expression.On) Function(com.cronutils.Function) MessageFormat(java.text.MessageFormat) DayOfWeekFieldDefinition(com.cronutils.model.field.definition.DayOfWeekFieldDefinition) On(com.cronutils.model.field.expression.On)

Aggregations

Function (com.cronutils.Function)1 DayOfWeekFieldDefinition (com.cronutils.model.field.definition.DayOfWeekFieldDefinition)1 FieldDefinition (com.cronutils.model.field.definition.FieldDefinition)1 Every (com.cronutils.model.field.expression.Every)1 FieldExpression (com.cronutils.model.field.expression.FieldExpression)1 On (com.cronutils.model.field.expression.On)1 MessageFormat (java.text.MessageFormat)1 DayOfWeek (java.time.DayOfWeek)1 Month (java.time.Month)1 TextStyle (java.time.format.TextStyle)1 ResourceBundle (java.util.ResourceBundle)1