package com.vaadin.tests.components.datefield;
import java.time.LocalDate;
import com.vaadin.data.Result;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.AbstractDateField;
import com.vaadin.v7.data.util.converter.Converter;
public class DateFieldUnparsableDate extends TestBase {
public class MyDateField extends AbstractDateField {
LocalDate oldDate = null;
public MyDateField(String caption) {
super(caption);
addValueChangeListener(event -> oldDate = getValue());
}
@Override
protected Result<LocalDate> handleUnparsableDateString(
String dateString) throws Converter.ConversionException {
return Result.ok(oldDate);
}
}
public class MyDateField2 extends AbstractDateField {
public MyDateField2(String caption) {
super(caption);
}
@Override
protected Result<LocalDate> handleUnparsableDateString(
String dateString) throws Converter.ConversionException {
return Result.ok(null);
}
}
public class MyDateField3 extends AbstractDateField {
public MyDateField3(String caption) {
super(caption);
}
@Override
protected Result<LocalDate> handleUnparsableDateString(
String dateString) throws Converter.ConversionException {
return Result.error("You should not enter invalid dates!");
}
}
public class MyDateField4 extends AbstractDateField {
public MyDateField4(String caption) {
super(caption);
}
@Override
protected Result<LocalDate> handleUnparsableDateString(
String dateString) throws Converter.ConversionException {
if (dateString != null && dateString.equals("today")) {
return Result.ok(LocalDate.now());
}
return Result.error("You should not enter invalid dates!");
}
}
@Override
protected void setup() {
MyDateField df = new MyDateField(
"Returns the old value for invalid dates");
addComponent(df);
MyDateField2 df2 = new MyDateField2("Returns empty for invalid dates");
addComponent(df2);
MyDateField3 df3 = new MyDateField3(
"Throws an exception for invalid dates");
addComponent(df3);
MyDateField4 df4 = new MyDateField4("Can convert 'today'");
addComponent(df4);
}
@Override
protected String getDescription() {
return "DateFields in various configurations (according to caption). All handle unparsable dates differently";
}
@Override
protected Integer getTicketNumber() {
return 4236;
}
}