Skip to content

Commit bfdbbd0

Browse files
committed
Improve code quality
Use Java 8 Syntax and stuff
1 parent 44e7956 commit bfdbbd0

2 files changed

Lines changed: 48 additions & 67 deletions

File tree

vaadin-simple-grid-filter/src/main/java/software/xdev/vaadin/FilterComponent.java

Lines changed: 44 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
import software.xdev.vaadin.builder.CustomizableFilterBuilder;
7272
import software.xdev.vaadin.comparators.ContainsComparator;
7373
import software.xdev.vaadin.comparators.FilterComparator;
74-
import software.xdev.vaadin.comparators.utl.I18NDateTimeFormatterConverter;
74+
import software.xdev.vaadin.comparators.utl.StringFormatsToDateTimeFormatter;
7575
import software.xdev.vaadin.daterange_picker.business.DateRange;
7676
import software.xdev.vaadin.daterange_picker.business.DateRangeModel;
7777
import software.xdev.vaadin.daterange_picker.business.SimpleDateRanges;
@@ -568,40 +568,44 @@ private void formatLocalDateChipBadgeText(final ChipBadge<FilterCondition<T, ?>>
568568
{
569569
chipBadge.setItemLabelGenerator((ItemLabelGenerator<FilterCondition<T, ?>>)tFilterCondition ->
570570
{
571-
LocalDate startDate;
572-
LocalDate endDate;
571+
record StartEndDateContainer(
572+
LocalDate start,
573+
LocalDate end
574+
)
575+
{
576+
}
577+
578+
StartEndDateContainer startEndContainer;
573579

574580
try
575581
{
576582
final String[] dates = tFilterCondition.getInputValue().split(IS_BETWEEN_COMPARATOR_SEPARATOR);
577583

578-
startDate = LocalDate.parse(dates[0]);
579-
endDate = LocalDate.parse(dates[1]);
584+
startEndContainer = new StartEndDateContainer(
585+
LocalDate.parse(dates[0]),
586+
LocalDate.parse(dates[1])
587+
);
580588
}
581589
catch(final DateTimeParseException e)
582590
{
583-
startDate = LocalDate.MIN;
584-
endDate = LocalDate.MAX;
591+
startEndContainer = new StartEndDateContainer(LocalDate.MIN, LocalDate.MAX);
585592
}
586593

587-
String dateString;
588-
589-
if(this.dateRangePickerQuery.getDatePickerI18n().isPresent()
590-
&& this.dateRangePickerQuery.getDatePickerI18n().get().getDateFormats() != null)
591-
{
592-
final DatePicker.DatePickerI18n datePickerI18n =
593-
this.dateRangePickerQuery.getDatePickerI18n().get();
594-
595-
dateString = startDate.format(I18NDateTimeFormatterConverter.getDatePattern(datePickerI18n));
596-
dateString += " and "
597-
+ endDate.format(I18NDateTimeFormatterConverter.getDatePattern(datePickerI18n));
598-
}
599-
else
600-
{
601-
dateString = startDate + " and " + endDate;
602-
}
594+
final StartEndDateContainer fStartEndContainer = startEndContainer;
603595

604-
return createChipComponentString(tFilterCondition, dateString);
596+
return createChipComponentString(
597+
tFilterCondition,
598+
this.dateRangePickerQuery.getDatePickerI18n()
599+
.map(DatePicker.DatePickerI18n::getDateFormats)
600+
.map(dateFormats -> {
601+
final DateTimeFormatter formatter =
602+
StringFormatsToDateTimeFormatter.fromPattern(dateFormats);
603+
604+
return fStartEndContainer.start().format(formatter)
605+
+ " and "
606+
+ fStartEndContainer.end().format(formatter);
607+
})
608+
.orElseGet(() -> fStartEndContainer.start() + " and " + fStartEndContainer.end()));
605609
});
606610
}
607611
else if(this.dateSearchQuery.isVisible() && filterField.getItem().getType().equals(LocalDate.class))
@@ -619,20 +623,15 @@ else if(this.dateSearchQuery.isVisible() && filterField.getItem().getType().equa
619623
localDate = LocalDate.MIN;
620624
}
621625

622-
final String dateString;
623-
624-
if(this.dateSearchQuery.getI18n() != null
625-
&& this.dateSearchQuery.getI18n().getDateFormats() != null)
626-
{
627-
dateString =
628-
localDate.format(I18NDateTimeFormatterConverter.getDatePattern(this.dateSearchQuery.getI18n()));
629-
}
630-
else
631-
{
632-
dateString = localDate.toString();
633-
}
626+
final LocalDate fLocalDate = localDate;
634627

635-
return createChipComponentString(tFilterCondition, dateString);
628+
return createChipComponentString(
629+
tFilterCondition,
630+
Optional.ofNullable(this.dateSearchQuery.getI18n())
631+
.map(DatePicker.DatePickerI18n::getDateFormats)
632+
.map(StringFormatsToDateTimeFormatter::fromPattern)
633+
.map(fLocalDate::format)
634+
.orElseGet(fLocalDate::toString));
636635
});
637636
}
638637
else if(this.dateTimeSearchQuery.isVisible() && filterField.getItem().getType().equals(LocalDateTime.class))
@@ -653,27 +652,14 @@ else if(this.dateTimeSearchQuery.isVisible() && filterField.getItem().getType().
653652
localDate = LocalDate.MIN;
654653
}
655654

