From b67ee13c64d188eb64cc32003ba38ace1207398c Mon Sep 17 00:00:00 2001 From: Athou Date: Sat, 23 Mar 2013 08:51:12 +0100 Subject: [PATCH] display time if date is today --- .../com/commafeed/frontend/rest/JSONPage.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/commafeed/frontend/rest/JSONPage.java b/src/main/java/com/commafeed/frontend/rest/JSONPage.java index 65358a85..df78fce3 100644 --- a/src/main/java/com/commafeed/frontend/rest/JSONPage.java +++ b/src/main/java/com/commafeed/frontend/rest/JSONPage.java @@ -1,5 +1,11 @@ package com.commafeed.frontend.rest; +import java.lang.reflect.Type; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +import org.apache.commons.lang.time.DateUtils; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.request.handler.TextRequestHandler; import org.apache.wicket.request.mapper.parameter.PageParameters; @@ -8,12 +14,17 @@ import com.commafeed.frontend.CommaFeedSession; import com.commafeed.model.User; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; @SuppressWarnings("serial") public abstract class JSONPage extends WebPage { public JSONPage(PageParameters pageParameters) { - Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); + Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, + new DateSerializer()).create(); getRequestCycle().scheduleRequestHandlerAfterCurrent( new TextRequestHandler("application/json", "UTF-8", gson .toJson(getObject(pageParameters)))); @@ -24,4 +35,18 @@ public abstract class JSONPage extends WebPage { protected User getUser() { return CommaFeedSession.get().getUser(); } + + private static class DateSerializer implements JsonSerializer { + + private static final String DAY_FORMAT = "yyyy-MM-dd"; + private static final String TIME_FORMAT = "HH:mm"; + + public JsonElement serialize(Date src, Type typeOfSrc, + JsonSerializationContext context) { + Date now = Calendar.getInstance().getTime(); + String format = DateUtils.isSameDay(now, src) ? TIME_FORMAT + : DAY_FORMAT; + return new JsonPrimitive(new SimpleDateFormat(format).format(src)); + } + } }