This repository has been archived on 2026-10-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
android-app/src/com/studentersamfundet/app/RSSParserProgram.java
T

111 lines
5.2 KiB
Java

package com.studentersamfundet.app;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class RSSParserProgram {
private final DataHandler 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) {
for (int i = 0; i < itemNodes.getLength(); i++) {
String id = "";
String title = "";
String description = "";
String date = "";
String location = "";
String text = "";
String category = "";
String image = "";
String priceReg = "";
String priceMem = "";
String ticketUrl = "";
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");
NodeList imageNodes = (itemElement).getElementsByTagName("image");
NodeList priceRegNodes = (itemElement).getElementsByTagName("price-regular");
NodeList priceMemNodes = (itemElement).getElementsByTagName("price-member");
NodeList ticketUrlNodes = (itemElement).getElementsByTagName("ticket-url");
// 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);
Node imageElement = imageNodes.item(0);
Node priceRegElement = priceRegNodes.item(0);
Node priceMemElement = priceMemNodes.item(0);
Node ticketUrlElement = ticketUrlNodes.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();
NodeList imageTextNodes = imageElement.getChildNodes();
NodeList priceRegTextNodes = priceRegElement.getChildNodes();
NodeList priceMemTextNodes = priceMemElement.getChildNodes();
NodeList ticketUrlTextNodes = ticketUrlElement.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();
if (imageTextNodes.getLength() > 0) image = imageTextNodes.item(0).getNodeValue();
if (priceRegTextNodes.getLength() > 0) priceReg = priceRegTextNodes.item(0).getNodeValue();
if (priceMemTextNodes.getLength() > 0) priceMem = priceMemTextNodes.item(0).getNodeValue();
if (ticketUrlTextNodes.getLength() > 0) ticketUrl = ticketUrlTextNodes.item(0).getNodeValue();
// This is as ugly as it gets. Refactor?
dh.insertEvent(id,
title,
description,
date,
location,
text,
category,
image,
priceReg,
priceMem,
ticketUrl);
}
}
return dh;
}
}