summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/data/Tweet.java16
-rw-r--r--src/data/User.java1
-rw-r--r--src/data/ValidatingJsonDeserializer.java5
-rw-r--r--src/database/QueryUtils.java6
4 files changed, 24 insertions, 4 deletions
diff --git a/src/data/Tweet.java b/src/data/Tweet.java
index 67292ec..384a9e1 100644
--- a/src/data/Tweet.java
+++ b/src/data/Tweet.java
@@ -10,10 +10,14 @@ public class Tweet {
public long id;
public String lang;
+ @ValidatingJsonDeserializer.Nullable
public long in_reply_to_user_id;
public String created_at;
public long favorite_count;
- public String place;
+ @ValidatingJsonDeserializer.Nullable
+ @ValidatingJsonDeserializer.Validator
+ public Place place;
+ @ValidatingJsonDeserializer.Nullable
public String coordinates;
public String text;
@ValidatingJsonDeserializer.Nullable
@@ -31,6 +35,16 @@ public class Tweet {
return gson.toJson(this);
}
+ public static class Place {
+
+ //public String id; // "a5b6bdd8008412b1"
+ //public String name; // "Danbury"
+ //public String country_code; // "US"
+ public String country; // "United States"
+ //public String url; // "https://api.twitter.com/1.1/geo/id/a5b6bdd8008412b1.json"
+ public String full_name; // "Danbury, CT"
+ }
+
public static class Entities {
@ValidatingJsonDeserializer.Validator
diff --git a/src/data/User.java b/src/data/User.java
index 390d986..97061bc 100644
--- a/src/data/User.java
+++ b/src/data/User.java
@@ -14,6 +14,7 @@ public class User {
public String location;
public String screen_name;
public String created_at;
+ @ValidatingJsonDeserializer.Nullable
@ValidatingJsonDeserializer.Validator
public Entities entities;
public String lang;
diff --git a/src/data/ValidatingJsonDeserializer.java b/src/data/ValidatingJsonDeserializer.java
index 511264d..c168821 100644
--- a/src/data/ValidatingJsonDeserializer.java
+++ b/src/data/ValidatingJsonDeserializer.java
@@ -33,14 +33,15 @@ public class ValidatingJsonDeserializer<T> implements JsonDeserializer<T> {
private void checkObject(String path, JsonElement je, Class type) {
JsonObject jsonObj = je.getAsJsonObject();
for (Field f : type.getDeclaredFields()) {
- if (!jsonObj.has(f.getName())) {
+ JsonElement val = jsonObj.get(f.getName());
+ if (!jsonObj.has(f.getName()) || val.isJsonNull()) {
if (f.getAnnotation(Nullable.class) != null) {
// null allowed, skip
continue;
}
throw new JsonParseException("Missing field: " + path + f.getName());
}
- tryValidateProperty(path, jsonObj.get(f.getName()), f);
+ tryValidateProperty(path, val, f);
// TODO: validate type?
}
}
diff --git a/src/database/QueryUtils.java b/src/database/QueryUtils.java
index f87ba47..228ccc8 100644
--- a/src/database/QueryUtils.java
+++ b/src/database/QueryUtils.java
@@ -103,7 +103,11 @@ public class QueryUtils {
}
tweetStatement.setLong("replyid", tweet.in_reply_to_user_id);
// TODO: place is not a string...
- tweetStatement.setString("place", tweet.place);
+ if (tweet.place != null) {
+ tweetStatement.setString("place", tweet.place.full_name + " " + tweet.place.country);
+ } else {
+ tweetStatement.setString("place", null);
+ }
User twuser = tweet.user;
tweetStatement.setLong("userid", twuser.id);