package de.flower.rmt.model.db.entity.event;
import de.flower.rmt.model.db.entity.Club;
import de.flower.rmt.model.db.entity.Uniform;
import de.flower.rmt.model.db.type.Surface;
import org.hibernate.annotations.Type;
import org.joda.time.LocalTime;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author flowerrrr
*/
@MappedSuperclass
public abstract class AbstractSoccerEvent extends Event {
/**
* Will be stored in database as millis from 1.1.1970. Shows one hour more than actual time due to conversion to UTC.
* See RMT-669.
*/
@Column
@NotNull
@Type(type = "org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")
private LocalTime kickoff;
/**
* Map list of surfaces to a string. Not done as @ElementCollection cause it causes trouble with DotNode.getDataType() when
* used in a subperclass like here.
*/
@Basic
@Type(type = "de.flower.rmt.model.db.type.SurfaceListType")
private List<Surface> surfaceList = new ArrayList<Surface>();
/**
* Can be null.
*/
@ManyToOne(fetch = FetchType.LAZY)
private Uniform uniform;
public AbstractSoccerEvent(final Club club) {
super(club);
}
protected AbstractSoccerEvent() {
super();
}
@Override
public void copyFrom(Event event) {
super.copyFrom(event);
AbstractSoccerEvent asEvent = (AbstractSoccerEvent) event;
setKickoff(asEvent.getKickoff());
setUniform(asEvent.getUniform());
setSurfaceList(asEvent.getSurfaceList());
}
public LocalTime getKickoff() {
return kickoff;
}
public void setKickoff(final LocalTime kickoff) {
this.kickoff = kickoff;
}
public Date getKickoffAsDate() {
return (kickoff == null) ? null : kickoff.toDateTimeToday().toDate();
}
public Uniform getUniform() {
return uniform;
}
public void setUniform(final Uniform uniform) {
this.uniform = uniform;
}
public List<Surface> getSurfaceList() {
return surfaceList;
}
public void setSurfaceList(final List<Surface> surfaceList) {
this.surfaceList = surfaceList;
}
}