/*
* Created on May 19, 2003
*/
package is.idega.idegaweb.member.isi.block.reports.data;
import is.idega.idegaweb.member.util.IWMemberConstants;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.core.file.data.ICFile;
import com.idega.data.GenericEntity;
import com.idega.data.IDOException;
import com.idega.data.IDOLookupException;
import com.idega.data.IDOQuery;
import com.idega.data.IDORelationshipException;
import com.idega.data.IDOReportableEntity;
import com.idega.data.query.Column;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.data.query.WildCardColumn;
import com.idega.user.data.Group;
/**
* Description: The head data bean for the work reports. One Bean of this type
* represents a clubs yearly work report. <br>Copyright: Idega Software 2003
* <br>Company: Idega Software <br>
*
* @author <a href="mailto:eiki@idega.is">Eirikur S. Hrafnsson</a>
*/
public class WorkReportBMPBean extends GenericEntity implements WorkReport, IDOReportableEntity {
protected final static String ENTITY_NAME = "ISI_WORK_REPORT";
protected final static String COLUMN_NAME_GROUP_ID = "GROUP_ID"; //Could
// be a
// club,league
// or a
// regional
// union
protected final static String COLUMN_NAME_REGIONAL_UNION_GROUP_ID = "REG_UNI_GR_ID"; //a
// connection
// for
// a
// club
protected final static String COLUMN_NAME_GROUP_NAME = "GROUP_NAME";
protected final static String COLUMN_NAME_GROUP_TYPE = "GROUP_TYPE";
protected final static String COLUMN_NAME_GROUP_SHORT_NAME = "GROUP_SHORT_NAME";
protected final static String COLUMN_NAME_GROUP_NUMBER = "GROUP_NUMBER";
protected final static String COLUMN_NAME_GROUP_INACTIVE = "INACTIVE_GROUP";
protected final static String COLUMN_NAME_WORK_REPORT_YEAR = "YEAR_OF_REPORT";
protected final static String COLUMN_NAME_MEMBERS_DONE = "MEMB_DONE";
protected final static String COLUMN_NAME_ACCOUNT_DONE = "ACC_DONE";
protected final static String COLUMN_NAME_BOARD_DONE = "BOARD_DONE";
protected final static String COLUMN_NAME_CREATION_FROM_DATABASE_DONE = "CREATION_FROM_DATABASE_DONE";
protected final static String COLUMN_NAME_STATUS = "STATUS";
protected final static String COLUMN_NAME_SENT = "SENT";
protected final static String COLUMN_NAME_SENT_REPORT = "SENT_REPORT";
protected final static String COLUMN_NAME_MEMBER_FILE_ID = "MEMBER_PART_FILE_ID";
protected final static String COLUMN_NAME_ACCOUNT_FILE_ID = "ACCOUNT_PART_FILE_ID";
protected final static String COLUMN_NAME_BOARD_FILE_ID = "BOARD_PART_FILE_ID";
protected final static String COLUMN_NAME_NUMBER_OF_MEMBERS = "TOTAL_MEMBERS";
protected final static String COLUMN_NAME_NUMBER_OF_PLAYERS = "TOTAL_PLAYERS";
protected final static String COLUMN_NAME_NUMBER_OF_COMPETITORS = "TOTAL_COMPETITORS";
protected final static String COLUMN_NAME_REGIONAL_UNION_NAME = "REG_UNI_NAME";
protected final static String COLUMN_NAME_REGIONAL_UNION_NR = "REG_UNI_NR";
protected final static String COLUMN_NAME_REGIONAL_UNION_ABBR = "REG_UNI_ABBR";
protected final static String COLUMN_NAME_CONTINUANCE_TILL = "CONTINUANCE_TILL";
protected final static String COLUMN_NAME_CLUB_TYPE = "CLUB_TYPE";
protected final static String COLUMN_NAME_IS_IN_UMFI = "IN_UMFI";
public WorkReportBMPBean() {
super();
}
public void initializeAttributes() {
addAttribute(getIDColumnName());
addAttribute(COLUMN_NAME_GROUP_ID, "Group id of club/league/regional union", true, true, Integer.class, "many-to-one", Group.class);
addAttribute(COLUMN_NAME_REGIONAL_UNION_GROUP_ID, "Regional union group id", true, true, Integer.class, "many-to-one", Group.class);
addAttribute(COLUMN_NAME_MEMBER_FILE_ID, "Members-part file id", true, true, Integer.class, "many-to-one", ICFile.class);
addAttribute(COLUMN_NAME_ACCOUNT_FILE_ID, "Account-part file id", true, true, Integer.class, "many-to-one", ICFile.class);
addAttribute(COLUMN_NAME_BOARD_FILE_ID, "Board-part file id", true, true, Integer.class, "many-to-one", ICFile.class);
addAttribute(COLUMN_NAME_GROUP_NAME, "Group name", true, true, String.class);
addAttribute(COLUMN_NAME_GROUP_SHORT_NAME, "Group short name", true, true, String.class, 30);
addAttribute(COLUMN_NAME_GROUP_TYPE, "Group type", true, true, String.class, 30);
addAttribute(COLUMN_NAME_GROUP_NUMBER, "Group number", true, true, String.class);
addAttribute(COLUMN_NAME_WORK_REPORT_YEAR, "The year this report is valid for", true, true, Integer.class);
addAttribute(COLUMN_NAME_MEMBERS_DONE, "Is the members-part of the work report finished", true, true, Boolean.class);
addAttribute(COLUMN_NAME_ACCOUNT_DONE, "Is the account-part of the work report finished", true, true, Boolean.class);
addAttribute(COLUMN_NAME_BOARD_DONE, "Is the board-part of the work report finished", true, true, Boolean.class);
addAttribute(COLUMN_NAME_GROUP_INACTIVE, "Is the group inactive", true, true, Boolean.class);
addAttribute(COLUMN_NAME_NUMBER_OF_MEMBERS, "Total sum of members", true, true, Integer.class);
addAttribute(COLUMN_NAME_NUMBER_OF_PLAYERS, "Total sum of players", true, true, Integer.class);
addAttribute(COLUMN_NAME_NUMBER_OF_COMPETITORS, "Total sum of players", true, true, Integer.class);
addAttribute(COLUMN_NAME_CREATION_FROM_DATABASE_DONE, "Has the data been created from database?", true, true, Boolean.class);
addAttribute(COLUMN_NAME_STATUS, "Status", true, true, String.class, 30);
addAttribute(COLUMN_NAME_SENT, "Has the workreport been sent, finalized", true, true, Boolean.class);
addAttribute(COLUMN_NAME_SENT_REPORT, "Results from report check", true, true, String.class, 3500);
addAttribute(COLUMN_NAME_REGIONAL_UNION_NAME, "Regional union name", true, true, String.class);
addAttribute(COLUMN_NAME_REGIONAL_UNION_NR, "Regional union nr", true, true, String.class, 30);
addAttribute(COLUMN_NAME_REGIONAL_UNION_ABBR, "Regional union abbreviation", true, true, String.class, 30);
addAttribute(COLUMN_NAME_CONTINUANCE_TILL, "Continuance till text field", true, true, String.class, 30);
addAttribute(COLUMN_NAME_CLUB_TYPE, "Type of club, single-, multidivision or no members", true, true, String.class, 2);
addAttribute(COLUMN_NAME_IS_IN_UMFI, "Is the club in UMFI", true, true, Boolean.class);
addManyToManyRelationShip(WorkReportGroup.class); //so we can get the
// clubs related to
// leagues/divisions
addIndex("IDX_ISI_WORK_REPORT_1", COLUMN_NAME_GROUP_ID);
}
public String getEntityName() {
return ENTITY_NAME;
}
public Integer getGroupId() {
return getIntegerColumnValue(COLUMN_NAME_GROUP_ID);
}
public void setGroupId(int groupId) {
setColumn(COLUMN_NAME_GROUP_ID, groupId);
}
public void setGroupId(Integer groupId) {
setColumn(COLUMN_NAME_GROUP_ID, groupId);
}
public Integer getRegionalUnionGroupId() {
return getIntegerColumnValue(COLUMN_NAME_REGIONAL_UNION_GROUP_ID);
}
public void setRegionalUnionGroupId(int groupId) {
setColumn(COLUMN_NAME_REGIONAL_UNION_GROUP_ID, groupId);
}
public void setRegionalUnionGroupId(Integer groupId) {
setColumn(COLUMN_NAME_REGIONAL_UNION_GROUP_ID, groupId);
}
public Integer getMemberFileId() {
return getIntegerColumnValue(COLUMN_NAME_MEMBER_FILE_ID);
}
public Integer getAccountFileId() {
return getIntegerColumnValue(COLUMN_NAME_ACCOUNT_FILE_ID);
}
public Integer getBoardFileId() {
return getIntegerColumnValue(COLUMN_NAME_BOARD_FILE_ID);
}
public void setMemberFileId(int fileId) {
setColumn(COLUMN_NAME_MEMBER_FILE_ID, fileId);
}
public void setAccountFileId(int fileId) {
setColumn(COLUMN_NAME_ACCOUNT_FILE_ID, fileId);
}
public void setBoardFileId(int fileId) {
setColumn(COLUMN_NAME_BOARD_FILE_ID, fileId);
}
public String getGroupName() {
return getStringColumnValue(COLUMN_NAME_GROUP_NAME);
}
public void setGroupShortName(String name) {
setColumn(COLUMN_NAME_GROUP_SHORT_NAME, name);
}
public String getGroupShortName() {
return getStringColumnValue(COLUMN_NAME_GROUP_SHORT_NAME);
}
public void setStatus(String status) {
setColumn(COLUMN_NAME_STATUS, status);
}
public String getStatus() {
return getStringColumnValue(COLUMN_NAME_STATUS);
}
public void setContinuanceTill(String continuanceString) {
setColumn(COLUMN_NAME_CONTINUANCE_TILL, continuanceString);
}
public String getContinuanceTill() {
return getStringColumnValue(COLUMN_NAME_CONTINUANCE_TILL);
}
public void setGroupName(String name) {
setColumn(COLUMN_NAME_GROUP_NAME, name);
}
public String getGroupNumber() {
return getStringColumnValue(COLUMN_NAME_GROUP_NUMBER);
}
public void setGroupNumber(String number) {
setColumn(COLUMN_NAME_GROUP_NUMBER, number);
}
public String getRegionalUnionNumber() {
return getStringColumnValue(COLUMN_NAME_REGIONAL_UNION_NR);
}
public void setRegionalUnionNumber(String number) {
setColumn(COLUMN_NAME_REGIONAL_UNION_NR, number);
}
public String getRegionalUnionName() {
return getStringColumnValue(COLUMN_NAME_REGIONAL_UNION_NAME);
}
public void setRegionalUnionName(String name) {
setColumn(COLUMN_NAME_REGIONAL_UNION_NAME, name);
}
public String getRegionalUnionAbbreviation() {
return getStringColumnValue(COLUMN_NAME_REGIONAL_UNION_ABBR);
}
public void setRegionalUnionAbbreviation(String abbr) {
setColumn(COLUMN_NAME_REGIONAL_UNION_ABBR, abbr);
}
public Integer getYearOfReport() {
return getIntegerColumnValue(COLUMN_NAME_WORK_REPORT_YEAR);
}
public void setYearOfReport(int year) {
setColumn(COLUMN_NAME_WORK_REPORT_YEAR, year);
}
public boolean isBoardPartDone() {
return getBooleanColumnValue(COLUMN_NAME_BOARD_DONE, false);
}
public void setBoardPartDone(boolean isDone) {
setColumn(COLUMN_NAME_BOARD_DONE, isDone);
}
public void setAsInactive() {
setColumn(COLUMN_NAME_GROUP_INACTIVE, true);
}
public void setAsActive() {
setColumn(COLUMN_NAME_GROUP_INACTIVE, false);
}
public boolean isInActive() {
return getBooleanColumnValue(COLUMN_NAME_GROUP_INACTIVE, false);
}
public boolean isMembersPartDone() {
return getBooleanColumnValue(COLUMN_NAME_MEMBERS_DONE, false);
}
public void setType(String type) {
setColumn(COLUMN_NAME_CLUB_TYPE, type);
}
public String getType() {
return getStringColumnValue(COLUMN_NAME_CLUB_TYPE);
}
public void setIsInUMFI(boolean value) {
setColumn(COLUMN_NAME_IS_IN_UMFI, value);
}
public boolean isInUMFI() {
return getBooleanColumnValue(COLUMN_NAME_IS_IN_UMFI, false);
}
public void setAsSent(boolean sent) {
setColumn(COLUMN_NAME_SENT, sent);
}
public boolean isSent() {
return getBooleanColumnValue(COLUMN_NAME_SENT, false);
}
public void setSentReportText(String text) {
setColumn(COLUMN_NAME_SENT_REPORT, text);
}
public String getSentReportText() {
return getStringColumnValue(COLUMN_NAME_SENT_REPORT);
}
public void setMembersPartDone(boolean isDone) {
setColumn(COLUMN_NAME_MEMBERS_DONE, isDone);
}
public boolean isAccountPartDone() {
return getBooleanColumnValue(COLUMN_NAME_ACCOUNT_DONE, false);
}
public void setAccountPartDone(boolean isDone) {
setColumn(COLUMN_NAME_ACCOUNT_DONE, isDone);
}
public void setCreationFromDatabaseDone(boolean isDone) {
setColumn(COLUMN_NAME_CREATION_FROM_DATABASE_DONE, isDone);
}
public boolean isCreationFromDatabaseDone() {
return getBooleanColumnValue(COLUMN_NAME_CREATION_FROM_DATABASE_DONE, false);
}
public Integer ejbFindWorkReportByGroupIdAndYearOfReport(int groupId, int yearOfReport) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelect().append(getIDColumnName()).appendFrom().append(this.getEntityName());
sql.appendWhereEquals(COLUMN_NAME_GROUP_ID, groupId);
sql.appendAndEquals(COLUMN_NAME_WORK_REPORT_YEAR, yearOfReport);
return (Integer) this.idoFindOnePKByQuery(sql);
}
public Collection ejbFindAllWorkReportsByYearOrderedByRegionalUnionNumberAndGroupNumber(int yearOfReport) throws FinderException {
// IDOQuery sql = idoQuery();
// String columns[] = { COLUMN_NAME_REGIONAL_UNION_NR, COLUMN_NAME_GROUP_NUMBER };
//
// sql.appendSelectAllFrom(this.getEntityName());
// sql.appendWhereEquals(COLUMN_NAME_WORK_REPORT_YEAR, yearOfReport);
// sql.appendOrderBy(columns);
//
Table workReportTable = new Table(this, "m");
Column yearOfReportCol = new Column(workReportTable, COLUMN_NAME_WORK_REPORT_YEAR);
SelectQuery query = new SelectQuery(workReportTable);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(yearOfReportCol, MatchCriteria.EQUALS, yearOfReport));
query.addOrder(workReportTable, COLUMN_NAME_REGIONAL_UNION_NR, true);
query.addOrder(workReportTable, COLUMN_NAME_GROUP_NUMBER, true);
return idoFindPKsByQueryIgnoringCacheAndUsingLoadBalance(query,1000);
//return this.idoFindPKsByQuery(sql);
}
public Collection ejbFindAllWorkReportsByYearOrderedByGroupType(int yearOfReport) throws FinderException {
return idoFindAllIDsByColumnOrderedBySQL(COLUMN_NAME_WORK_REPORT_YEAR, yearOfReport, COLUMN_NAME_GROUP_TYPE);
}
public Collection ejbFindAllWorkReportsByYearAndRegionalUnionGroupsOrderedByRegionalUnionNameAndClubName(
int year,
Collection regionalUnionGroups)
throws FinderException {
IDOQuery sql = idoQuery();
String[] ordering = { COLUMN_NAME_REGIONAL_UNION_NAME, COLUMN_NAME_GROUP_NAME };
sql.appendSelectAllFrom(this.getEntityName()).appendWhere().appendEquals(COLUMN_NAME_WORK_REPORT_YEAR, year)
.appendAnd().appendEqualsQuoted(COLUMN_NAME_GROUP_TYPE, IWMemberConstants.GROUP_TYPE_CLUB);
if (regionalUnionGroups != null && !regionalUnionGroups.isEmpty()) {
sql.appendAnd().append(COLUMN_NAME_REGIONAL_UNION_GROUP_ID).appendInCollection(regionalUnionGroups);
}
sql.appendOrderBy(ordering);
return idoFindIDsBySQL(sql.toString());
}
/**
* @param year
* @param regionalUnionGroups
* @param clubs
* @param leagues
* @return
* @throws FinderException
*/
public Collection ejbFindAllWorkReportsByYearRegionalUnionsAndClubsOrderedByRegionalUnionNameAndClubName(
int year,
Collection regionalUnionGroups,
Collection clubs)
throws FinderException {
IDOQuery sql = idoQuery();
String[] ordering = { COLUMN_NAME_REGIONAL_UNION_NAME, COLUMN_NAME_GROUP_NAME };
String tableName = this.getEntityName();
sql.appendSelectAllFrom(tableName)
.appendWhere().appendEquals(COLUMN_NAME_WORK_REPORT_YEAR, year);
if (regionalUnionGroups != null && !regionalUnionGroups.isEmpty()) {
sql.appendAnd().append(COLUMN_NAME_REGIONAL_UNION_GROUP_ID).appendInCollection(regionalUnionGroups);
}
if (clubs != null && !clubs.isEmpty()) {
sql.appendAnd().append(COLUMN_NAME_GROUP_ID).appendInCollection(clubs);
}
sql.appendAnd().appendEqualsQuoted(COLUMN_NAME_GROUP_TYPE, IWMemberConstants.GROUP_TYPE_CLUB);
sql.appendOrderBy(ordering);
return idoFindIDsBySQL(sql.toString());
}
public int ejbHomeGetCountOfWorkReportsByStatusAndYear(String status, int year) {
IDOQuery sql = idoQuery();
sql.appendSelectCountIDFrom(ENTITY_NAME, getIDColumnName());
sql.appendWhereEqualsQuoted(COLUMN_NAME_STATUS, status).appendAndEquals(COLUMN_NAME_WORK_REPORT_YEAR, year);
try {
return idoGetNumberOfRecords(sql);
}
catch (IDOException e) {
e.printStackTrace();
return 0;
}
}
public int ejbHomeGetTotalCountOfMembersForWorkReportYear(int year) {
IDOQuery subQuery = idoQuery();
subQuery.appendSelect().append(WorkReportMemberBMPBean.COLUMN_NAME_REPORT_ID).appendFrom().append(this.getEntityName()).appendWhereEquals(COLUMN_NAME_WORK_REPORT_YEAR, year)
.appendAnd().appendEqualsQuoted(COLUMN_NAME_GROUP_TYPE, IWMemberConstants.GROUP_TYPE_CLUB);
IDOQuery sql = idoQuery();
sql.appendSelectCountIDFrom(WorkReportMemberBMPBean.ENTITY_NAME,"ISI_WR_CLUB_MEMB_ID", "memb")
.appendWhere()
.append("memb."+WorkReportMemberBMPBean.COLUMN_NAME_REPORT_ID).appendIn(subQuery);
try {
return idoGetNumberOfRecords(sql);
}
catch (IDOException e) {
e.printStackTrace();
return 0;
}
}
public int ejbHomeGetTotalCountOfPlayersForWorkReportYearWithMainboardExcluded(int year, Integer mainBoardGroupID, boolean distinct) {
IDOQuery subQuery = idoQuery();
subQuery.appendSelect().append(WorkReportMemberBMPBean.COLUMN_NAME_REPORT_ID).appendFrom().append(this.getEntityName()).appendWhereEquals(COLUMN_NAME_WORK_REPORT_YEAR, year)
.appendAnd().appendEqualsQuoted(COLUMN_NAME_GROUP_TYPE, IWMemberConstants.GROUP_TYPE_CLUB);
IDOQuery sql = idoQuery();
String IDColumnName = WorkReportMemberBMPBean.ENTITY_NAME+"_ID";
String leagueIDColumnName = "ISI_WR_GROUP_ID";
sql.appendSelectCountIDFrom(WorkReportMemberBMPBean.ENTITY_NAME, "ISI_WR_CLUB_MEMB_ID", "memb", distinct).append(",")
.append("ISI_WR_CLUB_MEMB_ISI_WR_GROUP").append(" middle ").appendWhere()
.append("memb.").append(IDColumnName).appendEqualSign().append("middle.").append(IDColumnName)
.appendAnd().append("memb."+WorkReportMemberBMPBean.COLUMN_NAME_REPORT_ID).appendIn(subQuery);
if (mainBoardGroupID != null) {
sql.appendAnd().append("middle.").append(leagueIDColumnName).appendNOTEqual().append(mainBoardGroupID);
}
try {
return idoGetNumberOfRecords(sql);
}
catch (IDOException e) {
e.printStackTrace();
return 0;
}
}
public int ejbHomeGetTotalCountOfCompetitorsForWorkReportYear(int year) {
IDOQuery sql = idoQuery();
sql.appendSelectSumFrom(COLUMN_NAME_NUMBER_OF_COMPETITORS, ENTITY_NAME)
.appendWhereEquals(COLUMN_NAME_WORK_REPORT_YEAR, year);
try {
return (int)idoGetValueFromSingleValueResultSet(sql);
}
catch (IDOException e) {
e.printStackTrace();
return 0;
}
}
public Collection getLeagues() throws IDOException {
return idoGetRelatedEntities(WorkReportGroup.class);
}
public Collection getLeagueIDs() throws IDOException {
return idoGetRelatedEntityPKs(WorkReportGroup.class);
}
public void addLeague(WorkReportGroup group) throws IDORelationshipException {
idoAddTo(group);
}
public String getGroupType() {
return getStringColumnValue(COLUMN_NAME_GROUP_TYPE);
}
public void setGroupType(String groupType) {
setColumn(COLUMN_NAME_GROUP_TYPE, groupType);
}
public int getNumberOfMembers() {
try {
WorkReportMemberHome membHome = (WorkReportMemberHome)this.getIDOHome(WorkReportMember.class);
return membHome.getCountOfMembersByWorkReport(this);
}
catch (IDOLookupException e) {
e.printStackTrace();
return 0;
}
//return getIntColumnValue(COLUMN_NAME_NUMBER_OF_MEMBERS);
}
public void setNumberOfMembers(int totalMembersCount) {
setColumn(COLUMN_NAME_NUMBER_OF_MEMBERS, totalMembersCount);
}
public int getNumberOfCompetitors() {
return getIntColumnValue(COLUMN_NAME_NUMBER_OF_COMPETITORS);
}
public void setNumberOfCompetitors(int totalCompetitorsCount) {
setColumn(COLUMN_NAME_NUMBER_OF_COMPETITORS, totalCompetitorsCount);
}
public int getNumberOfPlayers() {
try {
WorkReportMemberHome membHome = (WorkReportMemberHome)this.getIDOHome(WorkReportMember.class);
return membHome.getCountOfPlayersByWorkReport(this);
}
catch (IDOLookupException e) {
e.printStackTrace();
return 0;
}
//return getIntColumnValue(COLUMN_NAME_NUMBER_OF_PLAYERS);
}
public void setNumberOfPlayers(int totalPlayersCount) {
setColumn(COLUMN_NAME_NUMBER_OF_PLAYERS, totalPlayersCount);
}
}