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 |
Value converter implementation for converting dates to string representation. |
7036 |
10 Feb 23 |
nicklas |
The instance is configured with a {@link FastDateFormat} object which does the |
4577 |
19 Sep 17 |
nicklas |
actual conversion. See {@link DateFormat#format(Date)}. |
4577 |
19 Sep 17 |
nicklas |
@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 |
Create a new date-to-string converter. |
4577 |
19 Sep 17 |
nicklas |
@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 |
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 |
} |