package com.moupress.app.friendshost.sns.Renren; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import com.google.gson.Gson; import com.moupress.app.friendshost.sns.FeedEntry; import com.moupress.app.friendshost.sns.facebook.FBHomeFeed; import com.renren.api.connect.android.Renren; import com.renren.api.connect.android.common.ResponseBean; public class FeedExtractResponseBean extends ResponseBean{ public static final String MESSAGE = "message"; public static final String TITLE = "title"; public static final String NAME = "name"; public static final int DEFAULT_POST_ID = 0; private String title; private String name; private String message; private List<FeedEntry> feedList; public FeedExtractResponseBean(String response, String format) { super(response); // try { // System.out.println("Response "+response); // JSONObject json = new JSONObject(response); // title = json.getString(TITLE); // name = json.getString(NAME); // message = json.getString(MESSAGE); // // System.out.println("title " + title+" name "+ name + " message " + message); // } catch(JSONException je) { // Util.logger(je.getMessage()); // title = ""; // } try { if (format.equals(Renren.RESPONSE_FORMAT_JSON)) { response = "{ \"data\": " + response + "}"; RenrenFeedHome bean = new Gson().fromJson(response, RenrenFeedHome.class); feedList = bean.getData(); //System.out.println("Renren with JSON Response"); } else if (format.equals(Renren.RESPONSE_FORMAT_XML)) { feedList = new ArrayList<FeedEntry>(); ParseString(response); } } catch(Exception e) { System.out.println(e.toString()); } } public List<FeedEntry> getFeedList() { return feedList; } public void setFeedList(ArrayList<FeedEntry> feedList) { this.feedList = feedList; } public void ParseString(String response) { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); InputSource inStream = new InputSource(); inStream.setCharacterStream(new StringReader(response)); //Document doc = docBuilder.parse (new File("book.xml")); Document doc = docBuilder.parse (inStream); NodeList listOffeeds = doc.getElementsByTagName("feed_post"); for(int index=0; index < listOffeeds.getLength(); index++) { Node feed = listOffeeds.item(index); if(feed.getNodeType() == Node.ELEMENT_NODE) { RenenFeedElement feedChild = new RenenFeedElement(); NodeList feedElements = feed.getChildNodes(); for(int i=0; i < feedElements.getLength(); i ++) { //if(feedElements.item(i).getNodeType() == Node.ELEMENT_NODE) { Element feedElement = (Element) feedElements.item(i); if (feedElement.getFirstChild() != null) { if (feedElement.getNodeName().equals("post_id")) feedChild.setId(feedElement.getFirstChild().getNodeValue().trim()); else if(feedElement.getNodeName().equals("feed_type")) feedChild.setFeed_type(feedElement.getFirstChild().getNodeValue().trim()); else if(feedElement.getNodeName().equals("actor_type")) feedChild.setActor_type(feedElement.getFirstChild().getNodeValue().trim()); else if(feedElement.getNodeName().equals("actor_id")) { feedChild.getFriend().setId(feedElement.getFirstChild().getNodeValue().trim()); feedChild.setActor_id(feedElement.getFirstChild().getNodeValue().trim()); } else if(feedElement.getNodeName().equals("name")) { feedChild.setName(feedElement.getFirstChild().getNodeValue().trim()); feedChild.getFriend().setName(feedElement.getFirstChild().getNodeValue().trim()); } else if(feedElement.getNodeName().equals("update_time")) feedChild.setUpdate_time(feedElement.getFirstChild().getNodeValue().trim()); else if(feedElement.getNodeName().equals("headurl")) feedChild.getFriend().setHeadurl(feedElement.getFirstChild().getNodeValue().trim()); else if (feedElement.getNodeName().equals("message")) feedChild.setMessage(feedElement.getFirstChild().getNodeValue().trim()); else if (feedElement.getNodeName().equals("title")) feedChild.setTitle(feedElement.getFirstChild().getNodeValue().trim()); else if(feedElement.getNodeName().equals("href")) feedChild.setLink(feedElement.getFirstChild().getNodeValue().trim()); else if(feedElement.getNodeName().equals("prefix")) feedChild.setPrefix(feedElement.getFirstChild().getNodeValue().trim()); else if(feedElement.getNodeName().equals("description")) feedChild.setDescription(feedElement.getFirstChild().getNodeValue().trim()); // <attachment> else if(feedElement.getNodeName().equals("attachment")) { NodeList attachmentElements = feedElement.getChildNodes(); for ( int j = 0; j < attachmentElements.getLength(); j++ ) { //if(attachmentElements.item(i).getNodeType() == Node.ELEMENT_NODE) { Element attachmentElement = (Element) attachmentElements.item(j); // <feed_media> if(attachmentElement.getNodeName().equals("feed_media")) { NodeList feedMediaElements = attachmentElement.getChildNodes(); for ( int k = 0; k < feedMediaElements.getLength(); k++ ) { //if(feedMediaElements.item(j).getNodeType() == Node.ELEMENT_NODE) { Element feedMediaElement = (Element) feedMediaElements.item(k); if(feedMediaElement.getNodeName().equals("media_id")) feedChild.setFeed_media_media_id(feedMediaElement.getFirstChild().getNodeValue().trim()); else if(feedMediaElement.getNodeName().equals("owner_id")) feedChild.setFeed_media_owner_id(feedMediaElement.getFirstChild().getNodeValue().trim()); else if(feedMediaElement.getNodeName().equals("owner_name")) feedChild.setFeed_media_owner_name(feedMediaElement.getFirstChild().getNodeValue().trim()); else if(feedMediaElement.getNodeName().equals("media_type")) feedChild.setFeed_media_media_type(feedMediaElement.getFirstChild().getNodeValue().trim()); else if(feedMediaElement.getNodeName().equals("src")) if ( feedMediaElement.getFirstChild() != null ) { // cater for returning <src /> scenario feedChild.setFeed_media_src(feedMediaElement.getFirstChild().getNodeValue().trim()); } //} } } // </feed_media> //} } } // </attachment> } } feedList.add(feedChild); } } } catch(Exception e) { System.out.println(e.toString()); } } public String getTitle() { return title; } public String getName() { return name; } public String getMessage() { return message; } }