package annotatedspring.episodes;
import org.hibernate.validator.constraints.NotBlank;
import org.pegdown.Extensions;
import org.pegdown.PegDownProcessor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.util.Date;
@Entity
public class Episode {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotBlank
private String title;
private String summary;
@Lob
private String notes;
private String youtubeId;
private Integer duration;
private String sourcecodeUrl;
private String thumbnailUrl;
@DateTimeFormat(pattern = "MM/dd/yyyy")
private Date publishDate;
private boolean published;
public Integer getId() {
return id;
}
public String getTitle() {
return title;
}
public String getNotes() {
return notes;
}
public String getNotesHtml() {
String html = new PegDownProcessor(Extensions.TABLES).markdownToHtml(notes);
html = html.replaceAll("<table>", "<table class=\"table\">");
return html;
}
public void setId(Integer id) {
this.id = id;
}
public void setTitle(String title) {
if (title == null) {
this.title = null;
} else {
this.title = title.trim();
}
}
public void setNotes(String notes) {
this.notes = notes;
}
public String getYoutubeId() {
return youtubeId;
}
public void setYoutubeId(String youtubeId) {
this.youtubeId = youtubeId;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public String getSourcecodeUrl() {
return sourcecodeUrl;
}
public void setSourcecodeUrl(String sourcecodeUrl) {
this.sourcecodeUrl = sourcecodeUrl;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public boolean isPublished() {
return published;
}
public void setPublished(boolean published) {
this.published = published;
}
public String getThumbnailUrl() {
return thumbnailUrl;
}
public void setThumbnailUrl(String thumbnailUrl) {
this.thumbnailUrl = thumbnailUrl;
}
public String getSlug() {
return title.toLowerCase()
.replace("&", "and")
.replace(",", "")
.replace(":", "")
.replace(' ', '-');
}
public Date getPublishDate() {
return publishDate;
}
public void setPublishDate(Date publishDate) {
this.publishDate = publishDate;
}
}