package vnet.sms.common.shell.springshell.internal.converters; import java.text.DateFormat; import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.Locale; import vnet.sms.common.shell.springshell.Completion; import vnet.sms.common.shell.springshell.Converter; import vnet.sms.common.shell.springshell.MethodTarget; /** * {@link Converter} for {@link Date}. * * @author Stefan Schmidt * @since 1.0 */ public class DateConverter implements Converter<Date> { // Fields private final DateFormat dateFormat; public DateConverter() { this.dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.getDefault()); } public DateConverter(final DateFormat dateFormat) { this.dateFormat = dateFormat; } @Override public Date convertFromText(final String value, final Class<?> requiredType, final String optionContext) { try { return this.dateFormat.parse(value); } catch (final ParseException e) { throw new IllegalArgumentException("Could not parse date: " + e.getMessage()); } } @Override public boolean getAllPossibleValues(final List<Completion> completions, final Class<?> requiredType, final String existingData, final String optionContext, final MethodTarget target) { return false; } @Override public boolean supports(final Class<?> requiredType, final String optionContext) { return Date.class.isAssignableFrom(requiredType); } }