|
31 | 31 | import java.util.List; |
32 | 32 | import java.util.Locale; |
33 | 33 | import java.util.Map; |
| 34 | +import java.util.Objects; |
34 | 35 | import java.util.Set; |
35 | 36 | import java.util.stream.Stream; |
36 | 37 | import com.flowingcode.vaadin.addons.dayofweekselector.DayOfWeekSelector; |
|
52 | 53 | import com.vaadin.flow.component.textfield.IntegerField; |
53 | 54 | import com.vaadin.flow.component.textfield.TextField; |
54 | 55 | import com.vaadin.flow.component.timepicker.TimePicker; |
55 | | -import com.vaadin.flow.data.provider.DataProvider; |
56 | 56 | import com.vaadin.flow.function.SerializableConsumer; |
57 | 57 | import com.vaadin.flow.internal.JsonSerializer; |
58 | | - |
59 | 58 | import elemental.json.JsonObject; |
60 | 59 | import org.springframework.scheduling.support.CronExpression; |
61 | 60 | import it.burning.cron.CronExpressionDescriptor; |
62 | 61 | import it.burning.cron.CronExpressionParser.CronExpressionParseException; |
63 | 62 | import it.burning.cron.CronExpressionParser.Options; |
64 | 63 |
|
65 | | - |
66 | 64 | /** |
67 | 65 | * UI component for building cron expressions. |
68 | 66 | * |
@@ -445,13 +443,14 @@ private void showNextDates() { |
445 | 443 | } |
446 | 444 | } |
447 | 445 |
|
448 | | - private LocalDateTime calculateNextDate(LocalDateTime date) { |
449 | | - return CronExpression.parse(inputExpressionTf.getValue()).next(date); |
450 | | - } |
451 | | - |
452 | 446 | private Stream<LocalDateTime> generateNextDate(LocalDateTime start, int offset, int limit) { |
453 | | - Stream<LocalDateTime> nextDates = Stream.iterate(calculateNextDate(start), this::calculateNextDate); |
454 | | - return nextDates.skip(offset).limit(limit); |
| 447 | + CronExpression parsedExpression = CronExpression.parse(inputExpressionTf.getValue()); |
| 448 | + LocalDateTime firstNext = parsedExpression.next(start); |
| 449 | + if (firstNext == null) { |
| 450 | + return Stream.empty(); |
| 451 | + } |
| 452 | + return Stream.iterate(firstNext, Objects::nonNull, parsedExpression::next).skip(offset) |
| 453 | + .limit(limit); |
455 | 454 | } |
456 | 455 |
|
457 | 456 | private String formatDate(LocalDateTime date) { |
|
0 commit comments