7171import software .xdev .vaadin .builder .CustomizableFilterBuilder ;
7272import software .xdev .vaadin .comparators .ContainsComparator ;
7373import software .xdev .vaadin .comparators .FilterComparator ;
74- import software .xdev .vaadin .comparators .utl .I18NDateTimeFormatterConverter ;
74+ import software .xdev .vaadin .comparators .utl .StringFormatsToDateTimeFormatter ;
7575import software .xdev .vaadin .daterange_picker .business .DateRange ;
7676import software .xdev .vaadin .daterange_picker .business .DateRangeModel ;
7777import 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 }
0 commit comments