Department.java

/*
 * +====================================================================+
 * |         Copyright (C) 2015 Rochester Institute of Technology,      |
 * |            103 Lomb Memorial Drive, Rochester, NY - 14623          |
 * |                        All Rights Reserved.                        |
 * +====================================================================+
 *   FILENAME
 *    Department.java
 *
 *   AUTHOR
 *    @author mhickson
 *
 * =====================================================================
 */

package edu.rit.coopeval.model;

import javax.persistence.*;
import java.util.Collection;

import com.fasterxml.jackson.annotation.JsonView;
import edu.rit.coopeval.viewmodel.JsonViewer;

@Entity
@Table(name = "DEPARTMENT")
public class Department extends AuditableEntity {

    @Id
    @Column(name = "DEPARTMENTID", nullable = false, insertable = true, updatable = true, precision = 0)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "departmentId_seq")
    @SequenceGenerator(name = "departmentId_seq", sequenceName = "SEQ_Department_departmentId", allocationSize = 1)
    @JsonView(JsonViewer.Summary.class)
    private long departmentId;

    @Column(name = "DEPARTMENTCODE", nullable = true, insertable = true, updatable = true, length = 4)
    @JsonView(JsonViewer.Summary.class)
    private String departmentCode;

    @Column(name = "DEPARTMENTNAME", nullable = true, insertable = true, updatable = true, length = 64)
    @JsonView(JsonViewer.Summary.class)
    private String departmentName;

    @ManyToOne
    @JoinColumn(name = "COLLEGEID")
    private College collegeByCollegeId;

    @OneToMany(mappedBy = "department")
    private Collection<DepartmentTermForm> departmentTermFormsByDepartmentId;

    @ManyToMany
    @JoinTable(
            name = "DEPARTMENTUSERJOIN",
            joinColumns = @JoinColumn(name = "DEPARTMENTID", referencedColumnName = "DEPARTMENTID"),
            inverseJoinColumns = @JoinColumn(name = "DEPARTMENTUSERID", referencedColumnName = "ID")
    )
    private Collection<User> evaluators;

    public long getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(long departmentId) {
        this.departmentId = departmentId;
    }

    public String getDepartmentCode() {
        return departmentCode;
    }

    public void setDepartmentCode(String departmentCode) {
        this.departmentCode = departmentCode;
    }

    public String getDepartmentName() {
        return departmentName;
    }

    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }

    public College getCollegeByCollegeId() {
        return collegeByCollegeId;
    }

    public void setCollegeByCollegeId(College collegeByCollegeId) {
        this.collegeByCollegeId = collegeByCollegeId;
    }

    public Collection<DepartmentTermForm> getDepartmentTermFormsByDepartmentId() {
        return departmentTermFormsByDepartmentId;
    }

    public void setDepartmentTermFormsByDepartmentId(Collection<DepartmentTermForm> departmentTermFormsByDepartmentId) {
        this.departmentTermFormsByDepartmentId = departmentTermFormsByDepartmentId;
    }

    public Collection<User> getEvaluators() {
        return evaluators;
    }

    public void setEvaluators(Collection<User> evaluators) {
        this.evaluators = evaluators;
    }
}