/* * Copyright 2010 Chad Retz * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.statmantis.model; import java.io.Serializable; import java.sql.Date; import java.sql.Time; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.hibernate.annotations.CollectionOfElements; import org.statmantis.annotation.XmlInternalProperty; import org.statmantis.annotation.XmlTopLevel; /** * Representation of a baseball game * * @author Chad Retz */ @Entity @Table(name = "Game") @XmlTopLevel @SuppressWarnings("serial") public class Game implements Serializable, RetrosheetModel { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) @Column(name = "GameId", unique = true, nullable = false) private long gameId; @Column(name = "RetroId", unique = true, nullable = false) private String retroId; @XmlInternalProperty("parkId") @ManyToOne @JoinColumn(name = "ParkId", nullable = false) private Park park; @XmlInternalProperty("teamId") @ManyToOne @JoinColumn(name = "VisitingTeamId", nullable = false) private Team visitingTeam; @ManyToOne @JoinColumn(name = "VistorInfoId", nullable = false) private TeamGameInfo visitorInfo; @XmlInternalProperty("teamId") @ManyToOne @JoinColumn(name = "HomeTeamId", nullable = false) private Team homeTeam; @ManyToOne @JoinColumn(name = "HomeInfoId", nullable = false) private TeamGameInfo homeInfo; @Enumerated(EnumType.STRING) @Column(name = "DayNumber", length = GameDayNumber.MAX_LENGTH) private GameDayNumber dayNumber; @Temporal(TemporalType.DATE) @Column(name = "StartDate", nullable = false) private Date startDate; @Temporal(TemporalType.TIME) @Column(name = "StartTime") private Time startTime; @Temporal(TemporalType.DATE) @Column(name = "ScheduledStartDate") private Date scheduledStartDate; @Enumerated(EnumType.STRING) @Column(name = "Type", length = GameType.MAX_LENGTH) private GameType type; @Column(name = "Outs", nullable = false) private int outs; @Column(name = "DayGame", nullable = false) private boolean dayGame; @ManyToOne @JoinColumn(name = "CompletionId") private GameCompletion completion; @Enumerated(EnumType.STRING) @Column(name = "Forfeiture", length = Forfeiture.MAX_LENGTH) private Forfeiture forfeiture; @Column(name = "Attendance") private Integer attendance; @Column(name = "TimeInMinutes") private Integer timeInMinutes; @ManyToOne @JoinColumn(name = "UmpireHomeId") private Person umpireHome; @ManyToOne @JoinColumn(name = "UmpireFirstId") private Person umpireFirst; @ManyToOne @JoinColumn(name = "UmpireSecondId") private Person umpireSecond; @ManyToOne @JoinColumn(name = "UmpireThirdId") private Person umpireThird; @ManyToOne @JoinColumn(name = "UmpireLeftId") private Person umpireLeft; @ManyToOne @JoinColumn(name = "UmpireRightId") private Person umpireRight; @Column(name = "HomeTeamBattedFirst", nullable = false) private boolean homeTeamBattedFirst; @Enumerated(EnumType.STRING) @Column(name = "Forfeiture", length = Forfeiture.MAX_LENGTH) private GameAccuracy accuracy; @Column(name = "DesignatedHitterPresent", nullable = false) private boolean designatedHitterPresent; @Enumerated(EnumType.STRING) @Column(name = "FieldCondition", length = FieldCondition.MAX_LENGTH) private FieldCondition fieldCondition; @Enumerated(EnumType.STRING) @Column(name = "Precipitation", length = Precipitation.MAX_LENGTH) private Precipitation precipitation; @Enumerated(EnumType.STRING) @Column(name = "SkyCondition", length = SkyCondition.MAX_LENGTH) private SkyCondition skyCondition; @Column(name = "Temperature") private Integer temperature; @Enumerated(EnumType.STRING) @Column(name = "WindDirection", length = WindDirection.MAX_LENGTH) private WindDirection windDirection; @Column(name = "Temperature") private Integer windspeed; @ManyToMany @JoinTable(name = "GamePlay", joinColumns = @JoinColumn(name = "GameId"), inverseJoinColumns = @JoinColumn(name = "PlayId")) private List<Play> plays; @Enumerated(EnumType.STRING) @CollectionOfElements @JoinTable(name = "GameProtest", joinColumns = @JoinColumn(name = "GameId")) @Column(name = "Protest", length = Protest.MAX_LENGTH) private List<Protest> protests; public long getGameId() { return gameId; } public void setGameId(long gameId) { this.gameId = gameId; } @Override public String getRetroId() { return retroId; } public void setRetroId(String retroId) { this.retroId = retroId; } public Park getPark() { return park; } public void setPark(Park park) { this.park = park; } public Team getVisitingTeam() { return visitingTeam; } public void setVisitingTeam(Team visitingTeam) { this.visitingTeam = visitingTeam; } public TeamGameInfo getVisitorInfo() { return visitorInfo; } public void setVisitorInfo(TeamGameInfo visitorInfo) { this.visitorInfo = visitorInfo; } public Team getHomeTeam() { return homeTeam; } public void setHomeTeam(Team homeTeam) { this.homeTeam = homeTeam; } public TeamGameInfo getHomeInfo() { return homeInfo; } public void setHomeInfo(TeamGameInfo homeInfo) { this.homeInfo = homeInfo; } public GameDayNumber getDayNumber() { return dayNumber; } public void setDayNumber(GameDayNumber dayNumber) { this.dayNumber = dayNumber; } public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } public Time getStartTime() { return startTime; } public void setStartTime(Time startTime) { this.startTime = startTime; } public Date getScheduledStartDate() { return scheduledStartDate; } public void setScheduledStartDate(Date scheduledStartDate) { this.scheduledStartDate = scheduledStartDate; } public GameType getType() { return type; } public void setType(GameType type) { this.type = type; } public int getOuts() { return outs; } public void setOuts(int outs) { this.outs = outs; } public boolean isDayGame() { return dayGame; } public void setDayGame(boolean dayGame) { this.dayGame = dayGame; } public GameCompletion getCompletion() { return completion; } public void setCompletion(GameCompletion completion) { this.completion = completion; } public Forfeiture getForfeiture() { return forfeiture; } public void setForfeiture(Forfeiture forfeiture) { this.forfeiture = forfeiture; } public Integer getAttendance() { return attendance; } public void setAttendance(Integer attendance) { this.attendance = attendance; } public Integer getTimeInMinutes() { return timeInMinutes; } public void setTimeInMinutes(Integer timeInMinutes) { this.timeInMinutes = timeInMinutes; } public Person getUmpireHome() { return umpireHome; } public void setUmpireHome(Person umpireHome) { this.umpireHome = umpireHome; } public Person getUmpireFirst() { return umpireFirst; } public void setUmpireFirst(Person umpireFirst) { this.umpireFirst = umpireFirst; } public Person getUmpireSecond() { return umpireSecond; } public void setUmpireSecond(Person umpireSecond) { this.umpireSecond = umpireSecond; } public Person getUmpireThird() { return umpireThird; } public void setUmpireThird(Person umpireThird) { this.umpireThird = umpireThird; } public Person getUmpireLeft() { return umpireLeft; } public void setUmpireLeft(Person umpireLeft) { this.umpireLeft = umpireLeft; } public Person getUmpireRight() { return umpireRight; } public void setUmpireRight(Person umpireRight) { this.umpireRight = umpireRight; } public boolean isHomeTeamBattedFirst() { return homeTeamBattedFirst; } public void setHomeTeamBattedFirst(boolean homeTeamBattedFirst) { this.homeTeamBattedFirst = homeTeamBattedFirst; } public GameAccuracy getAccuracy() { return accuracy; } public void setAccuracy(GameAccuracy accuracy) { this.accuracy = accuracy; } public boolean isDesignatedHitterPresent() { return designatedHitterPresent; } public void setDesignatedHitterPresent(boolean designatedHitterPresent) { this.designatedHitterPresent = designatedHitterPresent; } public FieldCondition getFieldCondition() { return fieldCondition; } public void setFieldCondition(FieldCondition fieldCondition) { this.fieldCondition = fieldCondition; } public Precipitation getPrecipitation() { return precipitation; } public void setPrecipitation(Precipitation precipitation) { this.precipitation = precipitation; } public SkyCondition getSkyCondition() { return skyCondition; } public void setSkyCondition(SkyCondition skyCondition) { this.skyCondition = skyCondition; } public Integer getTemperature() { return temperature; } public void setTemperature(Integer temperature) { this.temperature = temperature; } public WindDirection getWindDirection() { return windDirection; } public void setWindDirection(WindDirection windDirection) { this.windDirection = windDirection; } public Integer getWindspeed() { return windspeed; } public void setWindspeed(Integer windspeed) { this.windspeed = windspeed; } public List<Play> getPlays() { return plays; } public void setPlays(List<Play> plays) { this.plays = plays; } public List<Protest> getProtests() { return protests; } public void setProtests(List<Protest> protests) { this.protests = protests; } @Override public String toString() { return retroId; } }