use of com.cronutils.model.field.expression.On 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;
}
use of com.cronutils.model.field.expression.On in project cron-utils by jmrozanec.
the class OnDayOfWeekValueGenerator method generateNextValue.
@Override
public int generateNextValue(final int reference) throws NoSuchValueException {
final On on = ((On) cronField.getExpression());
final int value = generateValue(on, year, month, reference);
if (value <= reference) {
throw new NoSuchValueException();
}
return value;
}
use of com.cronutils.model.field.expression.On in project cron-utils by jmrozanec.
the class OnDayOfWeekValueGenerator method generatePreviousValue.
@Override
public int generatePreviousValue(final int reference) throws NoSuchValueException {
final On on = ((On) cronField.getExpression());
final int value = generateValue(on, year, month, reference);
if (value >= reference) {
throw new NoSuchValueException();
}
return value;
}
use of com.cronutils.model.field.expression.On in project cron-utils by jmrozanec.
the class AndFieldValueGeneratorTest method setUp.
@Before
public void setUp() {
constraints = FieldConstraintsBuilder.instance().createConstraintsInstance();
fieldValueGenerator = new AndFieldValueGenerator(new CronField(CronFieldName.MONTH, new And().and(new On(new IntegerFieldValue(VALUE0))).and(new On(new IntegerFieldValue(VALUE1))).and(new On(new IntegerFieldValue(VALUE2))), constraints));
}
use of com.cronutils.model.field.expression.On in project cron-utils by jmrozanec.
the class CronDescriptorTest method testLastDayOfMonth.
@Test
public void testLastDayOfMonth() {
final int hour = 10;
final int minute = 15;
final List<CronField> results = new ArrayList<>();
results.add(new CronField(CronFieldName.HOUR, new On(new IntegerFieldValue(hour)), nullFieldConstraints));
results.add(new CronField(CronFieldName.MINUTE, new On(new IntegerFieldValue(minute)), nullFieldConstraints));
results.add(new CronField(CronFieldName.DAY_OF_MONTH, new On(new SpecialCharFieldValue(SpecialChar.L)), nullFieldConstraints));
assertEquals(String.format("at %s:%s last day of month", hour, minute), descriptor.describe(new SingleCron(mockDefinition, results)));
}
Aggregations