From 655b821e274ca4be078389475a8bb33139c55a4f Mon Sep 17 00:00:00 2001
From: Vitaly Takmazov
Date: Wed, 4 Nov 2015 15:24:53 +0300
Subject: refactoring
---
.../java/com/juick/json/MessageSerializer.java | 133 +++++++++++++++++++++
1 file changed, 133 insertions(+)
create mode 100644 src/main/java/com/juick/json/MessageSerializer.java
(limited to 'src/main/java/com/juick/json/MessageSerializer.java')
diff --git a/src/main/java/com/juick/json/MessageSerializer.java b/src/main/java/com/juick/json/MessageSerializer.java
new file mode 100644
index 00000000..0879f13a
--- /dev/null
+++ b/src/main/java/com/juick/json/MessageSerializer.java
@@ -0,0 +1,133 @@
+/*
+ * Juick
+ * Copyright (C) 2008-2011, Ugnich Anton
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+package com.juick.json;
+
+import com.juick.Message;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ *
+ * @author Ugnich Anton
+ */
+public class MessageSerializer extends JSONSerializer {
+
+ UserSerializer userSerializer = new UserSerializer();
+ PlaceSerializer placeSerializer = new PlaceSerializer();
+
+ @Override
+ public Message deserialize(JSONObject json) throws JSONException {
+ com.juick.Message jmsg = new com.juick.Message();
+ jmsg.MID = json.getInt("mid");
+ if (json.has("rid")) {
+ jmsg.RID = json.getInt("rid");
+ }
+ if (json.has("replyto")) {
+ jmsg.ReplyTo = json.getInt("replyto");
+ }
+
+ jmsg.FriendsOnly = json.has("friendsonly");
+ jmsg.ReadOnly = json.has("readonly");
+
+ jmsg.Text = json.getString("body").replace(""", "\"");
+ jmsg.User = userSerializer.deserialize(json.getJSONObject("user"));
+
+ try {
+ DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ df.setTimeZone(TimeZone.getTimeZone("UTC"));
+ jmsg.Timestamp = df.parse(json.getString("timestamp"));
+ } catch (ParseException e) {
+ }
+
+ if (json.has("tags")) {
+ JSONArray tags = json.getJSONArray("tags");
+ for (int n = 0; n < tags.length(); n++) {
+ jmsg.Tags.add(tags.getString(n).replace(""", "\""));
+ }
+ }
+
+ if (json.has("replies")) {
+ jmsg.Replies = json.getInt("replies");
+ }
+
+ if (json.has("photo")) {
+ jmsg.Photo = json.getJSONObject("photo").getString("small");
+ }
+
+ return jmsg;
+ }
+
+ @Override
+ public JSONObject serialize(Message msg) {
+ JSONObject json = new JSONObject();
+
+ try {
+ if (msg.MID > 0) {
+ json.put("mid", msg.MID);
+ }
+ if (msg.RID > 0) {
+ json.put("rid", msg.RID);
+ }
+ if (msg.ReplyTo > 0) {
+ json.put("replyto", msg.ReplyTo);
+ }
+ if (msg.FriendsOnly) {
+ json.put("friendsonly", 1);
+ }
+ if (msg.ReadOnly) {
+ json.put("readonly", 1);
+ }
+ if (msg.Text != null) {
+ json.put("body", msg.Text);
+ }
+ if (msg.Timestamp != null) {
+ json.put("timestamp", msg.Timestamp);
+ } else if (msg.TimestampString != null) {
+ json.put("timestamp", msg.TimestampString);
+ }
+ if (msg.User != null) {
+ json.put("user", userSerializer.serialize(msg.User));
+ }
+ if (msg.Tags != null && msg.Tags.size() > 0) {
+ json.put("tags", new JSONArray(msg.Tags));
+ }
+ if (msg.Replies > 0) {
+ json.put("replies", msg.Replies);
+ }
+ if (msg.Place != null) {
+ json.put("place", placeSerializer.serialize(msg.Place));
+ }
+ if (msg.AttachmentType != null) {
+ String fname = msg.MID + (msg.RID > 0 ? "-" + msg.RID : "") + "." + msg.AttachmentType;
+ JSONObject photo = new JSONObject();
+ photo.put("thumbnail", "http://i.juick.com/ps/" + fname);
+ photo.put("small", "http://i.juick.com/photos-512/" + fname);
+ photo.put("medium", "http://i.juick.com/photos-1024/" + fname);
+ json.put("photo", photo);
+ }
+ } catch (JSONException e) {
+ }
+
+ return json;
+ }
+}
--
cgit v1.2.3
From 331363c89936be9df126d10e16107b99a18877d1 Mon Sep 17 00:00:00 2001
From: Vitaly Takmazov
Date: Sun, 10 Jan 2016 19:58:19 +0300
Subject: refactoring
---
.../java/com/juick/json/MessageSerializer.java | 20 ++++++++++----------
src/main/java/com/juick/json/UserSerializer.java | 22 +++++++++++-----------
2 files changed, 21 insertions(+), 21 deletions(-)
(limited to 'src/main/java/com/juick/json/MessageSerializer.java')
diff --git a/src/main/java/com/juick/json/MessageSerializer.java b/src/main/java/com/juick/json/MessageSerializer.java
index 0879f13a..85986415 100644
--- a/src/main/java/com/juick/json/MessageSerializer.java
+++ b/src/main/java/com/juick/json/MessageSerializer.java
@@ -38,9 +38,9 @@ public class MessageSerializer extends JSONSerializer {
@Override
public Message deserialize(JSONObject json) throws JSONException {
com.juick.Message jmsg = new com.juick.Message();
- jmsg.MID = json.getInt("mid");
+ jmsg.setMID(json.getInt("mid"));
if (json.has("rid")) {
- jmsg.RID = json.getInt("rid");
+ jmsg.setRID(json.getInt("rid"));
}
if (json.has("replyto")) {
jmsg.ReplyTo = json.getInt("replyto");
@@ -50,7 +50,7 @@ public class MessageSerializer extends JSONSerializer {
jmsg.ReadOnly = json.has("readonly");
jmsg.Text = json.getString("body").replace(""", "\"");
- jmsg.User = userSerializer.deserialize(json.getJSONObject("user"));
+ jmsg.setUser(userSerializer.deserialize(json.getJSONObject("user")));
try {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -82,11 +82,11 @@ public class MessageSerializer extends JSONSerializer {
JSONObject json = new JSONObject();
try {
- if (msg.MID > 0) {
- json.put("mid", msg.MID);
+ if (msg.getMID() > 0) {
+ json.put("mid", msg.getMID());
}
- if (msg.RID > 0) {
- json.put("rid", msg.RID);
+ if (msg.getRID() > 0) {
+ json.put("rid", msg.getRID());
}
if (msg.ReplyTo > 0) {
json.put("replyto", msg.ReplyTo);
@@ -105,8 +105,8 @@ public class MessageSerializer extends JSONSerializer {
} else if (msg.TimestampString != null) {
json.put("timestamp", msg.TimestampString);
}
- if (msg.User != null) {
- json.put("user", userSerializer.serialize(msg.User));
+ if (msg.getUser() != null) {
+ json.put("user", userSerializer.serialize(msg.getUser()));
}
if (msg.Tags != null && msg.Tags.size() > 0) {
json.put("tags", new JSONArray(msg.Tags));
@@ -118,7 +118,7 @@ public class MessageSerializer extends JSONSerializer {
json.put("place", placeSerializer.serialize(msg.Place));
}
if (msg.AttachmentType != null) {
- String fname = msg.MID + (msg.RID > 0 ? "-" + msg.RID : "") + "." + msg.AttachmentType;
+ String fname = msg.getMID() + (msg.getRID() > 0 ? "-" + msg.getRID() : "") + "." + msg.AttachmentType;
JSONObject photo = new JSONObject();
photo.put("thumbnail", "http://i.juick.com/ps/" + fname);
photo.put("small", "http://i.juick.com/photos-512/" + fname);
diff --git a/src/main/java/com/juick/json/UserSerializer.java b/src/main/java/com/juick/json/UserSerializer.java
index 07f87616..4485812a 100644
--- a/src/main/java/com/juick/json/UserSerializer.java
+++ b/src/main/java/com/juick/json/UserSerializer.java
@@ -30,10 +30,10 @@ public class UserSerializer extends JSONSerializer {
@Override
public User deserialize(JSONObject json) throws JSONException {
User juser = new User();
- juser.UID = json.getInt("uid");
- juser.UName = json.getString("uname");
+ juser.setUID(json.getInt("uid"));
+ juser.setUName(json.getString("uname"));
if (json.has("fullname")) {
- juser.FullName = json.getString("fullname");
+ juser.setFullName(json.getString("fullname"));
}
return juser;
}
@@ -43,17 +43,17 @@ public class UserSerializer extends JSONSerializer {
JSONObject json = new JSONObject();
try {
- if (user.UID > 0) {
- json.put("uid", user.UID);
+ if (user.getUID() > 0) {
+ json.put("uid", user.getUID());
}
- if (user.UName != null) {
- json.put("uname", user.UName);
+ if (user.getUName() != null) {
+ json.put("uname", user.getUName());
}
- if (user.FullName != null) {
- json.put("fullname", user.FullName);
+ if (user.getFullName() != null) {
+ json.put("fullname", user.getFullName());
}
- if (user.JID != null) {
- json.put("jid", user.JID);
+ if (user.getJID() != null) {
+ json.put("jid", user.getJID());
}
if (user.MessagesCount > 0) {
json.put("MessagesCount", user.MessagesCount);
--
cgit v1.2.3
From ee0e13e7243abecf242236c224551774195524a3 Mon Sep 17 00:00:00 2001
From: Vitaly Takmazov
Date: Sun, 10 Jan 2016 20:10:19 +0300
Subject: refactoring, part 2
---
src/main/java/com/juick/json/MessageSerializer.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'src/main/java/com/juick/json/MessageSerializer.java')
diff --git a/src/main/java/com/juick/json/MessageSerializer.java b/src/main/java/com/juick/json/MessageSerializer.java
index 85986415..dccf1b3a 100644
--- a/src/main/java/com/juick/json/MessageSerializer.java
+++ b/src/main/java/com/juick/json/MessageSerializer.java
@@ -49,7 +49,7 @@ public class MessageSerializer extends JSONSerializer {
jmsg.FriendsOnly = json.has("friendsonly");
jmsg.ReadOnly = json.has("readonly");
- jmsg.Text = json.getString("body").replace(""", "\"");
+ jmsg.setText(json.getString("body").replace(""", "\""));
jmsg.setUser(userSerializer.deserialize(json.getJSONObject("user")));
try {
@@ -97,8 +97,8 @@ public class MessageSerializer extends JSONSerializer {
if (msg.ReadOnly) {
json.put("readonly", 1);
}
- if (msg.Text != null) {
- json.put("body", msg.Text);
+ if (msg.getText() != null) {
+ json.put("body", msg.getText());
}
if (msg.Timestamp != null) {
json.put("timestamp", msg.Timestamp);
--
cgit v1.2.3
From 9a50ad8dea5e9ebc5eb1c5efb19aa7a784283e14 Mon Sep 17 00:00:00 2001
From: Vitaly Takmazov
Date: Sat, 16 Jan 2016 18:25:11 +0300
Subject: date and tests
---
build.gradle | 1 +
.../java/com/juick/json/MessageSerializer.java | 16 ++++++++----
src/test/java/com/juick/JsonTests.java | 30 ++++++++++++++++++++++
3 files changed, 42 insertions(+), 5 deletions(-)
create mode 100644 src/test/java/com/juick/JsonTests.java
(limited to 'src/main/java/com/juick/json/MessageSerializer.java')
diff --git a/build.gradle b/build.gradle
index 2e438790..456e86c8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,4 +6,5 @@ repositories {
dependencies {
compile 'org.json:json:20151123'
+ testCompile 'junit:junit:4.12'
}
diff --git a/src/main/java/com/juick/json/MessageSerializer.java b/src/main/java/com/juick/json/MessageSerializer.java
index dccf1b3a..da87d4be 100644
--- a/src/main/java/com/juick/json/MessageSerializer.java
+++ b/src/main/java/com/juick/json/MessageSerializer.java
@@ -22,6 +22,9 @@ import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -31,10 +34,14 @@ import org.json.JSONObject;
* @author Ugnich Anton
*/
public class MessageSerializer extends JSONSerializer {
+
+ private final static Logger LOGGER = Logger.getLogger(MessageSerializer.class.getName());
UserSerializer userSerializer = new UserSerializer();
PlaceSerializer placeSerializer = new PlaceSerializer();
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
@Override
public Message deserialize(JSONObject json) throws JSONException {
com.juick.Message jmsg = new com.juick.Message();
@@ -55,7 +62,7 @@ public class MessageSerializer extends JSONSerializer {
try {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
- jmsg.Timestamp = df.parse(json.getString("timestamp"));
+ jmsg.setDate(df.parse(json.getString("timestamp")));
} catch (ParseException e) {
}
@@ -100,10 +107,8 @@ public class MessageSerializer extends JSONSerializer {
if (msg.getText() != null) {
json.put("body", msg.getText());
}
- if (msg.Timestamp != null) {
- json.put("timestamp", msg.Timestamp);
- } else if (msg.TimestampString != null) {
- json.put("timestamp", msg.TimestampString);
+ if (msg.getDate() != null) {
+ json.put("timestamp", df.format(msg.getDate()));
}
if (msg.getUser() != null) {
json.put("user", userSerializer.serialize(msg.getUser()));
@@ -126,6 +131,7 @@ public class MessageSerializer extends JSONSerializer {
json.put("photo", photo);
}
} catch (JSONException e) {
+ LOGGER.log(Level.SEVERE, "JSON Exception", e);
}
return json;
diff --git a/src/test/java/com/juick/JsonTests.java b/src/test/java/com/juick/JsonTests.java
new file mode 100644
index 00000000..5d78a2d6
--- /dev/null
+++ b/src/test/java/com/juick/JsonTests.java
@@ -0,0 +1,30 @@
+package com.juick;
+
+import static org.junit.Assert.assertEquals;
+
+import com.juick.json.MessageSerializer;
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.juick.Message;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+public class JsonTests {
+ @Test
+ public void DateTest() {
+ Message msg = new Message();
+ SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ try {
+ msg.setDate(df.parse("2015-01-01 00:00:00"));
+ MessageSerializer serializer = new MessageSerializer();
+ String json = serializer.serialize(msg).toString();
+ assertEquals("{\"timestamp\":\"2015-01-01 00:00:00\"}", json);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ }
+}
\ No newline at end of file
--
cgit v1.2.3
From 143513cec90ab176e5c174fb4ed98c249652bda6 Mon Sep 17 00:00:00 2001
From: Vitaly Takmazov
Date: Sat, 16 Jan 2016 19:13:30 +0300
Subject: refactoring
---
src/main/java/com/juick/json/JSONSerializer.java | 3 ++-
src/main/java/com/juick/json/MessageSerializer.java | 16 ++++++++--------
2 files changed, 10 insertions(+), 9 deletions(-)
(limited to 'src/main/java/com/juick/json/MessageSerializer.java')
diff --git a/src/main/java/com/juick/json/JSONSerializer.java b/src/main/java/com/juick/json/JSONSerializer.java
index 8ac72cb0..142cacf0 100644
--- a/src/main/java/com/juick/json/JSONSerializer.java
+++ b/src/main/java/com/juick/json/JSONSerializer.java
@@ -5,6 +5,7 @@
*/
package com.juick.json;
+import java.text.ParseException;
import java.util.Iterator;
import java.util.List;
import org.json.JSONObject;
@@ -21,7 +22,7 @@ public abstract class JSONSerializer {
* @param json
* @return
*/
- public abstract T deserialize(JSONObject json);
+ public abstract T deserialize(JSONObject json) throws ParseException;
/**
*
diff --git a/src/main/java/com/juick/json/MessageSerializer.java b/src/main/java/com/juick/json/MessageSerializer.java
index da87d4be..4818722f 100644
--- a/src/main/java/com/juick/json/MessageSerializer.java
+++ b/src/main/java/com/juick/json/MessageSerializer.java
@@ -40,10 +40,15 @@ public class MessageSerializer extends JSONSerializer {
UserSerializer userSerializer = new UserSerializer();
PlaceSerializer placeSerializer = new PlaceSerializer();
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ final SimpleDateFormat df;
+
+ public MessageSerializer() {
+ df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ df.setTimeZone(TimeZone.getTimeZone("UTC"));
+ }
@Override
- public Message deserialize(JSONObject json) throws JSONException {
+ public Message deserialize(JSONObject json) throws JSONException, ParseException {
com.juick.Message jmsg = new com.juick.Message();
jmsg.setMID(json.getInt("mid"));
if (json.has("rid")) {
@@ -59,12 +64,7 @@ public class MessageSerializer extends JSONSerializer {
jmsg.setText(json.getString("body").replace(""", "\""));
jmsg.setUser(userSerializer.deserialize(json.getJSONObject("user")));
- try {
- DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- df.setTimeZone(TimeZone.getTimeZone("UTC"));
- jmsg.setDate(df.parse(json.getString("timestamp")));
- } catch (ParseException e) {
- }
+ jmsg.setDate(df.parse(json.getString("timestamp")));
if (json.has("tags")) {
JSONArray tags = json.getJSONArray("tags");
--
cgit v1.2.3