//idega 2000 - Tryggvi Larusson /* *Copyright 2000 idega.is All Rights Reserved. */ package is.idega.idegaweb.golf.entity; import java.sql.*; import com.idega.data.*; import com.idega.util.*; /** *@author <a href="mailto:tryggvi@idega.is">Tryggvi Larusson</a> *@version 1.2 */ public class TournamentBMPBean extends GenericEntity implements Tournament{ public void initializeAttributes(){ addAttribute(getIDColumnName()); addAttribute("name","Nafn m�ts",true,true,"java.lang.String"); addAttribute("registration_type","Skr�ningarform",false,false,"java.lang.String"); addAttribute("union_id","Haldi� � vegum",true,true,"java.lang.Integer","many-to-one","is.idega.idegaweb.golf.entity.Union"); addAttribute("field_id","V�llur",true,true,"java.lang.Integer","many-to-one","is.idega.idegaweb.golf.entity.Field"); addAttribute("registration_online","Leyfa r�st�maskr�ningu � netinu",true,true,"java.lang.Boolean"); addAttribute("group_tournament","Flokkam�t",true,true,"java.lang.Boolean"); addAttribute("open_tournament","Opi� m�t",true,true,"java.lang.Boolean"); addAttribute("tournament_type_id","Keppnisform",true,true,"java.lang.Integer","many-to-one","is.idega.idegaweb.golf.entity.TournamentType"); addAttribute("registration_fee","Skr�ningargjald",true,true,"java.lang.Integer"); addAttribute("creation_date","B�i� til",false,false,"java.sql.Timestamp"); addAttribute("start_time","M�t byrjar",true,true,"java.sql.Timestamp"); addAttribute("number_of_days","Lengd � d�gum",true,true,"java.lang.Integer"); addAttribute("rounds","Fj�ldi hringja",true,true,"java.lang.Integer"); addAttribute("holes","Fj�ldi hola � hring",true,true,"java.lang.Integer"); addAttribute("last_registration_date","S��asti skr�ningardagur",true,true,"java.sql.Timestamp"); addAttribute("tournament_form_id","Tegund",true,true,"java.lang.Integer","many-to-one","is.idega.idegaweb.golf.entity.TournamentForm"); addAttribute("extra_text","Uppl�singatexti",false,false,"java.lang.String",4000); // added 3.4.2001 addAttribute("direct_registration","Skr� beint � r�stima",true,true,"java.lang.Boolean"); addAttribute("number_in_group","Fj�ldi � holli",true,true,"java.lang.Integer"); addAttribute("interval","Bi� milli r�shopa",true,true,"java.lang.Integer"); // added 25.4.2001 addAttribute("FIRST_REGISTRATION_DATE","Fyrsti skr�ningardagur",true,true,"java.sql.Timestamp"); addAttribute("max_handicap","H�marksforgj�f karla",true,true,"java.lang.Float"); // added 27.4.2001 addAttribute("max_female_handicap","H�marksforgj�f kvenna",true,true,"java.lang.Float"); // added 15.6.2001 addAttribute("closed","Gert upp",true,true,"java.lang.Boolean"); addAttribute("closed_date","Gert upp hven�r",true,true,"java.sql.Timestamp"); // added 18.5.2006 addAttribute("number_in_tournament_group", "fjoldi i hop", Integer.class); // added 31.9.2001 addManyToManyRelationShip(TournamentGroup.class,"tournament_tournament_group"); addManyToManyRelationShip(TeeColor.class,"tournament_tee_color"); addManyToManyRelationShip(Member.class,"tournament_member"); } public void setDefaultValues(){ setCreationDate(com.idega.util.IWTimestamp.getTimestampRightNow()); com.idega.util.IWTimestamp start = com.idega.util.IWTimestamp.RightNow(); start.addDays(2); start.setHour(9); start.setMinute(0); start.setSecond(0); setStartTime(start.getTimestamp()); com.idega.util.IWTimestamp end = com.idega.util.IWTimestamp.RightNow(); end.addDays(1); end.setHour(23); end.setMinute(59); end.setSecond(59); setLastRegistrationDate(end.getTimestamp()); setNumberOfHoles(18); setMaxHandicap(36); setMaxFemaleHandicap(36); setIsClosed(false); } public String getEntityName(){ return "tournament"; } public void setName(String name){ setColumn("name",name); } public String getName(){ return (String) getColumnValue("name"); } public void setMinHandicap(int minHandicap){ setColumn("handicap_min",new Integer(minHandicap)); } public int getMinHandicap(){ return getIntColumnValue("handicap_min"); } public void setMaxHandicap(float maxHandicap){ setColumn("max_handicap",maxHandicap); } public float getMaxHandicap(){ return getFloatColumnValue("max_handicap"); } public void setMaxFemaleHandicap(float maxFemaleHandicap){ setColumn("max_female_handicap",maxFemaleHandicap); } public float getFemaleMaxHandicap(){ return getFloatColumnValue("max_female_handicap"); } public void setRegistrationForm(String form){ setColumn("registration_form",form); } public String getRegistrationForm(){ return (String) getColumnValue("registration_form"); } public void setRegistrationType(String type){ setColumn("registration_type",type); } public String getRegistrationType(){ return (String) getColumnValue("registration_type"); } public void setTournamentTypeID(int type_id){ //System.out.println("Kalla a setTournamentType i Tournament"); setColumn("tournament_type_id",type_id); } public void setTournamentType(TournamentType type){ //System.out.println("Kalla a setTournamentType i Tournament"); setColumn("tournament_type_id",type); } public TournamentType getTournamentType()throws SQLException{ return (TournamentType)getColumnValue("tournament_type_id"); } public int getTournamentTypeId(){ return getIntColumnValue("tournament_type_id"); } public void setTournamentFormID(int form_id){ //System.out.println("Kalla a setTournamentType i Tournament"); setColumn("tournament_form_id",form_id); } public void setRegistrationOnline(boolean registration_online) { setColumn("registration_online",registration_online); } public boolean getIfRegistrationOnline() { return getBooleanColumnValue("registration_online"); } public void setTournamentForm(TournamentForm form){ //System.out.println("Kalla a setTournamentType i Tournament"); setColumn("tournament_form_id",form); } public TournamentForm getTournamentForm()throws SQLException{ return (TournamentForm)getColumnValue("tournament_form_id"); } public int getTournamentFormId(){ return getIntColumnValue("tournament_form_id"); } public void setUnion(Union union){ setColumn("union_id",new Integer(union.getID())); } public Union getUnion()throws SQLException{ return (Union) getColumnValue("union_id"); } //�essi f�ll mega fara �egar tryggvi er b�inn a� laga addColumnName public void setUnionId(Integer unionID){ setColumn("union_id", unionID); } public void setUnionId(int unionID){ setColumn("union_id", unionID); } public int getUnionId(){ return getIntColumnValue("union_id"); } public void setFieldId(Integer field_id){ setColumn("field_id", field_id); } public int getFieldId(){ return getIntColumnValue("field_id"); } ///////////////////////////////////////////////////////////////////// public void setField(Field field){ setColumn("field_id",field); } public Field getField()throws SQLException{ return (Field)getColumnValue("field_id"); } public void setCreationDate(Timestamp creationDate){ setColumn("creation_date",creationDate); } public Timestamp getCreationDate(){ return (Timestamp) getColumnValue("creation_date"); } public void setLastRegistrationDate(Timestamp registrationDate){ setColumn("last_registration_date",registrationDate); } public Timestamp getLastRegistrationDate(){ return (Timestamp) getColumnValue("last_registration_date"); } public void setFirstRegistrationDate(Timestamp firstRegistrationDate){ setColumn("FIRST_REGISTRATION_DATE",firstRegistrationDate); } public Timestamp getFirstRegistrationDate(){ return (Timestamp) getColumnValue("FIRST_REGISTRATION_DATE"); } public void setStartTime(Timestamp startTime){ setColumn("start_time",startTime); } public Timestamp getStartTime(){ return (Timestamp) getColumnValue("start_time"); } public void setEndTime(Timestamp endTime){ setColumn("end_time",endTime); } public Timestamp getEndTime(){ return (Timestamp) getColumnValue("end_time"); } public void setNumberOfRounds(int number){ setColumn("rounds",number); } public int getNumberOfRounds(){ return getIntColumnValue("rounds"); } public void setNumberOfDays(int number){ setColumn("number_of_days",number); } public int getNumberOfDays(){ return getIntColumnValue("number_of_days"); } public void setRegistrationFee(int fee){ setColumn("registration_fee",fee); } public int getRegistrationFee(){ return getIntColumnValue("registration_fee"); } public void setGroupTournament(boolean ifGroupTournament){ setColumn("group_tournament",ifGroupTournament); } public boolean getIfGroupTournament(){ return getBooleanColumnValue("group_tournament"); } public void setOpenTournament(boolean ifOpenTournament){ setColumn("open_tournament",ifOpenTournament); } public boolean getIfOpenTournament(){ return getBooleanColumnValue("open_tournament"); } public TournamentRound[] getTournamentRounds()throws SQLException{ return (TournamentRound[]) ((TournamentRound) IDOLookup.instanciateEntity(TournamentRound.class)).findAllByColumnEqualsOrdered("tournament_id",Integer.toString(this.getID()),"ROUND_NUMBER"); } public TournamentGroup[] getTournamentGroups()throws SQLException{ return (TournamentGroup[]) findRelated((TournamentGroup) IDOLookup.instanciateEntity(TournamentGroup.class)); } public void setNumberOfHoles(int holes){ setColumn("holes",holes); } public int getNumberOfHoles(){ return getIntColumnValue("holes"); } public void setExtraText(String text){ setColumn("extra_text",text); } public String getExtraText(){ return getStringColumnValue("extra_text"); } public Tournament[] getMostRecentTournaments(int number)throws SQLException{ //idegaTimestamp stamp = new idegaTimestamp(idegaTimestamp.getTimestampRightNow()); //return (Tournament[])findAll("select * from "+this.getTableName()+" where start_time > '"+stamp.toSQLDateString()+"'"); return (Tournament[])this.findAll("select * from "+this.getTableName()+" order by start_time"); } public Tournament[] getForthcomingTournaments()throws SQLException{ IWTimestamp stamp = new IWTimestamp(IWTimestamp.getTimestampRightNow()); return (Tournament[])findAll("select * from "+this.getTableName()+" where start_time > '"+stamp.toSQLDateString()+"'"); } public boolean isTournamentFinished(){ return getIsClosed(); /* idegaTimestamp stampNow = new idegaTimestamp(idegaTimestamp.getTimestampRightNow()); idegaTimestamp stampTournBegin = new idegaTimestamp(getStartTime()); return stampNow.isLaterThan(stampTournBegin); */ } public boolean isTournamentOngoing(){ IWTimestamp stampNow = IWTimestamp.RightNow(); IWTimestamp stampTournBegin = new IWTimestamp(getStartTime()); IWTimestamp stampTournEnd = new IWTimestamp(getStartTime()); stampTournEnd.addDays(this.getNumberOfDays()); //System.out.println("stampNow.isLaterThan(stampTournBegin):"+stampNow.isLaterThan(stampTournBegin)+"stampTournBegin:"+stampTournBegin.getTimestamp().toString()); //System.out.println("stampTournEnd.isLaterThan(stampNow):"+stampTournEnd.isLaterThan(stampNow)+"stampTournEnd:"+stampTournEnd.getTimestamp().toString()); return stampNow.isLaterThan(stampTournBegin) && stampTournEnd.isLaterThan(stampNow); } public TeeColor[] getTeeColors()throws SQLException{ return (TeeColor[])findRelated((TeeColor) IDOLookup.instanciateEntity(TeeColor.class)); } public void insert()throws SQLException{ super.insert(); if (getNumberOfRounds() != -1){ //System.out.println("Er i insert i Tournament"); //System.out.println("rounds:"+getNumberOfRounds()); for (int i = 1; i <= getNumberOfRounds();i++){ //System.out.println("Er i insert i Tournament og round med i: "+i); IWTimestamp stamp = new IWTimestamp(getStartTime()); stamp.addDays(i+1); TournamentRound round = (TournamentRound) IDOLookup.instanciateEntity(TournamentRound.class); round.setRoundNumber(i); round.setTournament(this); round.setRoundDate(stamp.getTimestamp()); round.setIncreaseHandicap(true); round.setDecreaseHandicap(true); round.setRoundEndDate(stamp.getTimestamp()); round.insert(); } } } /** * Delete the tournament if there is no registered data to it - Throws an SQLException if there is data (scorecards) registered to it */ public void delete()throws SQLException{ deleteWithAllData(); } /** * Deletes all data including scorecards,registrations etc. */ public void deleteAllData() throws SQLException { try { ((Member) IDOLookup.instanciateEntity(Member.class)).reverseRemoveFrom(this); } catch (Exception e) {e.printStackTrace(System.err);} try { TeeColor[] teeColors = this.getTeeColors(); for (int i = 0; i < teeColors.length; i++) { this.removeFrom(teeColors[i]); } } catch (SQLException sql) {sql.printStackTrace(System.err);} try { TournamentRound[] rounds = getTournamentRounds(); if(rounds!=null){ for(int i=0;i<rounds.length;i++){ try { Connection conn = this.getConnection(); Statement Stmt = conn.createStatement(); Stmt.executeUpdate("DELETE FROM TOURNAMENT_ROUND_STARTINGTIME where TOURNAMENT_ROUND_ID = "+rounds[i].getID()); Stmt.close(); freeConnection(conn); } catch (Exception e) {System.err.println("Tournament : deleteAllData() : Deleting tournament_round_startingtime");} rounds[i].delete(); } } } catch (Exception e) {e.printStackTrace(System.err);} try { StartingtimeFieldConfig[] sFieldConfig = (StartingtimeFieldConfig[]) ((StartingtimeFieldConfig) IDOLookup.instanciateEntity(StartingtimeFieldConfig.class)).findAllByColumnEquals("tournament_id",this.getID()+"") ; for (int i = 0; i < sFieldConfig.length; i++) { sFieldConfig[i].delete(); } } catch (Exception e) {e.printStackTrace(System.err);} try { TournamentGroup group = (TournamentGroup) IDOLookup.instanciateEntity(TournamentGroup.class); group.reverseRemoveFrom(this); } catch (Exception e) {e.printStackTrace(System.err);} try{ ((TeeColor) IDOLookup.instanciateEntity(TeeColor.class)).removeFrom(this); } catch (Exception e) {e.printStackTrace(System.err);} try { try { Connection conn = this.getConnection(); Statement Stmt = conn.createStatement(); Stmt.executeUpdate("DELETE FROM TOURNAMENT_STARTINGTIME where TOURNAMENT_ID = "+this.getID()); Stmt.close(); freeConnection(conn); } catch (Exception e) {System.err.println("Tournament : deleteAllData() : Deleting tournament_startingtime");} Startingtime[] stimes = (Startingtime[]) ((Startingtime) IDOLookup.instanciateEntity(Startingtime.class)).findAll("Select startingtime.* from startingtime ,tournament_startingtime where startingtime.startingtime_id = tournament_startingtime.startingtime_id AND tournament_id = "+this.getID()); if (stimes != null) { for (int i = 0; i < stimes.length; i++) { stimes[i].removeFrom(this); stimes[i].delete(); } } } catch (Exception e) {e.printStackTrace(System.err);} } /** * Deletes the tournament with all data including scorecards,registrations etc. */ public void deleteWithAllData()throws SQLException{ deleteAllData(); super.delete(); } public int getTournamentGroupId(Member member)throws SQLException{ return getTournamentGroupId(member.getID()); } public int getTournamentGroupId(int member_id)throws SQLException{ Connection conn= null; Statement Stmt= null; int returner = -1; try{ conn = this.getConnection(); Stmt=conn.createStatement(); ResultSet RS = Stmt.executeQuery("Select TOURNAMENT_GROUP_ID from TOURNAMENT_MEMBER where TOURNAMENT_ID = "+this.getID()+" AND MEMBER_ID ="+member_id); if (RS.next()) { returner = RS.getInt("TOURNAMENT_GROUP_ID"); } } finally{ if (Stmt != null){ Stmt.close(); } if (conn != null){ freeConnection(conn); } } return returner; } public int getPosition(Member member) throws SQLException { return getPosition(member.getID()); } public int getPosition(int member_id)throws SQLException{ Connection conn= null; Statement Stmt= null; int returner = -1; try{ conn = this.getConnection(); Stmt=conn.createStatement(); ResultSet RS = Stmt.executeQuery("Select TOURNAMENT_POSITION from TOURNAMENT_MEMBER where TOURNAMENT_ID = "+this.getID()+" AND MEMBER_ID ="+member_id); if (RS.next()) { returner = RS.getInt("TOURNAMENT_POSITION"); } } finally{ if (Stmt != null){ Stmt.close(); } if (conn != null){ freeConnection(conn); } } return returner; } public int getDismissal(Member member) throws SQLException { return getDismissal(member.getID()); } public int getDismissal(int member_id)throws SQLException{ Connection conn= null; Statement Stmt= null; int returner = 0; try{ conn = this.getConnection(); Stmt=conn.createStatement(); ResultSet RS = Stmt.executeQuery("Select DISMISSAL_ID from TOURNAMENT_MEMBER where TOURNAMENT_ID = "+this.getID()+" AND MEMBER_ID ="+member_id); if (RS.next()) { returner = RS.getInt("DISMISSAL_ID"); } } finally{ if (Stmt != null){ Stmt.close(); } if (conn != null){ freeConnection(conn); } } return returner; } public void setPosition(Member member, int position) throws SQLException{ setPosition(member.getID(),position); } public void setPosition(int member_id, int position) throws SQLException{ Connection conn= null; Statement Stmt= null; try{ conn = this.getConnection(); Stmt=conn.createStatement(); Stmt.executeUpdate("UPDATE TOURNAMENT_MEMBER set tournament_position = "+position+" where TOURNAMENT_ID = "+this.getID()+" AND MEMBER_ID ="+member_id); } finally{ if (Stmt != null){ Stmt.close(); } if (conn != null){ freeConnection(conn); } } } public void setDismissal(Member member, int dismissalID) throws SQLException{ setDismissal(member.getID(),dismissalID); } public void setDismissal(int member_id, int dismissalID) throws SQLException{ Connection conn= null; Statement Stmt= null; try{ conn = this.getConnection(); Stmt=conn.createStatement(); Stmt.executeUpdate("UPDATE TOURNAMENT_MEMBER set dismissal_id = "+dismissalID+" where TOURNAMENT_ID = "+this.getID()+" AND MEMBER_ID ="+member_id); } finally{ if (Stmt != null){ Stmt.close(); } if (conn != null){ freeConnection(conn); } } } public int getTournamentMemberUnionId(Member member)throws SQLException{ return getTournamentMemberUnionId(member.getID()); } /** * @deprecated */ public int getTournamentMemberUnionId(int member_id)throws SQLException{ Connection conn= null; int returner = -1; try { conn = this.getConnection(); if (conn != null) { returner = getTournamentMemberUnionId(conn,member_id); } } catch (Exception e) {} finally{ if (conn != null){ freeConnection(conn); } } return returner; } public int getTournamentMemberUnionId(Connection conn, int member_id)throws SQLException{ int returner = -1; ResultSet RS = null; Statement Stmt = null; try{ Stmt = conn.createStatement(); RS = Stmt.executeQuery("Select UNION_ID from TOURNAMENT_MEMBER where TOURNAMENT_ID = "+this.getID()+" AND MEMBER_ID ="+member_id); if (RS.next()) { returner = RS.getInt("UNION_ID"); } } finally{ if (Stmt != null){ Stmt.close(); } if (RS != null) { RS.close(); } } return returner; } public boolean isDirectRegistration() { return getBooleanColumnValue("direct_registration"); } public void setIsDirectRegistration(boolean is_direct) { setColumn("direct_registration",is_direct); } public int getNumberInGroup() { return getIntColumnValue("number_in_group"); } public void setNumberInGroup(int number_in_group) { setColumn("number_in_group",number_in_group); } public int getInterval() { return getIntColumnValue("interval"); } public void setInterval(int interval) { setColumn("interval",interval); } public void setIsClosed(boolean isClosed) { setColumn("closed",isClosed); } public boolean getIsClosed() { return getBooleanColumnValue("closed"); } public void setClosedDate(Timestamp closedDate){ setColumn("closed_date",closedDate); } public Timestamp getClosedDate() { return (Timestamp) getColumnValue("closed_date"); } public void setNumberInTournamentGroup(int number) { setColumn("number_in_tournament_group", number); } public int getNumberInTournamentGroup() { return getIntColumnValue("number_in_tournament_group"); } //todo : //change the update function so it changes as well the tournament_round table }