]> git.somenet.org - pub/jan/dst18.git/blob - ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Course.java
[1.2.1ab] changed model + dao to do the first named query
[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     // , optional = false?
49     @ManyToOne(targetEntity = CoursePlatform.class)
50     private ICoursePlatform coursePlatform;
51
52     // , optional = false?
53     @ManyToOne(targetEntity = Lecturer.class)
54     private ILecturer lecturer;
55
56     @OneToMany(targetEntity = Lesson.class)
57     private Collection<ILesson> lessons = new ArrayList<>();
58
59     @OneToOne(targetEntity = Metadata.class, optional = false, cascade = CascadeType.ALL)
60     private IMetadata metadata;
61
62     @OneToMany(targetEntity = Enrollment.class)
63     private Collection<IEnrollment> enrollments = new ArrayList<>();
64
65
66     @Override
67     public Long getId() {
68         return id;
69     }
70
71     @Override
72     public void setId(Long id) {
73         this.id = id;
74     }
75
76     @Override
77     public String getName() {
78         return name;
79     }
80
81     @Override
82     public void setName(String name) {
83         this.name = name;
84     }
85
86     @Override
87     public Integer getCapacity() {
88         return capacity;
89     }
90
91     @Override
92     public void setCapacity(Integer capacity) {
93         this.capacity = capacity;
94     }
95
96     @Override
97     public Boolean getPremium() {
98         return premium;
99     }
100
101     @Override
102     public void setPremium(Boolean premium) {
103         this.premium = premium;
104     }
105
106     @Override
107     public BigDecimal getCost() {
108         return cost;
109     }
110
111     @Override
112     public void setCost(BigDecimal cost) {
113         this.cost = cost;
114     }
115
116     @Override
117     public CourseStatus getStatus() {
118         return status;
119     }
120
121     @Override
122     public void setStatus(CourseStatus status) {
123         this.status = status;
124     }
125
126     @Override
127     public Date getStart() {
128         return start;
129     }
130
131     @Override
132     public void setStart(Date start) {
133         this.start = start;
134     }
135
136     @Override
137     public Date getEnd() {
138         return end;
139     }
140
141     @Override
142     public void setEnd(Date end) {
143         this.end = end;
144     }
145
146     @Override
147     public ICoursePlatform getCoursePlatform() {
148         return coursePlatform;
149     }
150
151     @Override
152     public void setCoursePlatform(ICoursePlatform coursePlatform) {
153         this.coursePlatform = coursePlatform;
154     }
155
156     @Override
157     public ILecturer getLecturer() {
158         return lecturer;
159     }
160
161     @Override
162     public void setLecturer(ILecturer lecturer) {
163         this.lecturer = lecturer;
164     }
165
166     @Override
167     public Collection<ILesson> getLessons() {
168         return lessons;
169     }
170
171     @Override
172     public void setLessons(Collection<ILesson> lessons) {
173         this.lessons = lessons;
174     }
175
176     @Override
177     public void addLesson(ILesson lesson) {
178         this.lessons.add(lesson);
179     }
180
181     @Override
182     public IMetadata getMetadata() {
183         return metadata;
184     }
185
186     @Override
187     public void setMetadata(IMetadata metadata) {
188         this.metadata = metadata;
189     }
190
191     @Override
192     public Collection<IEnrollment> getEnrollments() {
193         return enrollments;
194     }
195
196     @Override
197     public void setEnrollments(Collection<IEnrollment> enrollments) {
198         this.enrollments = enrollments;
199     }
200
201     @Override
202     public void addEnrollment(IEnrollment enrollment) {
203         this.enrollments.add(enrollment);
204     }
205 }