From fd3870508d868a54ed12ea68b956ba72b48047e6 Mon Sep 17 00:00:00 2001 From: Emil Mogstad Date: Wed, 30 May 2012 23:15:32 +0200 Subject: [PATCH] Fikset JSON parser og innlesning for Event og News --- src/com/studentersamfundet/app/Event.java | 7 +- .../app/JSONParserNews.java | 36 ++++++- .../app/JSONParserProgram.java | 93 ++++++++++++++----- src/com/studentersamfundet/app/Utils.java | 38 ++++++++ .../app/ui/DnsActivity.java | 4 +- 5 files changed, 145 insertions(+), 33 deletions(-) diff --git a/src/com/studentersamfundet/app/Event.java b/src/com/studentersamfundet/app/Event.java index c379843..1a60ab0 100644 --- a/src/com/studentersamfundet/app/Event.java +++ b/src/com/studentersamfundet/app/Event.java @@ -1,15 +1,12 @@ package com.studentersamfundet.app; import java.io.Serializable; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.Date; import android.net.Uri; public class Event implements Serializable { private static final long serialVersionUID = -5222901012434000257L; - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); public static final String ALL = "Alle"; @@ -44,8 +41,8 @@ public class Event implements Serializable { this.image = image; try { - this.date = (date == null) ? null : dateFormat.parse(date.trim()); - } catch (ParseException e) { + this.date = (date == null) ? null : new Date(1000 * Long.parseLong(date.trim())); + } catch (NumberFormatException e) { this.date = null; } } diff --git a/src/com/studentersamfundet/app/JSONParserNews.java b/src/com/studentersamfundet/app/JSONParserNews.java index 06b7c6b..3d73aec 100644 --- a/src/com/studentersamfundet/app/JSONParserNews.java +++ b/src/com/studentersamfundet/app/JSONParserNews.java @@ -1,7 +1,14 @@ package com.studentersamfundet.app; +import java.io.IOException; import java.io.InputStream; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import android.util.Log; + public class JSONParserNews implements IParser { private static final long serialVersionUID = -2654591623794449527L; private final DataHandler dh; @@ -25,9 +32,34 @@ public class JSONParserNews implements IParser { String content = ""; String pubDate = ""; - for (int i = 0;i < 0;i++) { - dh.insertNews(title, description, content, link, pubDate); + try { + String jString = Utils.convertStreamToString(in); + in.close(); + JSONObject jObject = new JSONObject(jString); + JSONObject tempJSON; + JSONArray eventArray = jObject.getJSONArray("posts"); + int count = jObject.getInt("count"); + + for (int i = 0;i < count;i++) { + tempJSON = eventArray.getJSONObject(i); + title = tempJSON.getString("title"); + description = tempJSON.getString("excerpt"); + link = tempJSON.getString("url"); + content = tempJSON.getString("content"); + pubDate = tempJSON.getString("date"); + + dh.insertNews(title, description, content, link, pubDate); + } + + + } catch (IOException e) { + Log.e("json-parser", e.getMessage()); + return dh; + } catch (JSONException e) { + Log.e("json-parser", e.getMessage()); + return dh; } + return dh; } } diff --git a/src/com/studentersamfundet/app/JSONParserProgram.java b/src/com/studentersamfundet/app/JSONParserProgram.java index 2ccbf20..568d8e6 100644 --- a/src/com/studentersamfundet/app/JSONParserProgram.java +++ b/src/com/studentersamfundet/app/JSONParserProgram.java @@ -1,7 +1,14 @@ package com.studentersamfundet.app; +import java.io.IOException; import java.io.InputStream; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import android.util.Log; + public class JSONParserProgram implements IParser { private static final long serialVersionUID = 3364287016121595334L; private final DataHandler dh; @@ -19,33 +26,71 @@ public class JSONParserProgram implements IParser { } public DataHandler parse(InputStream in) { - for (int i = 0; i < 0; i++) { - String id = ""; - String title = ""; - String description = ""; - String date = ""; - String location = ""; - String text = ""; - String category = ""; - String image = ""; - String priceReg = ""; - String priceMem = ""; - String ticketUrl = ""; + String id = ""; + String title = ""; + String description = ""; + String text = ""; + String image = ""; + + String date = ""; + String location = ""; + String category = ""; + String priceReg = ""; + String priceMem = ""; + String ticketUrl = ""; + + try { + String jString = Utils.convertStreamToString(in); + in.close(); + JSONObject jObject = new JSONObject(jString); + JSONObject tempJSON; + JSONArray eventArray = jObject.getJSONArray("events"); + int count = jObject.getInt("count"); - // This is as ugly as it gets. Refactor? - dh.insertEvent(id, - title, - description, - date, - location, - text, - category, - image, - priceReg, - priceMem, - ticketUrl); + for (int i = 0;i < count;i++) { + // Variables directly from the JSONObject + tempJSON = eventArray.getJSONObject(i); + id = tempJSON.getString("id"); + title = tempJSON.getString("title"); + description = tempJSON.getString("excerpt"); + date = tempJSON.getString("date"); + text = tempJSON.getString("content"); + image = tempJSON.getString("thumbnail"); + + tempJSON = tempJSON.getJSONObject("custom_fields"); + ticketUrl = tempJSON.getJSONArray("_neuf_events_bs_url").getString(0); + location = tempJSON.getJSONArray("_neuf_events_venue").getString(0); + priceReg = tempJSON.getJSONArray("_neuf_events_price_regular").getString(0); + priceMem = priceReg; + date = tempJSON.getJSONArray("_neuf_events_starttime").getString(0); + + + // This is as ugly as it gets. Refactor? + dh.insertEvent(id, + title, + description, + date, + location, + text, + category, + image, + priceReg, + priceMem, + ticketUrl); + } + + } catch (IOException e) { + Log.e("json-parser", e.getMessage()); + return dh; + } catch (JSONException e) { + Log.e("json-parser", e.getMessage()); + return dh; } + + + + return dh; } } diff --git a/src/com/studentersamfundet/app/Utils.java b/src/com/studentersamfundet/app/Utils.java index 2d5d081..09e687f 100644 --- a/src/com/studentersamfundet/app/Utils.java +++ b/src/com/studentersamfundet/app/Utils.java @@ -1,5 +1,13 @@ package com.studentersamfundet.app; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.StringWriter; +import java.io.Writer; + public class Utils { public static String intToMonthStr(int monthInt) { String monthString; @@ -27,4 +35,34 @@ public class Utils { day = day.substring(1); return day; } + + public static String convertStreamToString(InputStream is) + throws IOException { + /* + * To convert the InputStream to String we use the + * Reader.read(char[] buffer) method. We iterate until the + * Reader return -1 which means there's no more data to + * read. We use the StringWriter class to produce the string. + */ + if (is != null) { + Writer writer = new StringWriter(); + + char[] buffer = new char[1024]; + try { + Reader reader = new BufferedReader( + new InputStreamReader(is, "UTF-8")); + int n; + while ((n = reader.read(buffer)) != -1) { + writer.write(buffer, 0, n); + } + } finally { + is.close(); + } + return writer.toString(); + } else { + return ""; + } + } + } + diff --git a/src/com/studentersamfundet/app/ui/DnsActivity.java b/src/com/studentersamfundet/app/ui/DnsActivity.java index eb62be2..f91fab2 100644 --- a/src/com/studentersamfundet/app/ui/DnsActivity.java +++ b/src/com/studentersamfundet/app/ui/DnsActivity.java @@ -20,8 +20,8 @@ import com.studentersamfundet.app.ui.lists.EventListTicketsActivity; import com.studentersamfundet.app.ui.lists.NewsListActivity; public class DnsActivity extends BaseDnsActivity { - public static final String eventFeedURL = "http://studentersamfundet.no/rss/robert_program_feed.php"; - public static final String newsFeedURL = "http://studentersamfundet.no/rss/nyheter_feed.php"; + public static final String eventFeedURL = "http://studentersamfundet.no/api/events/get_upcoming/"; + public static final String newsFeedURL = "http://studentersamfundet.no/?json=1"; private FeedFetcher eventFeedFetcher; private FeedFetcher newsFeedFetcher;