extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/converter/DateToStringConverter.java

Code
Comments
Other
Rev Date Author Line
4577 19 Sep 17 nicklas 1 package net.sf.basedb.relax.converter;
4577 19 Sep 17 nicklas 2
4577 19 Sep 17 nicklas 3 import java.text.DateFormat;
4577 19 Sep 17 nicklas 4 import java.text.ParseException;
4577 19 Sep 17 nicklas 5 import java.util.Date;
4577 19 Sep 17 nicklas 6
7036 10 Feb 23 nicklas 7 import org.apache.commons.lang3.time.FastDateFormat;
7036 10 Feb 23 nicklas 8
4577 19 Sep 17 nicklas 9 import net.sf.basedb.util.formatter.Formatter;
4577 19 Sep 17 nicklas 10
4577 19 Sep 17 nicklas 11 /**
4577 19 Sep 17 nicklas 12   Value converter implementation for converting dates to string representation.
7036 10 Feb 23 nicklas 13   The instance is configured with a {@link FastDateFormat} object which does the 
4577 19 Sep 17 nicklas 14   actual conversion. See {@link DateFormat#format(Date)}.
4577 19 Sep 17 nicklas 15   @author nicklas
4577 19 Sep 17 nicklas 16 */
4577 19 Sep 17 nicklas 17 public class DateToStringConverter 
4577 19 Sep 17 nicklas 18   implements ValueConverter<Date, String>, Formatter<Date>
4577 19 Sep 17 nicklas 19 {
4577 19 Sep 17 nicklas 20
7036 10 Feb 23 nicklas 21   private final FastDateFormat dateFormat;
4577 19 Sep 17 nicklas 22   
4577 19 Sep 17 nicklas 23   /**
4577 19 Sep 17 nicklas 24     Create a new date-to-string converter.
4577 19 Sep 17 nicklas 25     @param dateFormat The formatter object used for the actual conversion
4577 19 Sep 17 nicklas 26   */
7036 10 Feb 23 nicklas 27   public DateToStringConverter(FastDateFormat dateFormat)
4577 19 Sep 17 nicklas 28   {
4577 19 Sep 17 nicklas 29     if (dateFormat == null) throw new NullPointerException("dateFormat");
4577 19 Sep 17 nicklas 30     this.dateFormat = dateFormat;
4577 19 Sep 17 nicklas 31   }
4577 19 Sep 17 nicklas 32   
4577 19 Sep 17 nicklas 33   /*
4577 19 Sep 17 nicklas 34     From the ValueConverter interface
4577 19 Sep 17 nicklas 35     ---------------------------------
4577 19 Sep 17 nicklas 36   */
4577 19 Sep 17 nicklas 37   @Override
4577 19 Sep 17 nicklas 38   public String convert(Date value) 
4577 19 Sep 17 nicklas 39   {
4577 19 Sep 17 nicklas 40     return value == null ? null : dateFormat.format(value);
4577 19 Sep 17 nicklas 41   }
4577 19 Sep 17 nicklas 42   // ----------------------------------
4577 19 Sep 17 nicklas 43
4577 19 Sep 17 nicklas 44   @Override
4577 19 Sep 17 nicklas 45   public String format(Date value) 
4577 19 Sep 17 nicklas 46   {
4577 19 Sep 17 nicklas 47     return convert(value);
4577 19 Sep 17 nicklas 48   }
4577 19 Sep 17 nicklas 49
4577 19 Sep 17 nicklas 50   @Override
4577 19 Sep 17 nicklas 51   public Date parseString(String value) 
4577 19 Sep 17 nicklas 52   {
4577 19 Sep 17 nicklas 53     try
4577 19 Sep 17 nicklas 54     {
4577 19 Sep 17 nicklas 55       return dateFormat.parse(value);
4577 19 Sep 17 nicklas 56     }
4577 19 Sep 17 nicklas 57     catch (ParseException ex)
4577 19 Sep 17 nicklas 58     {
4577 19 Sep 17 nicklas 59       throw new RuntimeException("Could not parse date: " + value, ex);
4577 19 Sep 17 nicklas 60     }
4577 19 Sep 17 nicklas 61   }
4577 19 Sep 17 nicklas 62 }