// idega 2000 - �gir package is.idega.idegaweb.golf.entity; import java.sql.Date; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Collection; import javax.ejb.FinderException; import com.idega.data.GenericEntity; import com.idega.data.IDOException; import com.idega.data.IDOLookup; import com.idega.data.query.Column; import com.idega.data.query.CountColumn; import com.idega.data.query.MatchCriteria; import com.idega.data.query.Order; import com.idega.data.query.SelectQuery; import com.idega.data.query.SumColumn; import com.idega.data.query.Table; public class ScorecardBMPBean extends GenericEntity implements Scorecard { private final String YES = "Y"; private final String NO = "N"; public void initializeAttributes() { addAttribute(getIDColumnName()); addManyToOneRelationship(COLUMN_MEMBER, Member.class); addManyToOneRelationship(COLUMN_TOURNAMENT_ROUND, TournamentRound.class); addManyToOneRelationship(COLUMN_FIELD, Field.class); addManyToOneRelationship(COLUMN_TEE_COLOR, TeeColor.class); addAttribute(COLUMN_SCORECARD_DATE, "Date", true, true, Timestamp.class); addAttribute(COLUMN_TOTAL_POINTS, "Total points", true, true, Integer.class); addAttribute(COLUMN_HANDICAP_BEFORE, "Handicap before", true, true, Float.class); addAttribute(COLUMN_HANDICAP_AFTER, "Handicap after", true, true, Float.class); addAttribute(COLUMN_SLOPE, "Slope", true, true, Integer.class); addAttribute(COLUMN_COURSE_RATING, "Course rating", true, true, Float.class); addAttribute(COLUMN_HANDICAP_CORRECTION, "Handicap correction", true, true, Boolean.class); addAttribute(COLUMN_UPDATE_HANDICAP, "Update handicap", true, true, Boolean.class); addAttribute(COLUMN_FOREIGN_ROUND, "Foreign round", true, true, Boolean.class); addAttribute(COLUMN_FOREIGN_COURSE_NAME, "Foreign course name", true, true, "java.lang.String"); setMaxLength(COLUMN_FOREIGN_ROUND, 1); setMaxLength(COLUMN_FOREIGN_COURSE_NAME, 255); addIndex("IDX_SCORECARD_1", COLUMN_MEMBER); addIndex("IDX_SCORECARD_2", new String[] {COLUMN_MEMBER, COLUMN_SCORECARD_DATE}); addIndex("IDX_SCORECARD_3", new String[] {COLUMN_MEMBER, COLUMN_TOURNAMENT_ROUND, COLUMN_SCORECARD_DATE}); addIndex("IDX_SCORECARD_4", new String[] {COLUMN_TOURNAMENT_ROUND}); addIndex("IDX_SCORECARD_5", new String[] {COLUMN_MEMBER, COLUMN_TOURNAMENT_ROUND}); } public String getEntityName() { return TABLE_NAME; } public int getMemberId() { return getIntColumnValue(COLUMN_MEMBER); } public void setMemberId(int memberId) { setColumn(COLUMN_MEMBER, memberId); } public int getTournamentRoundId() { return getIntColumnValue(COLUMN_TOURNAMENT_ROUND); } public void setTournamentRoundId(int tournamentRoundId) { setColumn(COLUMN_TOURNAMENT_ROUND, tournamentRoundId); } public TournamentRound getTournamentRound() { return (TournamentRound) getColumnValue(COLUMN_TOURNAMENT_ROUND); } public void setTournamentRound(TournamentRound tournamentRound) { setColumn(COLUMN_TOURNAMENT_ROUND, tournamentRound); } public Timestamp getScorecardDate() { return (Timestamp) getColumnValue(COLUMN_SCORECARD_DATE); } public void setScorecardDate(Timestamp scorecardDate) { setColumn(COLUMN_SCORECARD_DATE, scorecardDate); } public int getTotalPoints() { return getIntColumnValue(COLUMN_TOTAL_POINTS); } public void setTotalPoints(int totalPoints) { setColumn(COLUMN_TOTAL_POINTS, totalPoints); } public float getHandicapBefore() { return getFloatColumnValue(COLUMN_HANDICAP_BEFORE); } public void setHandicapBefore(float handicapBefore) { setColumn(COLUMN_HANDICAP_BEFORE, handicapBefore); } public float getHandicapAfter() { return getFloatColumnValue(COLUMN_HANDICAP_AFTER); } public void setHandicapAfter(float handicapAfter) { setColumn(COLUMN_HANDICAP_AFTER, handicapAfter); } public void setMember(Member member) { setColumn(COLUMN_MEMBER, member); } public Member getMember() { return (Member) getColumnValue(COLUMN_MEMBER); } public int getSlope() { return getIntColumnValue(COLUMN_SLOPE); } public void setSlope(int slope) { setColumn(COLUMN_SLOPE, slope); } public float getCourseRating() { return getFloatColumnValue(COLUMN_COURSE_RATING); } public void setCourseRating(float courseRating) { setColumn(COLUMN_COURSE_RATING, courseRating); } public int getFieldID() { return getIntColumnValue(COLUMN_FIELD); } public Field getField() { return (Field) getColumnValue(COLUMN_FIELD); } public void setFieldID(int fieldID) { setColumn(COLUMN_FIELD, fieldID); } public int getTeeColorID() { return getIntColumnValue(COLUMN_TEE_COLOR); } public void setTeeColorID(int teeColorID) { setColumn(COLUMN_TEE_COLOR, teeColorID); } public boolean getHandicapCorrection() { return getBooleanColumnValue(COLUMN_HANDICAP_CORRECTION, false); } public void setHandicapCorrection(boolean correction) { setColumn(COLUMN_HANDICAP_CORRECTION, correction); } public boolean getUpdateHandicap() { return getBooleanColumnValue(COLUMN_UPDATE_HANDICAP, false); } public void setUpdateHandicap(boolean handicap) { setColumn(COLUMN_UPDATE_HANDICAP, handicap); } public void delete() throws SQLException { ((Stroke) IDOLookup.instanciateEntity(Stroke.class)).deleteMultiple("scorecard_id", Integer.toString(this.getID())); ((Statistic) IDOLookup.instanciateEntity(Statistic.class)).deleteMultiple("scorecard_id", Integer.toString(this.getID())); super.delete(); } public void setForeignRound(boolean foreign) { setColumn(COLUMN_FOREIGN_ROUND, foreign); } public boolean getForeignRound() { return getBooleanColumnValue(COLUMN_FOREIGN_ROUND, false); } public void setForeignCourseName(String name) { setColumn(COLUMN_FOREIGN_COURSE_NAME, name); } public String getForeignCourseName() { return this.getStringColumnValue(COLUMN_FOREIGN_COURSE_NAME); } public int ejbHomeGetCountRoundsPlayedByMember(int member) throws IDOException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); Column column = new Column(table, COLUMN_SCORECARD_DATE); query.addColumn(new CountColumn(table, this.getIDColumnName())); query.addCriteria(new MatchCriteria(table, COLUMN_MEMBER, MatchCriteria.EQUALS, member)); query.addCriteria(new MatchCriteria(table, COLUMN_HANDICAP_CORRECTION, MatchCriteria.EQUALS, false)); query.addCriteria(new MatchCriteria(column, true)); return this.idoGetNumberOfRecords(query.toString()); } public int ejbHomeGetSumPointsByMember(int member) throws IDOException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); Column column = new Column(table, COLUMN_SCORECARD_DATE); query.addColumn(new SumColumn(table, COLUMN_TOTAL_POINTS)); query.addCriteria(new MatchCriteria(table, COLUMN_MEMBER, MatchCriteria.EQUALS, member)); query.addCriteria(new MatchCriteria(column, true)); return this.idoGetNumberOfRecords(query.toString()); } public int ejbHomeGetNumberOfRoundsAfterDateByMember(int member, Date scorecardDate) throws IDOException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); query.addColumn(new CountColumn(table, getIDColumnName())); query.addCriteria(new MatchCriteria(table, COLUMN_MEMBER, MatchCriteria.EQUALS, member)); query.addCriteria(new MatchCriteria(table, COLUMN_SCORECARD_DATE, MatchCriteria.GREATEREQUAL, scorecardDate)); query.addCriteria(new MatchCriteria(table, COLUMN_HANDICAP_CORRECTION, MatchCriteria.EQUALS, false)); return this.idoGetNumberOfRecords(query.toString()); } public Integer ejbFindBestRoundAfterDateByMember(int member, Date scorecardDate) throws FinderException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); query.addColumn(table, getIDColumnName()); query.addCriteria(new MatchCriteria(table, COLUMN_MEMBER, MatchCriteria.EQUALS, member)); query.addCriteria(new MatchCriteria(table, COLUMN_SCORECARD_DATE, MatchCriteria.GREATEREQUAL, scorecardDate)); query.addOrder(table, COLUMN_TOTAL_POINTS, false); return (Integer) this.idoFindOnePKBySQL(query.toString()); } public Integer ejbFindLastPlayedRoundByMember(int member) throws FinderException { Table table = new Table(this); Column column = new Column(table, COLUMN_SCORECARD_DATE); SelectQuery query = new SelectQuery(table); query.addColumn(table, getIDColumnName()); query.addCriteria(new MatchCriteria(table, COLUMN_MEMBER, MatchCriteria.EQUALS, member)); query.addCriteria(new MatchCriteria(column, true)); query.addOrder(new Order(column, false)); return (Integer) this.idoFindOnePKBySQL(query.toString()); } public Collection ejbFindAllByGolfer(int memberID, Date dateFrom, Date dateTo) throws FinderException { Table table = new Table(this); SelectQuery query = new SelectQuery(table); query.addColumn(table, getIDColumnName()); query.addCriteria(new MatchCriteria(table, COLUMN_MEMBER, MatchCriteria.EQUALS, memberID)); if (dateFrom != null) { query.addCriteria(new MatchCriteria(table, COLUMN_SCORECARD_DATE, MatchCriteria.GREATEREQUAL, dateFrom)); } if (dateTo != null) { query.addCriteria(new MatchCriteria(table, COLUMN_SCORECARD_DATE, MatchCriteria.LESSEQUAL, dateTo)); } query.addCriteria(new MatchCriteria(table.getColumn(COLUMN_SCORECARD_DATE), true)); query.addOrder(table, COLUMN_SCORECARD_DATE, false); return idoFindPKsBySQL(query.toString()); } }