/** * */ package com.gffny.ldrbrd.common.model.impl; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.persistence.Transient; import org.hibernate.annotations.ForeignKey; import com.gffny.ldrbrd.common.model.CommonUUIDEntity; import com.gffny.ldrbrd.common.model.enums.TeeColour; /** * @author jdgaffney * */ @NamedQueries({ @NamedQuery(name = Course.FIND_BY_NAME_AND_TEE_COLOUR, query = "SELECT c FROM Course c WHERE c.courseName = :courseName and c.teeColour = :teeColour"), @NamedQuery(name = Course.FIND_BY_CLUB_ID_AND_COURSE_NAME, query = "SELECT c FROM Course c WHERE c.club.id = :clubId and c.courseName = :courseName") }) @Entity @Table(name = "t_course") public class Course extends CommonUUIDEntity { /** * */ private static final long serialVersionUID = -2501872481702879896L; /** * */ public static final String FIND_BY_NAME_AND_TEE_COLOUR = "find_by_name_and_tee_colour"; /** * */ public static final String FIND_BY_CLUB_ID_AND_COURSE_NAME = "find_by_club_id_and_course_name"; /** * */ private String courseName; /** * */ private Club club; /** * */ @Enumerated(EnumType.ORDINAL) private TeeColour teeColour; /** * */ private Double slopeIndex; /** * */ private Integer par; /** * */ private String courseImageReference; /** * */ private List<CourseHole> courseHoleList; /** * * @param courseName * @param club * @param teeColour * @param slopeIndex * @param par * @param courseImageReference * @return */ public static Course createCourse(String courseName, Club club, TeeColour teeColour, Double slopeIndex, Integer par, String courseImageReference) { Course newCourse = new Course(courseName, club, teeColour, slopeIndex, par, courseImageReference); return newCourse; } /** * * @param courseName * @param club * @param teeColour * @param slopeIndex * @param par * @param courseImageReference */ private Course(String courseName, Club club, TeeColour teeColour, Double slopeIndex, Integer par, String courseImageReference) { this.courseName = courseName; this.club = club; this.teeColour = teeColour; this.slopeIndex = slopeIndex; this.par = par; this.courseImageReference = courseImageReference; } /** * */ public Course() { } /** * @return the courseName */ @Column(name = "crs_nm") public String getCourseName() { return courseName; } /** * @param courseName * the courseName to set */ public void setCourseName(String courseName) { this.courseName = courseName; } /** * @return the club */ @ManyToOne @JoinColumn(name = "clb_id", nullable = false) @ForeignKey(name = "id") public Club getClub() { return club; } /** * @param club * the club to set */ public void setClub(Club club) { this.club = club; } /** * @return the teeColour */ @Column(name = "tee_clr") public TeeColour getTeeColour() { return teeColour; } /** * @param teeColour * the teeColour to set */ public void setTeeColour(TeeColour teeColour) { this.teeColour = teeColour; } /** * @return the slopeIndex */ @Column(name = "slp_indx") public Double getSlopeIndex() { return slopeIndex; } /** * @param slopeIndex * the slopeIndex to set */ public void setSlopeIndex(Double slopeIndex) { this.slopeIndex = slopeIndex; } /** * @return the par */ @Column(name = "par") public Integer getPar() { return par; } /** * @param par * the par to set */ public void setPar(Integer par) { this.par = par; } /** * @return the courseImageRef */ @Column(name = "crs_img_ref") public String getCourseImageRef() { return courseImageReference; } /** * @param courseImageRef * the courseImageRef to set */ public void setCourseImageRef(String courseImageRef) { this.courseImageReference = courseImageRef; } /** * * @return */ // @ElementCollection(fetch = FetchType.EAGER) // @CollectionTable(name = "t_hole", joinColumns = @JoinColumn(name = // "crs_id")) @Transient public List<CourseHole> getCourseHoleList() { return this.courseHoleList; } /** * * @param courseHoleList */ public void setCourseHoleList(final List<CourseHole> courseHoleList) { this.courseHoleList = courseHoleList; } /** * * @return */ @Transient public boolean isNineHole() { return par < 40; } }