/************************************************************************* * * * This file is part of the 20n/act project. * * 20n/act enables DNA prediction for synthetic biology/bioengineering. * * Copyright (C) 2017 20n Labs, Inc. * * * * Please direct all queries to act@20n.com. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * * * *************************************************************************/ package act.installer.bing; import com.fasterxml.jackson.databind.JsonNode; import com.mongodb.BasicDBObject; /** * This class contains the structure of a single search result, as returned by the Bing Search API. * It also provides convenient translation methods from JsonNode and BasicDBObject and to BasicDBObject. */ public class SearchResult { // The ID field was removed with v5.0 of the API // Since we didn't use it much, we removed it from SearchResults as well. // See upgrade guide: https://msdn.microsoft.com/en-US/library/mt707570.aspx private String title; private String description; private String url; public void setTitle(String title) { this.title = title; } public void setDescription(String description) { this.description = description; } public void setUrl(String url) { this.url = url; } public String getTitle() { return title; } public String getDescription() { return description; } public String getUrl() { return url; } public void populateFromJsonNode(JsonNode result) { setDescription(result.path("snippet").textValue()); setTitle(result.path("name").textValue()); setUrl(result.path("displayUrl").textValue()); } public void populateFromBasicDBObject(BasicDBObject result) { setDescription((String) result.get("description")); setTitle((String) result.get("title")); setUrl((String) result.get("url")); } public BasicDBObject getBasicDBObject() { BasicDBObject topSearchResultDBObject = new BasicDBObject(); topSearchResultDBObject.put("title", getTitle()); topSearchResultDBObject.put("description", getDescription()); topSearchResultDBObject.put("url", getUrl()); return topSearchResultDBObject; } }