/* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil
 * vi: set shiftwidth=2 tabstop=2 expandtab:
 * :indentSize=2:tabSize=2:noTabs=true:
 */

package db;

import java.io.Serializable;
import javax.persistence.*;

/**
 * The primary key class for the lecture database table.
 * 
 */
@Embeddable
public class LecturePK implements Serializable {
  // default serial version id, required for serializable classes.
  private static final long serialVersionUID = 1L;
  private Long course;
  private java.util.Date startTime;
  private java.util.Date endTime;

  public LecturePK() {
  }

  @Column(insertable = false, updatable = false, unique = true, nullable = false)
  public Long getCourse() {
    return this.course;
  }

  public void setCourse(Long course) {
    this.course = course;
  }

  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "start_time", unique = true, nullable = false)
  public java.util.Date getStartTime() {
    return this.startTime;
  }

  public void setStartTime(java.util.Date startTime) {
    this.startTime = startTime;
  }

  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "end_time", unique = true, nullable = false)
  public java.util.Date getEndTime() {
    return this.endTime;
  }

  public void setEndTime(java.util.Date endTime) {
    this.endTime = endTime;
  }

  public boolean equals(Object other) {
    if (this == other) {
      return true;
    }
    if (!(other instanceof LecturePK)) {
      return false;
    }
    LecturePK castOther = (LecturePK) other;
    return this.course.equals(castOther.course) && this.startTime.equals(castOther.startTime)
        && this.endTime.equals(castOther.endTime);
  }

  public int hashCode() {
    final int prime = 31;
    int hash = 17;
    hash = hash * prime + this.course.hashCode();
    hash = hash * prime + this.startTime.hashCode();
    hash = hash * prime + this.endTime.hashCode();

    return hash;
  }
}
