package com.openfeint.internal.resource; import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParser; public abstract class DateResourceProperty extends PrimitiveResourceProperty { public abstract void set(Resource obj, Date val); public abstract Date get(Resource obj); @Override public void copy(Resource lhs, Resource rhs) { set(lhs, get(rhs)); } static DateFormat sDateParser = makeDateParser(); static DateFormat makeDateParser() { DateFormat p = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); p.setTimeZone(TimeZone.getTimeZone("UTC")); return p; } @Override public void parse(Resource obj, JsonParser jp) throws JsonParseException, IOException { final String text = jp.getText(); if (text.equals("null")) { set(obj, null); } else try { set(obj, sDateParser.parse(text)); } catch (ParseException e) { set(obj, null); } } @Override public void generate(Resource obj, JsonGenerator generator, String key) throws JsonGenerationException, IOException { Date o = get(obj); if (null != o) { generator.writeFieldName(key); generator.writeString(sDateParser.format(o)); } } }