/**
* Copyright: Copyright (c) From Down & Around, Inc.
*/
package com.fdar.apress.s2.domain;
import org.hibernate.annotations.Generated;
import javax.persistence.*;
import java.util.*;
import java.io.Serializable;
@Entity @Table( name="EVENT", schema="S2APP" )
public class Event implements Serializable {
private long id;
private String name;
private Date startTime;
private int duration;
private int timeZoneOffset;
private Date votingStartTime;
private Date lastUpdateTime;
private Set<Voter> voters = new HashSet<Voter>();
private Location location;
private List<Contestant> options = new ArrayList<Contestant>();
private Progress status;
@Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="ID")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column(name="NAME")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name="START_TIME") @Temporal(TemporalType.TIMESTAMP)
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
@Column(name="DURATION")
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
@Column(name="TZ_OFFSET")
public int getTimeZoneOffset() {
return timeZoneOffset;
}
public void setTimeZoneOffset(int timeZoneOffset) {
this.timeZoneOffset = timeZoneOffset;
}
@Column(name="VOTING_STARTS") @Temporal(TemporalType.TIMESTAMP)
public Date getVotingStartTime() {
return votingStartTime;
}
public void setVotingStartTime(Date votingStartTime) {
this.votingStartTime = votingStartTime;
}
@Column(name="LAST_UPDATE") @Temporal(TemporalType.TIMESTAMP)
public Date getLastUpdateTime() {
return lastUpdateTime;
}
public void setLastUpdateTime(Date lastUpdateTime) {
this.lastUpdateTime = lastUpdateTime;
}
@OneToMany(mappedBy="event",cascade=CascadeType.ALL)
public Set<Voter> getVoters() {
return voters;
}
public void setVoters(Set<Voter> voters) {
this.voters = voters;
}
public void addVoter( Voter v ) {
v.setEvent(this);
voters.add(v);
}
@ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="LOCATION_FK")
public Location getLocation() {
return location;
}
public void setLocation(Location location) {
this.location = location;
}
@OneToMany(mappedBy="event",cascade=CascadeType.ALL)
public List<Contestant> getOptions() {
return options;
}
public void setOptions(List<Contestant> options) {
this.options = options;
}
public void addOption( Contestant c ) {
c.setEvent(this);
options.add(c);
}
@Column(name="STATE") @Enumerated(EnumType.STRING)
public Progress getStatus() {
return status;
}
public void setStatus(Progress status) {
this.status = status;
}
}