]> git.somenet.org - pub/jan/dst18.git/blob - ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Course.java
Model fixes to remove unneeded tables.
[pub/jan/dst18.git] / ass1-jpa / src / main / java / dst / ass1 / jpa / model / impl / Course.java
1 package dst.ass1.jpa.model.impl;
2
3 import dst.ass1.jpa.model.*;
4 import dst.ass1.jpa.util.Constants;
5
6 import javax.persistence.*;
7 import java.math.BigDecimal;
8 import java.util.ArrayList;
9 import java.util.Collection;
10 import java.util.Date;
11
12 @Entity
13 @Table(name = Constants.T_COURSE)
14 @NamedQuery(name = Constants.Q_ONGOING_AND_FREE_PLATFORM_COURSES, query = "SELECT c" +
15         " FROM " + Constants.T_COURSE + " c" +
16         " JOIN c.coursePlatform cp " +
17         " WHERE cp." + Constants.M_COURSEPLATFORM_NAME + " = :platformName " +
18         " AND c." + Constants.M_COURSE_STATUS + " = dst.ass1.jpa.model.CourseStatus.ONGOING" +
19         " AND c." + Constants.M_COURSE_CAPACITY + " > (SELECT count(*) FROM " + Constants.T_ENROLLMENT +
20         " WHERE c = " + Constants.I_COURSE + " group by " + Constants.I_COURSE + ")"
21 )
22 public class Course implements ICourse {
23     @Id
24     @GeneratedValue
25     private Long id;
26
27     @Column
28     private String name;
29
30     @Column
31     private Integer capacity;
32
33     @Column
34     private Boolean premium;
35
36     @Column
37     private BigDecimal cost;
38
39     @Column
40     private CourseStatus status;
41
42     @Column
43     private Date start;
44
45     @Column
46     private Date end;
47
48     // FIXME: TESTS VS DB-MODEL? (optional = false)
49     @ManyToOne(targetEntity = CoursePlatform.class)
50     @JoinColumn(name = Constants.I_COURSEPLATFORM)
51     private ICoursePlatform coursePlatform;
52
53     // FIXME: TESTS VS DB-MODEL? (optional = false)
54     @ManyToOne(targetEntity = Lecturer.class)
55     @JoinColumn(name = Constants.I_LECTURER)
56     private ILecturer lecturer;
57
58     @OneToMany(targetEntity = Lesson.class, mappedBy = Constants.M_LESSON_COURSE)
59     private Collection<ILesson> lessons = new ArrayList<>();
60
61     @OneToOne(targetEntity = Metadata.class, optional = false, cascade = CascadeType.ALL)
62     private IMetadata metadata;
63
64     // FIXME: TESTS VS DB-MODEL?
65     @OneToMany(targetEntity = Enrollment.class)
66     private Collection<IEnrollment> enrollments = new ArrayList<>();
67
68
69     @Override
70     public Long getId() {
71         return id;
72     }
73
74     @Override
75     public void setId(Long id) {
76         this.id = id;
77     }
78
79     @Override
80     public String getName() {
81         return name;
82     }
83
84     @Override
85     public void setName(String name) {
86         this.name = name;
87     }
88
89     @Override
90     public Integer getCapacity() {
91         return capacity;
92     }
93
94     @Override
95     public void setCapacity(Integer capacity) {
96         this.capacity = capacity;
97     }
98
99     @Override
100     public Boolean getPremium() {
101         return premium;
102     }
103
104     @Override
105     public void setPremium(Boolean premium) {
106         this.premium = premium;
107     }
108
109     @Override
110     public BigDecimal getCost() {
111         return cost;
112     }
113
114     @Override
115     public void setCost(BigDecimal cost) {
116         this.cost = cost;
117     }
118
119     @Override
120     public CourseStatus getStatus() {
121         return status;
122     }
123
124     @Override
125     public void setStatus(CourseStatus status) {
126         this.status = status;
127     }
128
129     @Override
130     public Date getStart() {
131         return start;
132     }
133
134     @Override
135     public void setStart(Date start) {
136         this.start = start;
137     }
138
139     @Override
140     public Date getEnd() {
141         return end;
142     }
143
144     @Override
145     public void setEnd(Date end) {
146         this.end = end;
147     }
148
149     @Override
150     public ICoursePlatform getCoursePlatform() {
151         return coursePlatform;
152     }
153
154     @Override
155     public void setCoursePlatform(ICoursePlatform coursePlatform) {
156         this.coursePlatform = coursePlatform;
157     }
158
159     @Override
160     public ILecturer getLecturer() {
161         return lecturer;
162     }
163
164     @Override
165     public void setLecturer(ILecturer lecturer) {
166         this.lecturer = lecturer;
167     }
168
169     @Override
170     public Collection<ILesson> getLessons() {
171         return lessons;
172     }
173
174     @Override
175     public void setLessons(Collection<ILesson> lessons) {
176         this.lessons = lessons;
177     }
178
179     @Override
180     public void addLesson(ILesson lesson) {
181         this.lessons.add(lesson);
182     }
183
184     @Override
185     public IMetadata getMetadata() {
186         return metadata;
187     }
188
189     @Override
190     public void setMetadata(IMetadata metadata) {
191         this.metadata = metadata;
192     }
193
194     @Override
195     public Collection<IEnrollment> getEnrollments() {
196         return enrollments;
197     }
198
199     @Override
200     public void setEnrollments(Collection<IEnrollment> enrollments) {
201         this.enrollments = enrollments;
202     }
203
204     @Override
205     public void addEnrollment(IEnrollment enrollment) {
206         this.enrollments.add(enrollment);
207     }
208 }