01: /*
02: * This file is part of PFIXCORE.
03: *
04: * PFIXCORE is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU Lesser General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * PFIXCORE is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public License
15: * along with PFIXCORE; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: */
19:
20: package de.schlund.pfixcore.webservice.jsonqx;
21:
22: import java.io.IOException;
23: import java.io.Writer;
24: import java.util.Calendar;
25: import java.util.Date;
26:
27: import de.schlund.pfixcore.webservice.jsonws.CustomJSONObject;
28: import de.schlund.pfixcore.webservice.jsonws.SerializationContext;
29: import de.schlund.pfixcore.webservice.jsonws.SerializationException;
30: import de.schlund.pfixcore.webservice.jsonws.Serializer;
31:
32: public class CalendarSerializer extends Serializer {
33:
34: @Override
35: public Object serialize(SerializationContext ctx, Object obj)
36: throws SerializationException {
37: if (obj instanceof Calendar) {
38: String json = createUTCFuncDate((Calendar) obj);
39: return new CustomJSONObject(json);
40: } else if (obj instanceof Date) {
41: String json = createUTCFuncDate((Date) obj);
42: return new CustomJSONObject(json);
43: } else
44: throw new SerializationException(
45: "Can't serialize object of instance "
46: + obj.getClass().getName());
47: }
48:
49: @Override
50: public void serialize(SerializationContext ctx, Object obj,
51: Writer writer) throws SerializationException, IOException {
52: if (obj instanceof Calendar) {
53: writer.write(createUTCFuncDate((Calendar) obj));
54: } else if (obj instanceof Date) {
55: writer.write(createUTCFuncDate((Date) obj));
56: } else
57: throw new SerializationException(
58: "Can't serialize object of instance "
59: + obj.getClass().getName());
60: }
61:
62: private String createUTCFuncDate(Calendar cal) {
63: StringBuilder sb = new StringBuilder();
64: sb.append("new Date(Date.UTC(");
65: sb.append(cal.get(Calendar.YEAR));
66: sb.append(",");
67: sb.append(cal.get(Calendar.MONTH));
68: sb.append(",");
69: sb.append(cal.get(Calendar.DATE));
70: sb.append(",");
71: sb.append(cal.get(Calendar.HOUR_OF_DAY));
72: sb.append(",");
73: sb.append(cal.get(Calendar.MINUTE));
74: sb.append(",");
75: sb.append(cal.get(Calendar.SECOND));
76: sb.append(",");
77: sb.append(cal.get(Calendar.MILLISECOND));
78: sb.append("))");
79: return sb.toString();
80: }
81:
82: private String createUTCFuncDate(Date date) {
83: Calendar cal = Calendar.getInstance();
84: cal.setTime(date);
85: return createUTCFuncDate(cal);
86: }
87:
88: }
|