/* * $Id: WaitingListBMPBean.java,v 1.14.4.8 2008/08/17 05:42:28 palli Exp $ * * Copyright (C) 2001 Idega hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. * */ package is.idega.idegaweb.campus.block.application.data; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Collection; import javax.ejb.FinderException; import com.idega.block.application.data.Applicant; import com.idega.block.application.data.Application; import com.idega.block.building.data.Apartment; import com.idega.block.building.data.ApartmentSubcategory; import com.idega.data.GenericEntity; import com.idega.data.query.InCriteria; import com.idega.data.query.SelectQuery; import com.idega.data.query.Table; import com.idega.data.query.WildCardColumn; /** * * @author <a href="mailto:palli@idega.is">Pall Helgason</a> * @version 1.0 */ public class WaitingListBMPBean extends GenericEntity implements WaitingList { private static final String ENTITY_NAME = "cam_waiting_list"; private static final String COLUMN_SUBCATEGORY = "bu_subcategory_id"; private static final String COLUMN_APPLICANT = "app_applicant_id"; private static final String COLUMN_ORDER = "ordered"; private static final String COLUMN_LIST_TYPE = "list_type"; private static final String COLUMN_CHOICE_NUMBER = "choice_number"; private static final String COLUMN_LAST_CONFIRMATION = "last_confirmation"; private static final String COLUMN_NUMBER_OF_REJECTIONS = "number_of_rejections"; private static final String COLUMN_REJECT_FLAG = "reject_flag"; private static final String COLUMN_REMOVED_FROM_LIST = "removed_from_list"; private static final String COLUMN_PRIORITY_LEVEL = "priority_level"; private static final String COLUMN_ACCEPTED_DATE = "accepted_date"; private static final String COLUMN_APARTMENT = "bu_apartment_id"; private static final String COLUMN_APPLICATION = "app_application_id"; public static final String YES = "Y"; public static final String NO = "N"; private final String PRIORITY_A = "A"; private final String PRIORITY_B = "B"; private final String PRIORITY_C = "C"; private final String PRIORITY_D = "D"; private final String PRIORITY_E = "E"; public static final String TYPE_APPLICATION = "A"; public static final String TYPE_TRANSFER = "T"; public WaitingListBMPBean() { super(); } public WaitingListBMPBean(int id) throws SQLException { super(id); } public void initializeAttributes() { addAttribute(getIDColumnName()); addManyToOneRelationship(COLUMN_SUBCATEGORY, ApartmentSubcategory.class); addManyToOneRelationship(COLUMN_APPLICANT, Applicant.class); addAttribute(COLUMN_ORDER, "Order", Integer.class); addAttribute(COLUMN_LIST_TYPE, "Waiting list type", String.class); addAttribute(COLUMN_CHOICE_NUMBER, "Choice number", Integer.class); addAttribute(COLUMN_LAST_CONFIRMATION, "Last confirmation date", Timestamp.class); addAttribute(COLUMN_NUMBER_OF_REJECTIONS, "Number of rejections", Integer.class); addAttribute(COLUMN_REJECT_FLAG, "Reject flag", Boolean.class); addAttribute(COLUMN_REMOVED_FROM_LIST, "Removed from list", Boolean.class); addAttribute(COLUMN_PRIORITY_LEVEL, "Priority level", String.class); addAttribute(COLUMN_ACCEPTED_DATE, "Accepted date", Timestamp.class); addManyToOneRelationship(COLUMN_APARTMENT, Apartment.class); addManyToOneRelationship(COLUMN_APPLICATION, Application.class); setMaxLength(COLUMN_LIST_TYPE, 1); setMaxLength(COLUMN_REMOVED_FROM_LIST, 1); setMaxLength(COLUMN_PRIORITY_LEVEL, 1); } public String getEntityName() { return ENTITY_NAME; } public static String getEntityTableName() { return ENTITY_NAME; } public static String getApartmentSubcategoryColumnName() { return COLUMN_SUBCATEGORY; } public static String getApplicantIdColumnName() { return COLUMN_APPLICANT; } public static String getOrderColumnName() { return COLUMN_ORDER; } public static String getPriorityColumnName() { return COLUMN_PRIORITY_LEVEL; } public void setApartmentSubcategory(int id) { setColumn(COLUMN_SUBCATEGORY, id); } public void setApartmentSubcategory(Integer id) { setColumn(COLUMN_SUBCATEGORY, id); } public void setApartmentSubcategory(ApartmentSubcategory subcategory) { setColumn(COLUMN_SUBCATEGORY, subcategory); } public Integer getApartmentSubcategoryID() { return getIntegerColumnValue(COLUMN_SUBCATEGORY); } public ApartmentSubcategory getApartmentSubcategory() { return (ApartmentSubcategory) getColumnValue(COLUMN_SUBCATEGORY); } public void setApplicantId(int id) { setColumn(COLUMN_APPLICANT, id); } public void setApplicantId(Integer id) { setColumn(COLUMN_APPLICANT, id); } public Integer getApplicantId() { return getIntegerColumnValue(COLUMN_APPLICANT); } public Applicant getApplicant() { return (Applicant) getColumnValue(COLUMN_APPLICANT); } private void setType(String type) { setColumn(COLUMN_LIST_TYPE, type); } public void setTypeApplication() { setType(TYPE_APPLICATION); } public void setTypeTransfer() { setType(TYPE_TRANSFER); } public String getType() { return getStringColumnValue(COLUMN_LIST_TYPE); } public void setOrder(int order) { setColumn(COLUMN_ORDER, order); } public void setOrder(Integer order) { setColumn(COLUMN_ORDER, order); } public Integer getOrder() { return getIntegerColumnValue(COLUMN_ORDER); } public void setLastConfirmationDate(Timestamp date) { setColumn(COLUMN_LAST_CONFIRMATION, date); } public Timestamp getLastConfirmationDate() { return (Timestamp) getColumnValue(COLUMN_LAST_CONFIRMATION); } public void setAcceptedDate(Timestamp date) { setColumn(COLUMN_ACCEPTED_DATE, date); } public Timestamp getAcceptedDate() { return (Timestamp) getColumnValue(COLUMN_ACCEPTED_DATE); } public void setNumberOfRejections(int count) { setColumn(COLUMN_NUMBER_OF_REJECTIONS, count); } public void setNumberOfRejections(Integer count) { setColumn(COLUMN_NUMBER_OF_REJECTIONS, count); } public void incrementRejections(boolean flagAsRejected) { int count = getNumberOfRejections(); if (count < 0) count = 0; count++; setNumberOfRejections(count); setRejectFlag(flagAsRejected); } public int getNumberOfRejections() { return getIntColumnValue(COLUMN_NUMBER_OF_REJECTIONS); } public boolean getRejectFlag() { return getBooleanColumnValue(COLUMN_REJECT_FLAG); } public void setRejectFlag(boolean flag) { setColumn(COLUMN_REJECT_FLAG, flag); } public void setChoiceNumber(int choice) { setColumn(COLUMN_CHOICE_NUMBER, choice); } public void setChoiceNumber(Integer choice) { setColumn(COLUMN_CHOICE_NUMBER, choice); } public Integer getChoiceNumber() { return getIntegerColumnValue(COLUMN_CHOICE_NUMBER); } public boolean getRemovedFromList() { String removed = getStringColumnValue(COLUMN_REMOVED_FROM_LIST); if ((removed == null) || (removed.equals(NO))) { return false; } else if (removed.equals(YES)) { return true; } else { return false; } } public void setRemovedFromList(String removed) { if ((removed != null) && (removed.equalsIgnoreCase(YES))) { setColumn(COLUMN_REMOVED_FROM_LIST, YES); } else { setColumn(COLUMN_REMOVED_FROM_LIST, NO); } } public String getPriorityLevel() { return getStringColumnValue(COLUMN_PRIORITY_LEVEL); } public void setPriorityLevel(String level) { setColumn(COLUMN_PRIORITY_LEVEL, level); } public void setPriorityLevelA() { setPriorityLevel(PRIORITY_A); } public void setPriorityLevelB() { setPriorityLevel(PRIORITY_B); } public void setPriorityLevelC() { setPriorityLevel(PRIORITY_C); } public void setPriorityLevelD() { setPriorityLevel(PRIORITY_D); } public void setPriorityLevelE() { setPriorityLevel(PRIORITY_E); } public void setSamePriority(WaitingList listEntry) { setPriorityLevel(listEntry.getPriorityLevel()); } public Apartment getApartment() { return (Apartment) getColumnValue(COLUMN_APARTMENT); } public void setApartment(Apartment apartment) { setColumn(COLUMN_APARTMENT, apartment); } public Application getApplication() { return (Application) getColumnValue(COLUMN_APPLICATION); } public int getApplicationID() { return getIntColumnValue(COLUMN_APPLICATION); } public void setApplication(Application application) { setColumn(COLUMN_APPLICATION, application); } public void setApplicationID(int id) { setColumn(COLUMN_APPLICATION, id); } public Collection ejbFindByApartmentSubcategoryForApplicationType( int subcatId) throws FinderException { StringBuffer sql = new StringBuffer("select * from "); sql.append(getTableName()); sql.append(" where "); sql.append(COLUMN_SUBCATEGORY); sql.append(" = "); sql.append(subcatId); sql.append(" and "); sql.append(COLUMN_LIST_TYPE); sql.append(" = "); sql.append(TYPE_APPLICATION); sql.append(" order by "); sql.append(COLUMN_PRIORITY_LEVEL); sql.append(", "); sql.append(COLUMN_ORDER); sql.append(", "); sql.append(getIDColumnName()); return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindByApartmentSubcategoryForTransferType( int subcatId) throws FinderException { StringBuffer sql = new StringBuffer("select * from "); sql.append(getTableName()); sql.append(" where "); sql.append(COLUMN_SUBCATEGORY); sql.append(" = "); sql.append(subcatId); sql.append(" and "); sql.append(COLUMN_LIST_TYPE); sql.append(" = "); sql.append(TYPE_TRANSFER); sql.append(" order by "); sql.append(COLUMN_PRIORITY_LEVEL); sql.append(", "); sql.append(COLUMN_ORDER); sql.append(", "); sql.append(getIDColumnName()); return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindByApartmentSubcategory(int subcatId) throws FinderException { StringBuffer sql = new StringBuffer("select * from "); sql.append(getTableName()); sql.append(" where "); sql.append(COLUMN_SUBCATEGORY); sql.append(" = "); sql.append(subcatId); //EIKI ADDED to get rid of displaying people in waiting lists that shouldn't be there sql.append(" and "); sql.append("( REMOVED_FROM_LIST is null OR REMOVED_FROM_LIST='N') "); sql.append(" order by "); sql.append(COLUMN_PRIORITY_LEVEL); sql.append(", "); sql.append(COLUMN_ORDER); sql.append(", "); sql.append(getIDColumnName()); return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindNextForTransferByApartmentSubcategory( int subcatId, int orderedFrom, String setTranserferToPriorityLevel) throws FinderException { StringBuffer sql = new StringBuffer("select * from "); sql.append(getTableName()); sql.append(" where "); sql.append(COLUMN_SUBCATEGORY); sql.append(" = "); sql.append(subcatId); sql.append(" and "); sql.append(COLUMN_PRIORITY_LEVEL); sql.append(" in ('"); sql.append(setTranserferToPriorityLevel); sql.append("') and "); sql.append(COLUMN_ORDER); sql.append(" > "); sql.append(orderedFrom); sql.append(" order by "); sql.append(COLUMN_ORDER); sql.append(", "); sql.append(getIDColumnName()); return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindByApartmentSubcategory(int[] subcatId) throws FinderException { Table laddiJoli = new Table(this); SelectQuery q2 = new SelectQuery(laddiJoli); q2.addColumn(new WildCardColumn(laddiJoli)); q2 .addCriteria(new InCriteria(laddiJoli, COLUMN_SUBCATEGORY, subcatId)); return idoFindPKsByQuery(q2); } public Collection ejbFindByApplicantID(Integer ID) throws FinderException { String[] orderby = { COLUMN_PRIORITY_LEVEL, COLUMN_ORDER, getIDColumnName() }; return super.idoFindPKsByQuery(super.idoQueryGetSelect() .appendWhereEquals(COLUMN_APPLICANT, ID.intValue()) .appendOrderBy(orderby)); } public Collection ejbFindByApplication(Application application) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect() .appendWhereEquals(COLUMN_APPLICATION, application)); } public Collection ejbFindBySQL(String sql) throws FinderException { return super.idoFindPKsBySQL(sql); } public int getCountOfRecords(String sql) throws FinderException { try { return super.getIntTableValue(sql); } catch (SQLException e) { throw new FinderException(e.getMessage()); } } }