656-
String dateString;
657-
658-
if(this.dateTimeSearchQuery.getDatePickerI18n() != null
659-
&& this.dateTimeSearchQuery.getDatePickerI18n().getDateFormats() != null)
660-
{
661-
dateString =
662-
localDate.format(I18NDateTimeFormatterConverter.getDatePattern(
663-
this.dateTimeSearchQuery.getDatePickerI18n()).withLocale(
664-
this.dateSearchQuery.getLocale()));
665-
}
666-
else
667-
{
668-
dateString =
669-
localDate
670-
.format(DateTimeFormatter.ISO_LOCAL_DATE
671-
.withLocale(this.dateSearchQuery.getLocale()));
672-
}
673-
674-
dateString += " " + localDateTime.toLocalTime();
675-
676-
return createChipComponentString(tFilterCondition, dateString);
655+
return createChipComponentString(
656+
tFilterCondition,
657+
localDate.format(Optional.ofNullable(this.dateSearchQuery.getI18n())
658+
.map(DatePicker.DatePickerI18n::getDateFormats)
659+
.map(StringFormatsToDateTimeFormatter::fromPattern)
660+
.orElse(DateTimeFormatter.ISO_LOCAL_DATE)
661+
.withLocale(this.dateSearchQuery.getLocale()))
662+
+ " " + localDateTime.toLocalTime());
677663
}
678664
);
679665
}

vaadin-simple-grid-filter/src/main/java/software/xdev/vaadin/comparators/utl/I18NDateTimeFormatterConverter.java renamed to vaadin-simple-grid-filter/src/main/java/software/xdev/vaadin/comparators/utl/StringFormatsToDateTimeFormatter.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,27 @@
1919
import java.util.Collections;
2020
import java.util.List;
2121
import java.util.Map;
22-
import java.util.Objects;
2322
import java.util.WeakHashMap;
2423
import java.util.stream.Collectors;
2524

26-
import com.vaadin.flow.component.datepicker.DatePicker;
27-
2825

2926
/**
3027
* Used to build the date pattern from I18n.
3128
*/
32-
public final class I18NDateTimeFormatterConverter
29+
public final class StringFormatsToDateTimeFormatter
3330
{
3431
private static final Map<List<String>, DateTimeFormatter> CACHED_FORMATTERS =
3532
Collections.synchronizedMap(new WeakHashMap<>());
3633

37-
private I18NDateTimeFormatterConverter()
34+
private StringFormatsToDateTimeFormatter()
3835
{
3936
}
4037

4138
@SuppressWarnings("PMD.AvoidRecreatingDateTimeFormatter")
42-
public static DateTimeFormatter getDatePattern(final DatePicker.DatePickerI18n datePickerI18n)
39+
public static DateTimeFormatter fromPattern(final List<String> dateFormats)
4340
{
44-
Objects.requireNonNull(datePickerI18n);
45-
4641
return CACHED_FORMATTERS.computeIfAbsent(
47-
datePickerI18n.getDateFormats(),
42+
dateFormats,
4843
formats -> DateTimeFormatter.ofPattern(formats
4944
.stream()
5045
.map(pattern -> "[" + pattern + "]")

0 commit comments

Comments
 (0)