package com.sap.pto.dao.entities;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.Index;
import com.sap.pto.dao.entities.Fixture.Result;
@Table(name = "Predictions")
@NamedQueries({
@NamedQuery(name = Prediction.QUERY_BYUSER, query = "SELECT p FROM Prediction p WHERE p.user = :user order by p.fixture.matchDate asc"),
@NamedQuery(name = Prediction.QUERY_BYFIXTURE, query = "SELECT p FROM Prediction p WHERE p.fixture = :fixture"),
@NamedQuery(name = Prediction.QUERY_BYUSERANDFIXTURE, query = "SELECT p FROM Prediction p WHERE p.user.id = :userId and p.fixture.id = :fixtureId"),
@NamedQuery(name = Prediction.QUERY_BYUSERSANDFIXTURES, query = "SELECT p FROM Prediction p WHERE p.user.id in :users and p.fixture.id in :fixtures order by p.fixture.matchDate asc"),
@NamedQuery(name = Prediction.QUERY_PASTBYFIXTURE, query = "SELECT p FROM Prediction p WHERE p.fixture = :fixture and p.fixture.result <> com.sap.pto.dao.entities.Fixture.Result.NONE"),
@NamedQuery(name = Prediction.QUERY_PASTBYUSER, query = "SELECT p FROM Prediction p WHERE p.user = :user and p.fixture.result <> com.sap.pto.dao.entities.Fixture.Result.NONE order by p.fixture.matchDate desc") })
@Entity
public class Prediction extends BasicEntity {
public static final String QUERY_BYUSER = "findPredictionsByUser";
public static final String QUERY_BYFIXTURE = "findPredictionsByFixture";
public static final String QUERY_PASTBYUSER = "findPastPredictionsByUser";
public static final String QUERY_PASTBYFIXTURE = "findPastPredictionsByFixture";
public static final String QUERY_BYUSERANDFIXTURE = "findPredictionByUserAndFixture";
public static final String QUERY_BYUSERSANDFIXTURES = "findPredictionsByUsersAndFixtures";
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;
@Index
private User user;
@Index
private Fixture fixture;
@Index
private Result result;
public Prediction() {
// just needed for JPA
}
public Prediction(User user, Fixture fixture, Result result) {
this.user = user;
this.fixture = fixture;
this.result = result;
}
public long getId() {
return id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Fixture getFixture() {
return fixture;
}
public void setFixture(Fixture fixture) {
this.fixture = fixture;
}
public Result getResult() {
return result;
}
public void setResult(Result result) {
this.result = result;
}
@Override
public String toString() {
return "Prediction [result=" + result + ", fixture=" + fixture + ", user=" + user + "]";
}
}