package focusedCrawler.target.model; import java.io.Serializable; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import focusedCrawler.target.classifier.TargetRelevance; @SuppressWarnings("serial") public class TargetModelJson implements Serializable { @JsonProperty("url") private String url; @JsonProperty("redirected_url") private String redirectedUrl; @JsonProperty("content") private byte[] content; @JsonProperty("content_type") private String contentType; @JsonProperty("response_headers") private Map<String, List<String>> responseHeaders; @JsonProperty("fetch_time") private long fetchTime; @JsonProperty("relevance") private TargetRelevance relevance; public TargetModelJson() { // required for JSON deserialization } public TargetModelJson(Page page) { if (page.getURL() != null) this.url = page.getURL().toString(); if (page.getRedirectedURL() != null) this.redirectedUrl = page.getRedirectedURL().toString(); this.content = page.getContent(); this.responseHeaders = page.getResponseHeaders(); this.fetchTime = page.getFetchTime(); this.contentType = page.getContentType(); this.relevance = page.getTargetRelevance(); } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getRedirectedUrl() { return redirectedUrl; } public void setRedirectedUrl(String redirectedUrl) { this.redirectedUrl = redirectedUrl; } public byte[] getContent() { return content; } public void setContent(byte[] content) { this.content = content; } public Map<String, List<String>> getResponseHeaders() { return responseHeaders; } public void setResponseHeaders(Map<String, List<String>> responseHeaders) { this.responseHeaders = responseHeaders; } public long getFetchTime() { return fetchTime; } public void setFetchTime(long fetchTime) { this.fetchTime = fetchTime; } public String getContentType() { return this.contentType; } @JsonIgnore public String getContentAsString() { return new String(content); } public TargetRelevance getRelevance() { return relevance; } public void setRelevance(TargetRelevance relevance) { this.relevance = relevance; } /* * This method was maintained for backwards compatibility only. JSON objects that were * serialized before this field was removed, are converted to the new model during * deserialization. Use {@link #setContent()} instead. */ @Deprecated @JsonProperty("response_body") public void setResponseBody(String responseBody) { this.content = responseBody.getBytes(); if (this.contentType == null && responseHeaders != null) { this.contentType = Page.extractContentType(responseHeaders); } } }