Added a ton of entities.

This commit is contained in:
Andrew Lalis 2019-03-02 13:23:36 +01:00 committed by andrewlalis
parent 7d6f10e3fc
commit a22d759399
8 changed files with 216 additions and 0 deletions

View File

@ -0,0 +1,36 @@
package nl.andrewlalis.teaching_assistant_assistant.model;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.util.Date;
/**
* The basic entity properties which any entity in this system should have: an id and a creation timestamp. Every entity
* in this system should extend from BasicEntity.
*/
@MappedSuperclass
public class BasicEntity {
@Id
@GeneratedValue
private Long id;
@Temporal(
value = TemporalType.TIMESTAMP
)
@CreationTimestamp
@Column
private Date createdOn;
protected BasicEntity() {}
public Long getId() {
return this.id;
}
public Date getCreatedOn() {
return this.createdOn;
}
}

View File

@ -0,0 +1,28 @@
package nl.andrewlalis.teaching_assistant_assistant.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
/**
* Represents a course, containing many students and teaching assistants, as well as a collection of assignments.
*/
@Entity
@Inheritance(
strategy = InheritanceType.JOINED
)
public class Course extends BasicEntity {
@Column(unique = true, nullable = false)
private String name;
@Column(unique = true, nullable = false)
private String code;
/**
* Default constructor for JPA.
*/
protected Course() {}
}

View File

@ -0,0 +1,37 @@
package nl.andrewlalis.teaching_assistant_assistant.model.assignments;
import nl.andrewlalis.teaching_assistant_assistant.model.BasicEntity;
import nl.andrewlalis.teaching_assistant_assistant.model.Course;
import javax.persistence.*;
import java.util.List;
/**
* Represents a single assignment for a course.
*/
@Entity
@Inheritance(
strategy = InheritanceType.JOINED
)
public class Assignment extends BasicEntity {
/**
* The parent course to which this assignment belongs.
*/
@ManyToOne(
fetch = FetchType.LAZY,
optional = false
)
private Course course;
/**
* The list of sections which comprise this assignment.
*/
@OneToMany(
fetch = FetchType.EAGER,
orphanRemoval = true
)
private List<AssignmentSection> sections;
}

View File

@ -0,0 +1,25 @@
package nl.andrewlalis.teaching_assistant_assistant.model.assignments;
import nl.andrewlalis.teaching_assistant_assistant.model.BasicEntity;
import javax.persistence.*;
/**
* An Assignment is comprised of one or more sections, each of which has its own grade and feedback.
*/
@Entity
@Inheritance(
strategy = InheritanceType.JOINED
)
public class AssignmentSection extends BasicEntity {
/**
* The parent assignment to which this section belongs.
*/
@ManyToOne(
fetch = FetchType.LAZY,
optional = false
)
private Assignment assignment;
}

View File

@ -0,0 +1,27 @@
package nl.andrewlalis.teaching_assistant_assistant.model.assignments;
import nl.andrewlalis.teaching_assistant_assistant.model.BasicEntity;
import javax.persistence.*;
/**
* The feedback given by a teaching assistant to a student or group regarding a particular section of an assignment.
*/
@Entity
@Inheritance(
strategy = InheritanceType.JOINED
)
public abstract class Feedback extends BasicEntity {
/**
* The section to which this feedback belongs.
*/
@ManyToOne(
fetch = FetchType.LAZY,
optional = false
)
private AssignmentSection assignmentSection;
}

View File

@ -0,0 +1,42 @@
package nl.andrewlalis.teaching_assistant_assistant.model.people;
import nl.andrewlalis.teaching_assistant_assistant.model.BasicEntity;
import javax.persistence.*;
/**
* Represents any person (teaching assistant, student, or other) that exists in this application.
*/
@Entity
@Inheritance(
strategy = InheritanceType.JOINED
)
public class Person extends BasicEntity {
@Column(nullable = false)
private String firstName;
@Column(nullable = false)
private String lastName;
@Column
private String emailAddress;
/**
* Default constructor for JPA.
*/
protected Person () {}
/**
* Constructs a new Person.
* @param firstName The person's first name.
* @param lastName The person's last name.
* @param emailAddress The person's email address.
*/
public Person(String firstName, String lastName, String emailAddress) {
this.firstName = firstName;
this.lastName = lastName;
this.emailAddress = emailAddress;
}
}

View File

@ -0,0 +1,11 @@
package nl.andrewlalis.teaching_assistant_assistant.model.people;
import javax.persistence.Entity;
/**
* Represents a student, or someone enrolled and submitting assignments for a course.
*/
@Entity
public class Student extends Person {
}

View File

@ -0,0 +1,10 @@
package nl.andrewlalis.teaching_assistant_assistant.model.people;
import javax.persistence.Entity;
/**
* Represents a teaching assistant of a course, or in other words, a grader and administrator.
*/
@Entity
public class TeachingAssistant extends Person {
}