Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authordesperateCoder <echotodevnull@gmail.com>2019-12-06 21:28:48 +0300
committerdesperateCoder <echotodevnull@gmail.com>2019-12-06 21:29:01 +0300
commiteeb5776ad1cf99d83e7eadbb2c13d7c24ac05075 (patch)
treee549917155021f2dccc78dbcd3355d99221dec7f /app/src
parent4fdaf38431da7e5968c6ac65bc1e1ad4ba5d8848 (diff)
fixes #210
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java26
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java41
2 files changed, 55 insertions, 12 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java
index a3f8591df..aa949bff1 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java
@@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
+import java.util.Date;
import java.util.List;
import it.niedermann.nextcloud.deck.model.Label;
@@ -39,18 +40,19 @@ public class GsonConfig {
return new GsonBuilder()
.setDateFormat(DATE_PATTERN)
.setLenient()
- .registerTypeAdapter(boardList, new NextcloudArrayDeserializer<>("boards", FullBoard.class))
- .registerTypeAdapter(board, new NextcloudDeserializer<>("board", FullBoard.class))
- .registerTypeAdapter(cardList, new NextcloudArrayDeserializer<>("cards", FullCard.class))
- .registerTypeAdapter(card, new NextcloudDeserializer<>("card", FullCard.class))
- .registerTypeAdapter(labelList, new NextcloudArrayDeserializer<>("labels", Label.class))
- .registerTypeAdapter(label, new NextcloudDeserializer<>("label", Label.class))
- .registerTypeAdapter(stackList, new NextcloudArrayDeserializer<>("stacks", FullStack.class))
- .registerTypeAdapter(stack, new NextcloudDeserializer<>("stack", FullStack.class))
- .registerTypeAdapter(capabilitiesList, new NextcloudArrayDeserializer<>("capabilities", Capabilities.class))
- .registerTypeAdapter(capabilities, new NextcloudDeserializer<>("capability", Capabilities.class))
- .registerTypeAdapter(activityList, new NextcloudDeserializer<>("activities", Activity.class))
- .registerTypeAdapter(activity, new NextcloudDeserializer<>("activity", Activity.class))
+ .registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
+ .registerTypeAdapter(boardList, new NextcloudArrayDeserializer<>("boards", FullBoard.class))
+ .registerTypeAdapter(board, new NextcloudDeserializer<>("board", FullBoard.class))
+ .registerTypeAdapter(cardList, new NextcloudArrayDeserializer<>("cards", FullCard.class))
+ .registerTypeAdapter(card, new NextcloudDeserializer<>("card", FullCard.class))
+ .registerTypeAdapter(labelList, new NextcloudArrayDeserializer<>("labels", Label.class))
+ .registerTypeAdapter(label, new NextcloudDeserializer<>("label", Label.class))
+ .registerTypeAdapter(stackList, new NextcloudArrayDeserializer<>("stacks", FullStack.class))
+ .registerTypeAdapter(stack, new NextcloudDeserializer<>("stack", FullStack.class))
+ .registerTypeAdapter(capabilitiesList, new NextcloudArrayDeserializer<>("capabilities", Capabilities.class))
+ .registerTypeAdapter(capabilities, new NextcloudDeserializer<>("capability", Capabilities.class))
+ .registerTypeAdapter(activityList, new NextcloudDeserializer<>("activities", Activity.class))
+ .registerTypeAdapter(activity, new NextcloudDeserializer<>("activity", Activity.class))
.create();
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java
new file mode 100644
index 000000000..c4273c7a8
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonUTCDateAdapter.java
@@ -0,0 +1,41 @@
+package it.niedermann.nextcloud.deck.api;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+
+import java.lang.reflect.Type;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class GsonUTCDateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {
+
+ private final DateFormat dateFormat;
+
+ public GsonUTCDateAdapter() {
+ //This is the format I need
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
+ //This is the key line which converts the date to UTC which cannot be accessed with the default serializer
+ dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+ }
+
+ @Override public synchronized JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) {
+ return new JsonPrimitive(dateFormat.format(date));
+ }
+
+ @Override public synchronized Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
+ try {
+ return dateFormat.parse(jsonElement.getAsString());
+ } catch (ParseException e) {
+ throw new JsonParseException(e);
+ }
+ }
+} \ No newline at end of file