backend/buisnesslogic/src/main/java/com/plannaplan/entities/Groups.java

412 lines
10 KiB
Java
Raw Normal View History

package com.plannaplan.entities;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
2021-01-03 16:21:06 +01:00
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
2020-07-25 10:21:42 +02:00
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
2020-07-25 10:21:42 +02:00
import javax.persistence.ManyToOne;
2020-07-25 09:58:40 +02:00
import com.plannaplan.types.GroupType;
import com.plannaplan.types.WeekDay;
/**
2020-12-20 12:14:12 +01:00
* Entity of Groups grouping of state ssociated about
* course,time,room,capacity,type,day
*/
@Entity
public class Groups {
2020-12-20 12:14:12 +01:00
private static final int DEFAULT_CLASS_TIME = 90;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
2020-07-25 10:56:11 +02:00
@ManyToOne
@JoinColumn(name = "course_id")
private Course course;
private int time;
2020-12-20 12:14:12 +01:00
private int endTime;
private String room;
private int capacity;
2020-07-25 09:58:40 +02:00
private GroupType type;
private WeekDay day;
2020-07-25 10:21:42 +02:00
@ManyToOne
@JoinColumn(name = "lecturer_id")
private Lecturer lecturer;
private Integer zajCykId;
private Integer grNr;
2021-01-03 16:21:06 +01:00
@ManyToMany(mappedBy = "studentRegisteredGrups", fetch = FetchType.EAGER)
private Set<User> registeredStudents;
public Set<User> getRegisteredStudents() {
return this.registeredStudents;
}
public void assignUser(User user) {
if (this.registeredStudents == null) {
this.registeredStudents = new HashSet<>();
}
this.registeredStudents.add(user);
}
public Groups() {
}
public Integer getGrNr() {
return grNr;
}
public void setGrNr(Integer grNr) {
this.grNr = grNr;
}
public Integer getZajCykId() {
return zajCykId;
}
public void setZajCykId(Integer zajCykId) {
this.zajCykId = zajCykId;
}
/**
* Groups
*
* @param capacity capacity given to the groups
2020-12-20 12:14:12 +01:00
* @param room room given to the groups
* @param course course given to the groups
* @param time time given to the groups
* @param endTime end time of class in minutes
* @param day day given to the groups
* @param lecturer lecturer given to the groups
*/
2020-12-20 12:14:12 +01:00
public Groups(int capacity, String room, Course course, int time, int endTime, WeekDay day, Lecturer lecturer) {
this.capacity = capacity;
this.room = room;
this.course = course;
this.time = time;
2020-12-20 12:14:12 +01:00
this.endTime = endTime;
this.day = day;
this.lecturer = lecturer;
this.type = capacity >= 50 ? GroupType.LECTURE : GroupType.CLASS;
}
/**
* Groups
*
* @param capacity capacity given to the groups
* @param room room given to the groups
* @param course course given to the groups
* @param time time given to the groups
* @param endTime end time of class in minutes
* @param day day given to the groups
* @param lecturer lecturer given to the groups
* @param zajCykId number of class in the term
* @param grNr Number of class/course
* @param type type of class/cource
*/
public Groups(int capacity, String room, Course course, int time, int endTime, WeekDay day, Lecturer lecturer,
Integer zajCykId, Integer grNr, GroupType type) {
this(capacity, room, course, time, endTime, day, lecturer, zajCykId, grNr);
this.type = type;
}
/**
* Groups
*
* @param capacity capacity given to the groups
* @param room room given to the groups
* @param course course given to the groups
* @param time time given to the groups
* @param day day given to the groups
* @param lecturer lecturer given to the groups
* @param zajCykId number of class in the term
* @param grNr Number of class/course
* @param type type of class/cource
*/
public Groups(int capacity, String room, Course course, int time, WeekDay day, Lecturer lecturer,
Integer zajCykId, Integer grNr, GroupType type) {
this(capacity, room, course, time, time + DEFAULT_CLASS_TIME, day, lecturer, zajCykId, grNr);
this.type = type;
}
/**
* Groups
*
* @param capacity capacity given to the groups
* @param room room given to the groups
* @param course course given to the groups
* @param time time given to the groups
* @param endTime end time of class in minutes
* @param day day given to the groups
* @param lecturer lecturer given to the groups
* @param zajCykId number of class in the term
* @param grNr Number of class/course
*/
public Groups(int capacity, String room, Course course, int time, int endTime, WeekDay day, Lecturer lecturer,
Integer zajCykId, Integer grNr) {
this(capacity, room, course, time, endTime, day, lecturer);
this.zajCykId = zajCykId;
this.grNr = grNr;
}
/**
* Groups
*
* @param capacity capacity given to the groups
* @param room room given to the groups
* @param course course given to the groups
* @param time time given to the groups
* @param day day given to the groups
* @param lecturer lecturer given to the groups
* @param zajCykId number of class in the term
* @param grNr Number of class/course
*/
public Groups(int capacity, String room, Course course, int time, WeekDay day, Lecturer lecturer, Integer zajCykId,
Integer grNr) {
this(capacity, room, course, time, time + DEFAULT_CLASS_TIME, day, lecturer);
this.zajCykId = zajCykId;
this.grNr = grNr;
}
2020-12-20 12:14:12 +01:00
/**
* Create groups with default class duration
*
* @param capacity capacity given to the groups
* @param room room given to the groups
* @param course course given to the groups
* @param time time given to the groups
* @param day day given to the groups
* @param lecturer lecturer given to the groups
*/
public Groups(int capacity, String room, Course course, int time, WeekDay day, Lecturer lecturer) {
this(capacity, room, course, time, time + DEFAULT_CLASS_TIME, day, lecturer);
}
/**
* Updates given values other that are not null
*
* @param capacity capacity given to the groups
* @param room room given to the groups
* @param course course given to the groups
* @param time time given to the groups
* @param endTime end time of class in minutes
* @param day day given to the groups
* @param lecturer lecturer given to the groups
* @param type type given to the groups
*/
public void update(Integer capacity, String room, Course course, Integer time, Integer endTime, WeekDay day,
Lecturer lecturer, GroupType type) {
if (capacity != null) {
this.capacity = capacity;
}
if (room != null) {
this.room = room;
}
if (course != null) {
this.course = course;
}
if (time != null) {
this.time = time;
}
if (endTime != null) {
this.endTime = endTime;
}
if (day != null) {
this.day = day;
}
if (lecturer != null) {
this.lecturer = lecturer;
}
if (type != null) {
this.type = type;
}
}
2020-12-20 12:14:12 +01:00
/**
* get time of class end
*
* @return hour of class finish time in minutes
*/
public int getEndTime() {
return endTime;
}
/**
* getId
2020-12-20 12:14:12 +01:00
*
* @return id
*/
2020-08-11 17:36:58 +02:00
public Long getId() {
return this.id;
}
/**
* getLecturer
2020-12-20 12:14:12 +01:00
*
* @return lecturer
*/
2020-07-25 10:21:42 +02:00
public Lecturer getLecturer() {
return lecturer;
}
/**
* setLecturer
2020-12-20 12:14:12 +01:00
*
* @param lecturer set lecturer into groups
*/
2020-07-25 10:21:42 +02:00
public void setLecturer(Lecturer lecturer) {
this.lecturer = lecturer;
}
/**
* WeekDay
2020-12-20 12:14:12 +01:00
*
* @return day
*/
2020-07-25 09:58:40 +02:00
public WeekDay getDay() {
return day;
}
/**
* setLecturer
2020-12-20 12:14:12 +01:00
*
* @param day set day into groups
*/
2020-07-25 09:58:40 +02:00
public void setDay(WeekDay day) {
this.day = day;
}
/**
* GroupType
2020-12-20 12:14:12 +01:00
*
* @return type
*/
2020-07-25 09:58:40 +02:00
public GroupType getType() {
return type;
}
/**
* setType
2020-12-20 12:14:12 +01:00
*
* @param type set type into groups
*/
2020-07-25 09:58:40 +02:00
public void setType(GroupType type) {
this.type = type;
}
/**
* getCapacity
2020-12-20 12:14:12 +01:00
*
* @return capacity
*/
public int getCapacity() {
return capacity;
}
/**
* setCapacity
2020-12-20 12:14:12 +01:00
*
* @param capacity set capacity into groups
*/
public void setCapacity(int capacity) {
this.capacity = capacity;
}
/**
* getRoom
2020-12-20 12:14:12 +01:00
*
* @return room
*/
public String getRoom() {
return room;
}
/**
* setRoom
2020-12-20 12:14:12 +01:00
*
* @param room set room into groups
*/
public void setRoom(String room) {
this.room = room;
}
/**
* getTime
2020-12-20 12:14:12 +01:00
*
* @return time
*/
public int getTime() {
return time;
}
/**
* setTime
2020-12-20 12:14:12 +01:00
*
* @param time set time into groups
*/
public void setTime(int time) {
this.time = time;
}
/**
* getCourseId
2020-12-20 12:14:12 +01:00
*
* @return course
*/
2020-07-25 10:56:11 +02:00
public Course getCourseId() {
return course;
}
/**
* setCourseId
2020-12-20 12:14:12 +01:00
*
* @param courseId set courseId into groups
*/
2020-07-25 10:56:11 +02:00
public void setCourseId(Course courseId) {
this.course = courseId;
}
2020-08-18 15:41:03 +02:00
/**
* getTimeString
2020-12-20 12:14:12 +01:00
*
* @return time as formated String
*/
2020-08-18 15:41:03 +02:00
public String getTimeString() {
int minutes = this.getTime() % 60;
2020-08-18 16:10:46 +02:00
String hoursString = Integer.toString(this.getTime() / 60);
2020-08-18 15:41:03 +02:00
String minutesString = Integer.toString(minutes);
if (minutes < 10) {
minutesString = "0" + minutesString;
}
2020-08-18 16:10:46 +02:00
return String.format("%s.%s", hoursString, minutesString);
2020-08-18 15:41:03 +02:00
}
2020-12-20 12:14:12 +01:00
/**
* gets end time formated strins
*
* @return end time as formated String
*/
public String getEndTimeString() {
int minutes = this.getEndTime() % 60;
String hoursString = Integer.toString(this.getEndTime() / 60);
String minutesString = Integer.toString(minutes);
if (minutes < 10) {
minutesString = "0" + minutesString;
}
return String.format("%s.%s", hoursString, minutesString);
}
}