package is.idega.idegaweb.golf.entity;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import com.idega.data.GenericEntity;
import com.idega.data.SimpleQuerier;
public class TournamentTourMemberBMPBean extends GenericEntity implements TournamentTourMember {
static final String TOURNAMENT_TOUR_ID = "TOURNAMENT_TOUR_ID";
static final String TOURNAMENT_ID = "TOURNAMENT_ID";
static final String MEMBER_ID = "MEMBER_ID";
static final String TOURNAMENT_GROUP_ID = "TOURNAMENT_GROUP_ID";
private static final String SCORE ="SCORE";
public String getEntityName() {
return "TOURNAMENT_TOUR_MEMBER";
}
public Object ejbFindByPrimaryKey(TournamentTourMemberPK primaryKey) throws FinderException {
return super.ejbFindByPrimaryKey(primaryKey);
}
public Object ejbFindByPrimaryKey(Object primaryKey) throws FinderException {
return this.ejbFindByPrimaryKey((TournamentTourMemberPK) primaryKey);
}
public Object ejbCreate(TournamentTourMemberPK primaryKey) throws CreateException {
setPrimaryKey(primaryKey);
return super.ejbCreate();
}
public Class getPrimaryKeyClass() {
return TournamentTourMemberPK.class;
}
protected boolean doInsertInCreate() {
return true;
}
public void initializeAttributes() {
addManyToOneRelationship(TOURNAMENT_TOUR_ID, TournamentTour.class);
addManyToOneRelationship(TOURNAMENT_ID, Tournament.class);
addManyToOneRelationship(TOURNAMENT_GROUP_ID, TournamentGroup.class);
addManyToOneRelationship(MEMBER_ID, Member.class);
setAsPrimaryKey(TOURNAMENT_TOUR_ID, true);
setAsPrimaryKey(TOURNAMENT_ID, true);
setAsPrimaryKey(MEMBER_ID, true);
setAsPrimaryKey(TOURNAMENT_GROUP_ID, true);
addAttribute(SCORE, "score", Float.class);
}
public void setTournamentTourID(Object id) {
setColumn(TOURNAMENT_TOUR_ID, id);
}
public TournamentTour getTournamentTour() {
return (TournamentTour) getColumnValue(TOURNAMENT_TOUR_ID);
}
public void setTournamentID(Object id) {
setColumn(TOURNAMENT_ID, id);
}
public Tournament getTournament() {
return (Tournament) getColumnValue(TOURNAMENT_ID);
}
public void setTournamentGroupID(Object id) {
setColumn(TOURNAMENT_GROUP_ID, id);
}
public TournamentGroup getTournamentGroup() {
return (TournamentGroup) getColumnValue(TOURNAMENT_GROUP_ID);
}
public void setMemberID(Object id) {
setColumn(MEMBER_ID, id);
}
public Member getMember() {
return (Member) getColumnValue(MEMBER_ID);
}
public void setScore(float score) {
setColumn(SCORE, score);
}
public float getScore() {
return getFloatColumnValue(SCORE);
}
public int[] ejbHomeGetTournamentGroupsInUse(TournamentTour tour) throws FinderException {
StringBuffer sql = new StringBuffer("select distinct tournament_group_id from tournament_tour_member where tournament_tour_id =")
.append(tour.getPrimaryKey().toString());
try {
String[] ids = SimpleQuerier.executeStringQuery(sql.toString());
if (ids != null) {
int[] iIds = new int[ids.length];
for (int i = 0; i < ids.length; i++) {
iIds[i] = Integer.parseInt(ids[i]);
}
return iIds;
}
} catch (Exception e) {
e.printStackTrace();
throw new FinderException(e.getMessage());
}
return null;
}
/**
* @return A collection of TournamentTourResultMember
*/
public Collection ejbHomeGetScoresOrdered(TournamentTour tour, Collection tournamentPKs, Collection tournamentGroupPKs) throws FinderException {
StringBuffer sql = new StringBuffer("select member_id, sum(score) as total_score from tournament_tour_member where tournament_tour_id = ")
.append(tour.getPrimaryKey().toString());
if (tournamentPKs != null && !tournamentPKs.isEmpty()) {
sql.append(" AND tournament_id in (");
Iterator iter = tournamentPKs.iterator();
while (iter.hasNext()) {
sql.append(iter.next().toString());
if (iter.hasNext()) {
sql.append(",");
}
}
sql.append(")");
}
if (tournamentGroupPKs != null && !tournamentGroupPKs.isEmpty()) {
sql.append(" AND tournament_group_id in (");
Iterator iter = tournamentGroupPKs.iterator();
while (iter.hasNext()) {
sql.append(iter.next().toString());
if (iter.hasNext()) {
sql.append(",");
}
}
sql.append(")");
}
sql.append(" group by member_id order by total_score desc");
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
Collection coll = new Vector();
try {
conn = super.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql.toString());
while (rs.next()) {
TournamentTourResultMember m = new TournamentTourResultMember();
m.setMemberID(rs.getInt("member_id"));
m.setScore(rs.getFloat("total_score"));
coll.add(m);
}
} catch (SQLException e) {
e.printStackTrace();
throw new FinderException(e.getMessage());
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
throw new FinderException("Cannot close ResultSet");
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
throw new FinderException("Cannot close Statement");
}
}
if (conn != null) {
super.freeConnection(conn);
}
}
return coll;
}
}