package com.trywildcard.pair.model.link; import com.fasterxml.jackson.annotation.JsonIgnore; import com.trywildcard.pair.exception.CardBuilderException; import com.trywildcard.pair.validation.ValidationTool; import java.net.MalformedURLException; import java.net.URL; import java.util.Date; import java.util.List; /** * Created by karthiksenthil on 2/3/15. */ public class Target { @JsonIgnore protected ValidationTool v = new ValidationTool(); private URL url; private String title; private String description; private Date publicationDate; /** * Needed for Jackson deserialization * */ private Target() { } public Target(String url) throws CardBuilderException { url(url); } protected void url(String url) throws CardBuilderException { boolean isValid = v.required(v.notNullOrEmpty(url), "Must specify a url."); if (isValid) { try { this.url = new URL(url); } catch (MalformedURLException e) { v.required(v.fail(), "Could not parse URL from webUrl string."); } } } public URL getUrl() { return url; } public String getDescription() { return description; } public void setDescription(String description) throws CardBuilderException { boolean isValid = v.optional(v.notNullOrEmpty(description), "Description cannot be blank."); if (isValid) { this.description = description; } } public String getTitle() { return title; } public void setTitle(String title) throws CardBuilderException { boolean isValid = v.optional(v.notNullOrEmpty(title), "Title cannot be blank."); if (isValid) { this.title = title; } } public void setPublicationDate(Date publicationDate) { boolean isValid = v.optional(v.notNull(publicationDate), "Link Publication Date cannot be null."); if (isValid) { this.publicationDate = publicationDate; } } public Date getPublicationDate() { return publicationDate; } /** * Get a list of validation errors. * @return the list of errors. */ @JsonIgnore public List<String> getErrors(){ return v.getErrors(); } }