package fi.otavanopisto.pyramus.domainmodel.courses;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.PersistenceException;
import javax.persistence.PrimaryKeyJoinColumn;
import fi.otavanopisto.pyramus.domainmodel.base.ComponentBase;
@Entity
@PrimaryKeyJoinColumn(name="id")
public class CourseComponent extends ComponentBase {
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
public List<CourseComponentResource> getResources() {
return resources;
}
@SuppressWarnings("unused")
private void setResources(List<CourseComponentResource> resource) {
this.resources = resource;
}
public void addResource(CourseComponentResource resource) {
if (!resources.contains(resource)) {
if (resource.getCourseComponent() != null)
resource.getCourseComponent().removeResource(resource);
resource.setCourseComponent(this);
resources.add(resource);
} else {
throw new PersistenceException("Component already contains this resource");
}
}
public void removeResource(CourseComponentResource resource) {
if (resources.contains(resource)) {
resource.setCourseComponent(null);
this.resources.remove(resource);
} else {
throw new PersistenceException("Component does not contain this resource");
}
}
@ManyToOne
@JoinColumn(name="course")
private Course course;
@OneToMany (cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn (name="courseComponent")
private List<CourseComponentResource> resources = new ArrayList<>();
}