package de.dhbw.humbuch.model.entity; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; /** * @author David Vitt * */ @Entity @Table(name="category") public class Category implements de.dhbw.humbuch.model.entity.Entity, Serializable, Comparable<Category> { private static final long serialVersionUID = -1497919629033299136L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String name; private String description; @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy="category", fetch=FetchType.LAZY) private List<TeachingMaterial> teachingMaterials = new ArrayList<>(); /** * Required by Hibernate.<p> * Use the {@link Builder} instead. * * @see Builder */ @Deprecated public Category() {} public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public List<TeachingMaterial> getTeachingMaterials() { return teachingMaterials; } public void setTeachingMaterials(List<TeachingMaterial> teachingMaterials) { this.teachingMaterials = teachingMaterials; } public static class Builder { private final String name; private String description; public Builder(String name) { this.name = name; } public Builder description(String description) { this.description = description; return this; } public Category build() { return new Category(this); } } private Category(Builder builder) { this.name = builder.name; this.description = builder.description; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Category)) return false; Category other = (Category) obj; if (getId() != other.getId()) return false; return true; } @Override public String toString() { return getName(); } @Override public int compareTo(Category o) { int compareResult = getName().compareTo(o.getName()); if(compareResult != 0) { return compareResult; } return Integer.compare(hashCode(), o.hashCode()); } }