Added News RSS parser.

This commit is contained in:
Robert Kolner committed 2011-11-02 22:08:11 +01:00
1 parent 51b41a4253
commit 05b7ceb954
4 files changed
+180 -67

No files matched your search

@@ -7,7 +7,8 @@ import java.util.TreeSet;
public class DataHandler {
private List<Event> events = new LinkedList<Event>();
private Set<String> categories = new TreeSet<String>();
private List<News> news = new LinkedList<News>();
private Set<String> eventCategories = new TreeSet<String>();
public void insertEvent(String id, String title, String description, String date, String location, String text, String category) {
int intId = Integer.parseInt(id);
@@ -16,7 +17,12 @@ public class DataHandler {
Event e = new Event(intId, title, description, date, location, text, category);
events.add(e);
categories.add(category);
eventCategories.add(category);
}
public void insertNews(String title, String description, String content, String link, String pubDate) {
News n = new News(title, description, content, link, pubDate);
this.news.add(n);
}
public Event getEvent(int id) {
@@ -41,12 +47,16 @@ public class DataHandler {
return sorted.toArray(new Event[sorted.size()]);
}
public News[] populateNewsList() {
return this.news.toArray(new News[this.news.size()]);
}
public String[] getEventCategories() {
String[] result = new String[categories.size() + 1];
String[] result = new String[eventCategories.size() + 1];
result[0] = Event.ALL;
int counter = 1;
for (String c : categories) {
for (String c : eventCategories) {
result[counter++] = c;
}
+30
View File
@@ -0,0 +1,30 @@
package com.studentersamfundet.app;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.net.Uri;
public class News {
public String title;
public String description;
public String content;
public Uri link;
public Date pubDate;
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public News(String title, String description, String content, String link, String pubDate) {
this.title = title.trim();
this.description = description.trim();
this.content = content.trim();
this.link = Uri.parse(link.trim());
try {
this.pubDate = sdf.parse(pubDate.trim());
} catch (ParseException e) {
this.pubDate = null;
}
}
}
@@ -1,5 +1,70 @@
package com.studentersamfundet.app;
public class RSSParserNews {
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class RSSParserNews {
private final DataHandler dh;
public RSSParserNews() {
this(null);
}
public RSSParserNews(DataHandler dh) {
if (dh == null) {
this.dh = new DataHandler();
} else {
this.dh = dh;
}
}
public DataHandler parse(NodeList itemNodes) {
String title = "";
String description = "";
String link = "";
String content = "";
String pubDate = "";
// String pictureUrl = ""; Necessary?
for (int i = 0; i < itemNodes.getLength(); i++) {
Node itemNode = itemNodes.item(i);
if (itemNode.getNodeType() == Node.ELEMENT_NODE) {
// Convert the Node into an Element.
Element itemElement = (Element) itemNode;
// Get all elements under the <item> element.
NodeList titleNodes = (itemElement).getElementsByTagName("title");
NodeList descriptionNodes = (itemElement).getElementsByTagName("description");
NodeList linkNodes = (itemElement).getElementsByTagName("link");
NodeList textNodes = (itemElement).getElementsByTagName("content");
NodeList dateNodes = (itemElement).getElementsByTagName("pubDate");
// Convert a Node into an Element.
Node titleElement = titleNodes.item(0);
Node descriptionElement = descriptionNodes.item(0);
Node linkElement = linkNodes.item(0);
Node textElement = textNodes.item(0);
Node dateElement = dateNodes.item(0);
// Get all the child nodes.
NodeList titleTextNodes = titleElement.getChildNodes();
NodeList descriptionTextNodes = descriptionElement.getChildNodes();
NodeList linkTextNodes = linkElement.getChildNodes();
NodeList textTextNodes = textElement.getChildNodes();
NodeList dateTextNodes = dateElement.getChildNodes();
// Retrieve the text.
title = titleTextNodes.item(0).getNodeValue(); // mandatory
if (descriptionTextNodes.getLength() > 0) description = descriptionTextNodes.item(0).getNodeValue();
if (linkTextNodes.getLength() > 0) link = linkTextNodes.item(0).getNodeValue();
if (textTextNodes.getLength() > 0) content = textTextNodes.item(0).getNodeValue();
if (dateTextNodes.getLength() > 0) pubDate = dateTextNodes.item(0).getNodeValue();
dh.insertNews(title, description, content, link, pubDate);
}
}
return dh;
}
}
@@ -5,68 +5,76 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class RSSParserProgram {
private static DataHandler dh;
public RSSParserProgram() {
dh = new DataHandler();
}
private final DataHandler dh;
public DataHandler parse(NodeList itemNodes) {
String id = "";
String title = "";
String description = "";
String date = "";
String location = "";
String text = "";
String category = "";
// String pictureUrl = ""; Necessary?
for (int i = 0; i < itemNodes.getLength(); i++) {
Node itemNode = itemNodes.item(i);
if (itemNode.getNodeType() == Node.ELEMENT_NODE) {
// Convert the Node into an Element.
Element itemElement = (Element) itemNode;
// Get all elements under the <item> element.
NodeList idNodes = (itemElement).getElementsByTagName("id");
NodeList titleNodes = (itemElement).getElementsByTagName("title");
NodeList descriptionNodes = (itemElement).getElementsByTagName("description");
NodeList dateNodes = (itemElement).getElementsByTagName("date");
NodeList locationNodes = (itemElement).getElementsByTagName("location");
NodeList textNodes = (itemElement).getElementsByTagName("content");
NodeList categoryNodes = (itemElement).getElementsByTagName("category");
// Convert a Node into an Element.
Node idElement = idNodes.item(0);
Node titleElement = titleNodes.item(0);
Node descriptionElement = descriptionNodes.item(0);
Node dateElement = dateNodes.item(0);
Node locationElement = locationNodes.item(0);
Node textElement = textNodes.item(0);
Node categoryElement = categoryNodes.item(0);
// Get all the child nodes.
NodeList idTextNodes = idElement.getChildNodes();
NodeList titleTextNodes = titleElement.getChildNodes();
NodeList descriptionTextNodes = descriptionElement.getChildNodes();
NodeList dateTextNodes = dateElement.getChildNodes();
NodeList locationTextNodes = locationElement.getChildNodes();
NodeList textTextNodes = textElement.getChildNodes();
NodeList categoryTextNodes = categoryElement.getChildNodes();
// Retrieve the text.
id = idTextNodes.item(0).getNodeValue(); // mandatory
title = titleTextNodes.item(0).getNodeValue(); // mandatory
if (descriptionTextNodes.getLength() > 0) description = descriptionTextNodes.item(0).getNodeValue();
if (dateTextNodes.getLength() > 0) date = dateTextNodes.item(0).getNodeValue();
if (locationTextNodes.getLength() > 0) location = locationTextNodes.item(0).getNodeValue();
if (textTextNodes.getLength() > 0) text = textTextNodes.item(0).getNodeValue();
if (categoryTextNodes.getLength() > 0) category = categoryTextNodes.item(0).getNodeValue();
dh.insertEvent(id, title, description, date, location, text, category);
}
}
return dh;
public RSSParserProgram() {
this(null);
}
public RSSParserProgram(DataHandler dh) {
if (dh == null) {
this.dh = new DataHandler();
} else {
this.dh = dh;
}
}
public DataHandler parse(NodeList itemNodes) {
String id = "";
String title = "";
String description = "";
String date = "";
String location = "";
String text = "";
String category = "";
// String pictureUrl = ""; Necessary?
for (int i = 0; i < itemNodes.getLength(); i++) {
Node itemNode = itemNodes.item(i);
if (itemNode.getNodeType() == Node.ELEMENT_NODE) {
// Convert the Node into an Element.
Element itemElement = (Element) itemNode;
// Get all elements under the <item> element.
NodeList idNodes = (itemElement).getElementsByTagName("id");
NodeList titleNodes = (itemElement).getElementsByTagName("title");
NodeList descriptionNodes = (itemElement).getElementsByTagName("description");
NodeList dateNodes = (itemElement).getElementsByTagName("date");
NodeList locationNodes = (itemElement).getElementsByTagName("location");
NodeList textNodes = (itemElement).getElementsByTagName("content");
NodeList categoryNodes = (itemElement).getElementsByTagName("category");
// Convert a Node into an Element.
Node idElement = idNodes.item(0);
Node titleElement = titleNodes.item(0);
Node descriptionElement = descriptionNodes.item(0);
Node dateElement = dateNodes.item(0);
Node locationElement = locationNodes.item(0);
Node textElement = textNodes.item(0);
Node categoryElement = categoryNodes.item(0);
// Get all the child nodes.
NodeList idTextNodes = idElement.getChildNodes();
NodeList titleTextNodes = titleElement.getChildNodes();
NodeList descriptionTextNodes = descriptionElement.getChildNodes();
NodeList dateTextNodes = dateElement.getChildNodes();
NodeList locationTextNodes = locationElement.getChildNodes();
NodeList textTextNodes = textElement.getChildNodes();
NodeList categoryTextNodes = categoryElement.getChildNodes();
// Retrieve the text.
id = idTextNodes.item(0).getNodeValue(); // mandatory
title = titleTextNodes.item(0).getNodeValue(); // mandatory
if (descriptionTextNodes.getLength() > 0) description = descriptionTextNodes.item(0).getNodeValue();
if (dateTextNodes.getLength() > 0) date = dateTextNodes.item(0).getNodeValue();
if (locationTextNodes.getLength() > 0) location = locationTextNodes.item(0).getNodeValue();
if (textTextNodes.getLength() > 0) text = textTextNodes.item(0).getNodeValue();
if (categoryTextNodes.getLength() > 0) category = categoryTextNodes.item(0).getNodeValue();
dh.insertEvent(id, title, description, date, location, text, category);
}
}
return dh;
}
}