private ResultSet parseResults(JSONObject obj) { ResultSet results = new ResultSet(); results.addSourceRepository(ID); if (obj == null) { return results; } else if (!obj.has("response")) { return results; } try { JSONObject resp = obj.getJSONObject("response"); if (!resp.has("results")) { return results; } JSONArray resultsArray = resp.getJSONArray("results"); for (int i = 0; i < resultsArray.length(); i++) { JSONObject curResult = resultsArray.getJSONObject(i); ResultEntity e = new ResultEntity(); e.setSource(ID); e.addLanguage("en"); e.setMediaType(MediaType.TEXT); e.setFormat("html"); // parse curResult if (curResult.has("sectionName")) { e.addCategory(curResult.getString("sectionName"), ID); } if (curResult.has("webPublicationDate")) { // TODO: parse Date } if (curResult.has("webTitle")) { e.setTitle(curResult.getString("webTitle")); } if (curResult.has("webUrl")) { e.setUrl(curResult.getString("webUrl")); } // parse tags if (curResult.has("tags")) { JSONArray tags = curResult.getJSONArray("tags"); for (int k = 0; k < tags.length(); k++) { JSONObject curTag = tags.getJSONObject(k); if (curTag.has("webTitle")) { e.addTag(new ResultTag(curTag.getString("webTitle"), ID)); } } } // parse fields object if (curResult.has("fields")) { JSONObject fields = curResult.getJSONObject("fields"); if (fields.has("headline")) { e.setTitle(fields.getString("headline")); } if (fields.has("trailText")) { e.setDescription(fields.getString("trailText")); } if (fields.has("shortUrl")) { e.setUrl(fields.getString("shortUrl")); } if (fields.has("thumbnail")) { String tnurl = fields.getString("thumbnail"); e.setThumbnail(new ResultThumbnail(0, 0, new URL(tnurl))); } if (fields.has("byline")) { e.addAuthor(new ResultUser(fields.getString("byline"), null, null, null, ID)); } if (fields.has("lastModified")) { // TODO: parse Date } } if (e.getTitle() != null) { results.add(e); } } results = filterResult(results); return results; } catch (Exception e) { logger.debug(e.getMessage()); return results; } }