1 package net.sf.mbus4j.dataframes.datablocks;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 import java.text.DateFormat;
31 import java.text.ParseException;
32 import java.text.SimpleDateFormat;
33 import java.util.Date;
34 import net.sf.json.JSONObject;
35
36 import net.sf.mbus4j.dataframes.datablocks.dif.DataFieldCode;
37 import net.sf.mbus4j.dataframes.datablocks.vif.Vif;
38 import net.sf.mbus4j.dataframes.datablocks.vif.Vife;
39
40
41
42
43
44
45 public class DateDataBlock extends DataBlock {
46
47 private static final ThreadLocal<SimpleDateFormat> ISO_8601 = new ThreadLocal<SimpleDateFormat>(){
48 @Override
49 protected SimpleDateFormat initialValue()
50 {
51 return new SimpleDateFormat("yyyy-MM-dd");
52 }
53 };
54
55 private Date value;
56
57 public DateDataBlock() {
58 super();
59 }
60
61 @Deprecated
62 public DateDataBlock(Vif vif, Vife... vifes) {
63 super(DataFieldCode._16_BIT_INTEGER, vif, vifes);
64 }
65
66
67
68
69 public Date getValue() {
70 return value;
71 }
72
73 @Override
74 public String getValueAsString() {
75 return ISO_8601.get().format(value);
76 }
77
78
79
80
81 public void setValue(Date value) {
82 this.value = value;
83 }
84
85 @Override
86 protected void accumulateDatatoJSON(JSONObject json) {
87 JSONObject jsonValue = new JSONObject();
88 jsonValue.accumulate("date", ISO_8601.get().format(value));
89 json.accumulate("data", jsonValue);
90 }
91
92 @Override
93 public void fromJSON(JSONObject json) {
94 super.fromJSON(json);
95 try {
96 JSONObject jsonValue = json.getJSONObject("data");
97 value = ISO_8601.get().parse(jsonValue.getString("date"));
98 } catch (ParseException ex) {
99 throw new RuntimeException(ex);
100 }
101 }
102
103 @Override
104 public void setValue(String text) {
105 try {
106 value = DateFormat.getDateInstance().parse(text);
107 } catch (ParseException ex) {
108 throw new RuntimeException(ex);
109 }
110 }
111 }