/** * This method takes a single Article Object and converts it in to a single JSON object including * some additional HTML formating so they can be displayed nicely * * @param article * @param current * @throws JSONException */ private static void buildJsonObject(Article article, JSONObject current) throws JSONException { String title = article.getTitle(); String description = article.getDescription().replaceAll("\\s+", " ").replaceAll("\\<[^>]*>", ""); String date = article.getPubDate(); if (date != null && date.length() > 0) { DateFormat[] rssFormatters = { new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.UK), new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.UK) }; DateFormat bulFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm", Locale.US); for (DateFormat rssFormatter : rssFormatters) { try { Date realDate = rssFormatter.parse(date); String bulDate = bulFormatter.format(realDate); date = bulDate; break; } catch (ParseException e) { // Can't parse, stick to the original. Log.e("DATE PARSER", e.getMessage()); } } } int tagPos = description.indexOf("<"); if (tagPos > 0) { description = description.substring(0, tagPos) + '.'; } StringBuffer sb = new StringBuffer(); sb.append(BOLD_OPEN).append(title).append(BOLD_CLOSE); sb.append(PARAGRAPH); sb.append(description); sb.append(PARAGRAPH); sb.append(SMALL_OPEN).append(ITALIC_OPEN).append(date).append(ITALIC_CLOSE).append(SMALL_CLOSE); current.put("text", Html.fromHtml(sb.toString())); current.put("title", BOLD_OPEN + title + BOLD_CLOSE); String urlString = null; if (article.getUrl() == null) { urlString = ""; } else { urlString = article.getUrl().toString(); } current.put("url", urlString); }
/** * This method defines a feed URL and then calles our SAX Handler to read the article list from * the stream * * @return List<JSONObject> - suitable for the List View activity */ public static List<JSONObject> getLatestRssFeed(CommonStringsHelper res) { String feed = res.getString(R.string.rss_url); RSSHandler rh = new RSSHandler(); List<Article> articles = rh.getLatestArticles(feed); if (articles == null || articles.size() <= 0) { Article article = new Article(); article.setArticleId(-9999); article.setTitle(res.getString(R.string.rss_unavailable_title)); article.setDescription(res.getString(R.string.rss_unavailable_description)); article.setPubDate(res.getString(R.string.rss_unavailable_date)); article.setUrl(null); articles.add(article); } else { Article article = new Article(); article.setArticleId(-9999); article.setTitle(res.getString(R.string.author_title)); article.setDescription(res.getString(R.string.author_description)); article.setPubDate(res.getString(R.string.author_date)); try { article.setUrl(new URL(res.getString(R.string.author_url))); } catch (MalformedURLException e) { // Oops... fallback to default. article.setUrl(null); } articles.add(article); } Log.e("RSS ERROR", "Number of articles " + articles.size()); return fillData(articles); }