/*
* Created on Jul 6, 2004
*/
package is.idega.idegaweb.marathon.data;
import java.sql.SQLException;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.data.GenericEntity;
import com.idega.data.IDOException;
import com.idega.data.IDOQuery;
import com.idega.data.query.Column;
import com.idega.data.query.CountColumn;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.MaxColumn;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.data.query.WildCardColumn;
import com.idega.user.data.Group;
import com.idega.user.data.User;
/**
* Description: <br>
* Copyright: Idega Software 2004 <br>
* Company: Idega Software <br>
*
* @author birna
*/
public class ParticipantBMPBean extends GenericEntity implements Participant {
public ParticipantBMPBean() {
super();
}
public ParticipantBMPBean(int id) throws SQLException {
super(id);
}
public void initializeAttributes() {
addAttribute(getIDColumnName());
addManyToOneRelationship(getColumnNameRunTypeGroupID(), "Run Type", Group.class);
addManyToOneRelationship(getColumnNameRunYearGroupID(), "Run Year", Group.class);
addManyToOneRelationship(getColumnNameRunDistanceGroupID(), "Run Distance", Group.class);
addManyToOneRelationship(getColumnNameRunGroupGroupID(), "Run Group", Group.class);
addManyToOneRelationship(getColumnNameUserID(), "User ID", User.class);
addAttribute(getColumnNameRunTime(), "Run Time", true, true, Integer.class);
addAttribute(getColumnNameChipTime(), "Chip Time", true, true, Integer.class);
addAttribute(getColumnNameChipNumber(), "Chip Number", true, true, String.class);
addAttribute(getColumnNameChipBunchNumber(), "Chip bunch Number", true, true, String.class);
addAttribute(getColumnNameChipOwnershipStatus(), "Chip ownership status", true, true, String.class);
addAttribute(getColumnNameUserNationality(), "User Nationality", true, true, String.class);
addAttribute(getColumnNameTShirtSize(), "TShirt Size", true, true, String.class);
addAttribute(getColumnNameRunGroupName(), "Run Group Name", true, true, String.class);
addAttribute(getColumnNameBestTime(), "Best Time", true, true, String.class);
addAttribute(getColumnNameGoalTime(), "Goal Time", true, true, String.class);
addAttribute(getColumnNameParticipantNumber(), "Participant number", true, true, Integer.class);
addAttribute(getColumnNamePayMethod(), "Pay method", true, true, String.class);
addAttribute(getColumnNameAmountPayed(), "Amount payed", true, true, String.class);
}
public static String getEntityTableName() {
return "run";
}
public static String getColumnNameRunID() {
return "run_id";
}
public static String getColumnNameRunTypeGroupID() {
return com.idega.user.data.GroupBMPBean.getColumnNameGroupID() + "_run";
}
public static String getColumnNameRunYearGroupID() {
return com.idega.user.data.GroupBMPBean.getColumnNameGroupID() + "_year";
}
public static String getColumnNameRunDistanceGroupID() {
return com.idega.user.data.GroupBMPBean.getColumnNameGroupID() + "_distance";
}
public static String getColumnNameRunGroupGroupID() {
return com.idega.user.data.GroupBMPBean.getColumnNameGroupID() + "_group";
}
public static String getColumnNameRunTime() {
return "run_time";
}
public static String getColumnNameChipTime() {
return "chip_time";
}
public static String getColumnNameSplitTime1() {
return "split_time_1";
}
public static String getColumnNameSplitTime2() {
return "split_time_2";
}
public static String getColumnNameChipNumber() {
return "run_chip_number";
}
public static String getColumnNameChipBunchNumber() {
return "run_chip_bunch_number";
}
public static String getColumnNameChipOwnershipStatus() {
return "run_chip_ownership_status";
}
public static String getColumnNameUserNationality() {
return "user_nationality";
}
public static String getColumnNameTShirtSize() {
return "run_tShirt_size";
}
public static String getColumnNameRunGroupName() {
return "run_group_name";
}
public static String getColumnNameBestTime() {
return "run_best_time";
}
public static String getColumnNameGoalTime() {
return "run_goal_time";
}
public static String getColumnNameUserID() {
return com.idega.user.data.UserBMPBean.getColumnNameUserID();
}
public static String getColumnNameParticipantNumber() {
return "participant_number";
}
public static String getColumnNamePayMethod() {
return "pay_method";
}
public static String getColumnNameAmountPayed() {
return "payed_amount";
}
public String getIDColumnName() {
return getColumnNameRunID();
}
public String getEntityName() {
return getEntityTableName();
}
public int getRunID() {
return getIntColumnValue(getColumnNameRunID());
}
//GET
public int getRunTypeGroupID() {
return getIntColumnValue(getColumnNameRunTypeGroupID());
}
public Group getRunTypeGroup() {
return (Group) getColumnValue(getColumnNameRunTypeGroupID());
}
public int getRunYearGroupID() {
return getIntColumnValue(getColumnNameRunYearGroupID());
}
public Group getRunYearGroup() {
return (Group) getColumnValue(getColumnNameRunYearGroupID());
}
public int getRunDistanceGroupID() {
return getIntColumnValue(getColumnNameRunDistanceGroupID());
}
public Group getRunDistanceGroup() {
return (Group) getColumnValue(getColumnNameRunDistanceGroupID());
}
public int getRunGroupGroupID() {
return getIntColumnValue(getColumnNameRunGroupGroupID());
}
public Group getRunGroupGroup() {
return (Group) getColumnValue(getColumnNameRunGroupGroupID());
}
public int getRunTime() {
return getIntColumnValue(getColumnNameRunTime());
}
public int getChipTime() {
return getIntColumnValue(getColumnNameChipTime());
}
public int getSplitTime1() {
return getIntColumnValue(getColumnNameSplitTime1());
}
public int getSplitTime2() {
return getIntColumnValue(getColumnNameSplitTime2());
}
public String getChipOwnershipStatus() {
return getStringColumnValue(getColumnNameChipOwnershipStatus());
}
public User getUser() {
return (User) getColumnValue(getColumnNameUserID());
}
public int getUserID() {
return getIntColumnValue(getColumnNameUserID());
}
public String getChipNumber() {
return getStringColumnValue(getColumnNameChipNumber());
}
public String getChipBunchNumber() {
return getStringColumnValue(getColumnNameChipBunchNumber());
}
public String getUserNationality() {
return getStringColumnValue(getColumnNameUserNationality());
}
public String getTShirtSize() {
return getStringColumnValue(getColumnNameTShirtSize());
}
public String getRunGroupName() {
return getStringColumnValue(getColumnNameRunGroupName());
}
public String getBestTime() {
return getStringColumnValue(getColumnNameBestTime());
}
public String getGoalTime() {
return getStringColumnValue(getColumnNameGoalTime());
}
public int getParticipantNumber() {
return getIntColumnValue(getColumnNameParticipantNumber());
}
public String getPayMethod() {
return getStringColumnValue(getColumnNamePayMethod());
}
public String getPayedAmount() {
return getStringColumnValue(getColumnNameAmountPayed());
}
//SET
public void setRunTypeGroupID(int runTypeGroupID) {
setColumn(getColumnNameRunTypeGroupID(), runTypeGroupID);
}
public void setRunTypeGroup(Group runTypeGroup) {
setColumn(getColumnNameRunTypeGroupID(), runTypeGroup);
}
public void setRunYearGroupID(int runYearGroupID) {
setColumn(getColumnNameRunYearGroupID(), runYearGroupID);
}
public void setRunYearGroup(Group runYearGroup) {
setColumn(getColumnNameRunYearGroupID(), runYearGroup);
}
public void setRunDistanceGroupID(int runDisGroupID) {
setColumn(getColumnNameRunDistanceGroupID(), runDisGroupID);
}
public void setRunDistanceGroup(Group runDisGroup) {
setColumn(getColumnNameRunDistanceGroupID(), runDisGroup);
}
public void setRunGroupGroupID(int runGroupGroupID) {
setColumn(getColumnNameRunGroupGroupID(), runGroupGroupID);
}
public void setRunGroupGroup(Group runGroupGroup) {
setColumn(getColumnNameRunGroupGroupID(), runGroupGroup);
}
public void setRunTime(int runTime) {
setColumn(getColumnNameRunTime(), runTime);
}
public void setChipTime(int chipTime) {
setColumn(getColumnNameChipTime(), chipTime);
}
public void setSplitTime1(int splitTime) {
setColumn(getColumnNameSplitTime1(), splitTime);
}
public void setSplitTime2(int splitTime) {
setColumn(getColumnNameSplitTime2(), splitTime);
}
public void setChipOwnershipStatus(String ownershipStatus) {
setColumn(getColumnNameChipOwnershipStatus(), ownershipStatus);
}
public void setUserID(int userID) {
setColumn(getColumnNameUserID(), userID);
}
public void setUser(User user) {
setColumn(getColumnNameUserID(), user);
}
public void setChipNumber(String chipNumber) {
setColumn(getColumnNameChipNumber(), chipNumber);
}
public void setChipBunchNumber(String chipBunchNumber) {
setColumn(getColumnNameChipBunchNumber(), chipBunchNumber);
}
public void setUserNationality(String nationality) {
setColumn(getColumnNameUserNationality(), nationality);
}
public void setTShirtSize(String tShirtSize) {
setColumn(getColumnNameTShirtSize(), tShirtSize);
}
public void setRunGroupName(String runGrName) {
setColumn(getColumnNameRunGroupName(), runGrName);
}
public void setBestTime(String bestTime) {
setColumn(getColumnNameBestTime(), bestTime);
}
public void setGoalTime(String goalTime) {
setColumn(getColumnNameGoalTime(), goalTime);
}
public void setParticipantNumber(int participantNumber) {
setColumn(getColumnNameParticipantNumber(), participantNumber);
}
public void setPayMethod(String payMethod) {
setColumn(getColumnNamePayMethod(), payMethod);
}
public void setPayedAmount(String amount) {
setColumn(getColumnNameAmountPayed(),amount);
}
public Collection ejbFindAll() throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
return idoFindPKsBySQL(query.toString());
}
public int ejbHomeGetNextAvailableParticipantNumber(Object distancePK, int min, int max) throws IDOException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new MaxColumn(getColumnNameParticipantNumber()));
query.addCriteria(new MatchCriteria(table, getColumnNameRunDistanceGroupID(), MatchCriteria.EQUALS, distancePK));
query.addCriteria(new MatchCriteria(table, getColumnNameParticipantNumber(), MatchCriteria.GREATEREQUAL, min));
query.addCriteria(new MatchCriteria(table, getColumnNameParticipantNumber(), MatchCriteria.LESSEQUAL, max));
return idoGetNumberOfRecords(query.toString());
}
public int ejbHomeGetNumberOfParticipantsByDistance(Object distancePK, int min, int max) throws IDOException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new CountColumn(getColumnNameParticipantNumber()));
query.addCriteria(new MatchCriteria(table, getColumnNameRunDistanceGroupID(), MatchCriteria.EQUALS, distancePK));
query.addCriteria(new MatchCriteria(table, getColumnNameParticipantNumber(), MatchCriteria.GREATEREQUAL, min));
query.addCriteria(new MatchCriteria(table, getColumnNameParticipantNumber(), MatchCriteria.LESSEQUAL, max));
return idoGetNumberOfRecords(query.toString());
}
public int ejbHomeGetCountByDistanceAndNumber(Object distancePK, int number) throws IDOException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new CountColumn(getColumnNameParticipantNumber()));
query.addCriteria(new MatchCriteria(table, getColumnNameRunDistanceGroupID(), MatchCriteria.EQUALS, distancePK));
query.addCriteria(new MatchCriteria(table, getColumnNameParticipantNumber(), MatchCriteria.EQUALS, number));
return idoGetNumberOfRecords(query.toString());
}
public int ejbHomeGetCountByDistanceAndGroupName(Object distancePK, String groupName) throws IDOException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
query.addCriteria(new MatchCriteria(table, getColumnNameRunDistanceGroupID(), MatchCriteria.EQUALS, distancePK));
query.addCriteria(new MatchCriteria(table, getColumnNameRunGroupName(), MatchCriteria.EQUALS, groupName));
return idoGetNumberOfRecords(query);
}
public Collection ejbFindAllByDistanceAndGroup(Group distance, Group runGroup) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new Column(getIDColumnName()));
query.addCriteria(new MatchCriteria(table, getColumnNameRunDistanceGroupID(), MatchCriteria.EQUALS, distance));
if (runGroup != null) {
query.addCriteria(new MatchCriteria(table, getColumnNameRunGroupGroupID(), MatchCriteria.EQUALS, runGroup));
}
query.addOrder(table, getColumnNameRunTime(), true);
return idoFindPKsBySQL(query.toString());
}
public Integer ejbFindByUserIDandDistanceID(int userID, int distanceID) throws FinderException{
IDOQuery query = idoQueryGetSelect();
query.appendWhereEquals(getColumnNameUserID(),userID);
query.appendAndEquals(getColumnNameRunDistanceGroupID(),distanceID);
return (Integer) super.idoFindOnePKByQuery(query);
}
public Integer ejbFindByDistanceAndParticpantNumber(Object distancePK, int participantNumber) throws FinderException{
IDOQuery query = idoQueryGetSelect();
query.appendWhereEquals(getColumnNameRunDistanceGroupID(), distancePK);
query.appendAndEquals(getColumnNameParticipantNumber(), participantNumber);
return (Integer) super.idoFindOnePKByQuery(query);
}
public Integer ejbFindByUserAndRun(User user, Group run, Group year) throws FinderException{
IDOQuery query = idoQueryGetSelect();
query.appendWhereEquals(getColumnNameUserID(),user);
query.appendAndEquals(getColumnNameRunTypeGroupID(),run);
query.appendAndEquals(getColumnNameRunYearGroupID(),year);
return (Integer) super.idoFindOnePKByQuery(query);
}
public Collection ejbFindByUserAndParentGroup(int userID, int runGroupID, int yearGroupID, int distanceGroupID) throws FinderException{
IDOQuery query = idoQueryGetSelect();
query.appendWhereEquals(getColumnNameUserID(),userID);
query.appendAndEquals(getColumnNameRunTypeGroupID(),runGroupID);
// query.appendAndEquals(getColumnNameRunYearGroupID(),yearGroupID);
query.appendAndEquals(getColumnNameRunDistanceGroupID(),distanceGroupID);
return super.idoFindPKsByQuery(query);
}
public Collection ejbFindByUserID(int userID) throws FinderException{
IDOQuery query = idoQueryGetSelect();
query.appendWhereEquals(getColumnNameUserID(),userID);
return super.idoFindPKsByQuery(query);
}
public Collection ejbFindAllWithoutChipNumber(int distanceIDtoIgnore) throws FinderException {
IDOQuery query = idoQueryGetSelect();
query.appendWhere().append("("+getColumnNameChipNumber()).appendIsNull().appendOr().append(getColumnNameChipNumber()).append("= '')");
if (distanceIDtoIgnore != -1) {
query.appendAnd().append(getColumnNameRunDistanceGroupID()).appendNOTEqual().append(distanceIDtoIgnore);
}
return super.idoFindPKsByQuery(query);
}
}