package org.openbakery.racecontrol.data;
import java.io.IOException;
import java.io.Serializable;
import java.io.Writer;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.openbakery.racecontrol.persistence.FilePersistence;
@Entity
@Table(name = "racecontrol_result")
public class Result implements Serializable {
/**
*
*/
private static final long serialVersionUID = -7159846241035255835L;
private static final int DID_NOT_PIT = 64;
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Column(name = "laps_completed")
private int lapsCompleted;
@Column(name = "confirmation_flags")
private int confirmationFlags;
@Column(name = "pit_stops")
private int pitStops;
@Column(name = "race_time")
private long raceTime;
@Column(name = "best_lap_time")
private long bestLapTime;
@Column(name = "finish_position")
private int position;
public Result() {
}
public long getBestLapTime() {
return bestLapTime;
}
public void setBestLapTime(long bestLapTime) {
this.bestLapTime = bestLapTime;
}
public int getConfirmationFlags() {
return confirmationFlags;
}
public void setConfirmationFlags(int confirmationFlags) {
this.confirmationFlags = confirmationFlags;
}
public int getLapsCompleted() {
return lapsCompleted;
}
public void setLapsCompleted(int lapsCompleted) {
this.lapsCompleted = lapsCompleted;
}
public int getPitStops() {
return pitStops;
}
public void setPitStops(int pitStops) {
this.pitStops = pitStops;
}
public long getRaceTime() {
return raceTime;
}
public void setRaceTime(long raceTime) {
this.raceTime = raceTime;
}
public int getPosition() {
return position;
}
public void setPosition(int resultPosition) {
this.position = resultPosition;
}
public String toString() {
return "Result [ racetime: " + raceTime + ", bestLapTime: " + bestLapTime + ", lapsCompleted: " + lapsCompleted + ", pit stops: "
+ pitStops + ", resultPosition: " + position + ", confirmation flags: " + confirmationFlags + "]";
}
public String toString(String lfsWorldName) {
String result = null;
if (lfsWorldName != null) {
result = lfsWorldName;
result += FilePersistence.DELIMITER;
result += Integer.toString(position);
result += FilePersistence.DELIMITER;
result += Long.toString(raceTime);
result += FilePersistence.DELIMITER;
result += Long.toString(bestLapTime);
result += FilePersistence.DELIMITER;
result += Integer.toString(lapsCompleted);
result += FilePersistence.DELIMITER;
result += Integer.toString(pitStops);
result += FilePersistence.DELIMITER;
result += Integer.toString(confirmationFlags);
}
return result;
}
public void store(String lfsWorldName, Writer writer) throws IOException {
if (lfsWorldName != null) {
writer.write(toString(lfsWorldName));
writer.write("\n");
}
}
public static void storeHeader(Writer writer) throws IOException {
writer.write("RACECONTROL-SECTION: RESULTS\n");
writer.write("#lfsWorldName" + FilePersistence.DELIMITER + "position" + FilePersistence.DELIMITER + "racetime"
+ FilePersistence.DELIMITER + "bestLapTime" + FilePersistence.DELIMITER + "lapsCompleted" + FilePersistence.DELIMITER
+ "pitStops" + FilePersistence.DELIMITER + "confirmationFlags\n");
}
public boolean isDisqualified() {
return ((confirmationFlags & DID_NOT_PIT) > 0);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}