package fi.otavanopisto.muikku.plugins.material.model;
import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToOne;
import javax.persistence.PersistenceException;
import javax.persistence.Transient;
import javax.persistence.Version;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@Cacheable
@Cache (usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class Material {
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Transient
public String getType() {
throw new PersistenceException("Not Implemented");
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Material getOriginMaterial() {
return originMaterial;
}
public void setOriginMaterial(Material originMaterial) {
this.originMaterial = originMaterial;
}
public String getLicense() {
return license;
}
public void setLicense(String license) {
this.license = license;
}
public MaterialViewRestrict getViewRestrict() {
return viewRestrict;
}
public void setViewRestrict(MaterialViewRestrict viewRestrict) {
this.viewRestrict = viewRestrict;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
private Long id;
@NotEmpty
@NotNull
@Column (nullable = false)
private String title;
@ManyToOne
private Material originMaterial;
private String license;
@Column (nullable = false)
@Enumerated (EnumType.STRING)
private MaterialViewRestrict viewRestrict;
@Version
private Long version;
}