package is.idega.idegaweb.campus.block.application.data; import java.sql.Date; import java.sql.SQLException; 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.application.data.ApplicationBMPBean; import com.idega.data.GenericEntity; import com.idega.data.IDOException; import com.idega.data.IDOLookup; import com.idega.data.IDORelationshipException; 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; /** * A specific application for the campus system. * * @author <a href="mailto:palli@idega.is">Pall Helgason </a> * @version 1.0 */ public class CampusApplicationBMPBean extends GenericEntity implements CampusApplication { /** * */ private static final long serialVersionUID = 1L; private static final String ENTITY_NAME = "cam_application"; private static final String COLUMN_APPLICATION = "app_application_id"; private static final String COLUMN_CURR_RESIDENCE = "cam_curr_res_id"; private static final String COLUMN_SPOUSE_OCCUPATION = "cam_spouse_occ_id"; private static final String COLUMN_STUDY_BEGIN_MONTH = "study_begin_mo"; private static final String COLUMN_STUDY_BEGIN_YEAR = "study_begin_yr"; private static final String COLUMN_STUDY_END_MONTH = "study_end_mo"; private static final String COLUMN_STUDY_END_YEAR = "study_end_yr"; private static final String COLUMN_FACULTY = "faculty"; private static final String COLUMN_STUDY_TRACK = "study_track"; private static final String COLUMN_SPOUSE_NAME = "spouse_name"; private static final String COLUMN_SPOUSE_SSN = "spouse_ssn"; private static final String COLUMN_SPOUSE_SCHOOL = "spouse_school"; private static final String COLUMN_SPOUSE_STUDY_TRACK = "spouse_study_track"; private static final String COLUMN_SPOUSE_STUDY_BEGIN_MONTH = "spouse_study_begin_mo"; private static final String COLUMN_SPOUSE_BEGIN_YEAR = "spouse_study_begin_yr"; private static final String COLUMN_SPOUSE_STUDY_END_MONTH = "spouse_study_end_mo"; private static final String COLUMN_SPOUSE_STUDY_END_YEAR = "spouse_study_end_yr"; private static final String COLUMN_CHILDREN = "children"; private static final String COLUMN_INCOME = "income"; private static final String COLUMN_SPOUSE_INCOME = "spouse_income"; private static final String COLUMN_HOUSING_FROM = "housing_from"; private static final String COLUMN_ON_WAITING_LIST = "on_waitinglist"; private static final String COLUMN_WANT_FURNITURE = "want_furniture"; private static final String COLUMN_CONTACT_PHONE = "contact_phone"; private static final String COLUMN_OTHER_INFO = "other_info"; private static final String COLUMN_EMAIL = "email"; private static final String COLUMN_PRIORITY_LEVEL = "priority_level"; private static final String COLUMN_SCHOOL = "school"; private static final String COLUMN_HAS_PET = "has_pet"; private static final String COLUMN_EXTRA_ADMIN_INFO = "extra_admin_info"; public CampusApplicationBMPBean() { super(); } public CampusApplicationBMPBean(int id) throws SQLException { super(id); } public void initializeAttributes() { addAttribute(getIDColumnName()); addOneToOneRelationship(COLUMN_APPLICATION, Application.class); addManyToOneRelationship(COLUMN_CURR_RESIDENCE, CurrentResidency.class); addManyToOneRelationship(COLUMN_SPOUSE_OCCUPATION, SpouseOccupation.class); addAttribute(COLUMN_STUDY_BEGIN_MONTH, "Study begins (month)", true, true, Integer.class); addAttribute(COLUMN_STUDY_BEGIN_YEAR, "Study begins (year)", true, true, Integer.class); addAttribute(COLUMN_STUDY_END_MONTH, "Study ends (month)", true, true, Integer.class); addAttribute(COLUMN_STUDY_END_YEAR, "Study ends (year)", true, true, Integer.class); addAttribute(COLUMN_FACULTY, "Faculty", true, true, String.class, 255); addAttribute(COLUMN_STUDY_TRACK, "Study track", true, true, String.class, 255); addAttribute(COLUMN_SPOUSE_NAME, "Spouses name", true, true, String.class, 255); addAttribute(COLUMN_SPOUSE_SSN, "Spouses SSN", true, true, String.class, 20); addAttribute(COLUMN_SPOUSE_SCHOOL, "Spouses school", true, true, String.class, 255); addAttribute(COLUMN_SPOUSE_STUDY_TRACK, "Spouses study track", true, true, String.class, 255); addAttribute(COLUMN_SPOUSE_STUDY_BEGIN_MONTH, "Spouses study begins (month)", true, true, Integer.class); addAttribute(COLUMN_SPOUSE_BEGIN_YEAR, "Spouses study begins (year)", true, true, Integer.class); addAttribute(COLUMN_SPOUSE_STUDY_END_MONTH, "Spouses study ends (month)", true, true, Integer.class); addAttribute(COLUMN_SPOUSE_STUDY_END_YEAR, "Spouses study ends (year)", true, true, Integer.class); addAttribute(COLUMN_CHILDREN, "Children info", true, true, String.class, 4000); addAttribute(COLUMN_INCOME, "Income", true, true, Integer.class); addAttribute(COLUMN_SPOUSE_INCOME, "Spouses income", true, true, Integer.class); addAttribute(COLUMN_HOUSING_FROM, "Want housing from", true, true, Date.class); addAttribute(COLUMN_ON_WAITING_LIST, "Want to be on waiting list", true, true, Boolean.class); addAttribute(COLUMN_WANT_FURNITURE, "Want to rent furniture", true, true, Boolean.class); addAttribute(COLUMN_CONTACT_PHONE, "If not reachable, call", true, true, String.class, 40); addAttribute(COLUMN_OTHER_INFO, "Other info", true, true, String.class, 4000); addAttribute(COLUMN_EXTRA_ADMIN_INFO, "Extra admin info", true, true, String.class, 4000); addAttribute(COLUMN_EMAIL, "Email", true, true, String.class, 255); addAttribute(COLUMN_PRIORITY_LEVEL, "Priority level", true, true, String.class, 1); addManyToOneRelationship(COLUMN_SCHOOL, School.class); addAttribute(COLUMN_HAS_PET, "Has pet", Boolean.class); setNullable(COLUMN_CURR_RESIDENCE, true); setNullable(COLUMN_SPOUSE_OCCUPATION, true); } public String getEntityName() { return ENTITY_NAME; } public String getApplicationIdColumnName() { return COLUMN_APPLICATION; } public Application getApplication() { return (Application) getColumnValue(COLUMN_APPLICATION); } public String getCurrentResidenceIdColumnName() { return COLUMN_CURR_RESIDENCE; } public String getSpouseOccupationIdColumnName() { return COLUMN_SPOUSE_OCCUPATION; } public String getStudyBeginMonthColumnName() { return COLUMN_STUDY_BEGIN_MONTH; } public String getStudyBeginYearColumnName() { return COLUMN_STUDY_BEGIN_YEAR; } public String getStudyEndMonthColumnName() { return COLUMN_STUDY_END_MONTH; } public String getStudyEndYearColumnName() { return COLUMN_STUDY_END_YEAR; } public String getFacultyColumnName() { return COLUMN_FACULTY; } public String getStudyTrackColumnName() { return COLUMN_STUDY_TRACK; } public String getSpouseNameColumnName() { return COLUMN_SPOUSE_NAME; } public String getSpouseSSNColumnName() { return COLUMN_SPOUSE_SSN; } public String getSpouseSchoolColumnName() { return COLUMN_SPOUSE_SCHOOL; } public String getSpouseStudyTrackColumnName() { return COLUMN_SPOUSE_STUDY_TRACK; } public String getSpouseStudyBeginMonthColumnName() { return COLUMN_SPOUSE_STUDY_BEGIN_MONTH; } public String getSpouseStudyBeginYearColumnName() { return COLUMN_SPOUSE_BEGIN_YEAR; } public String getSpouseStudyEndMonthColumnName() { return COLUMN_SPOUSE_STUDY_END_MONTH; } public String getSpouseStudyEndYearColumnName() { return COLUMN_SPOUSE_STUDY_END_YEAR; } public String getChildrenColumnName() { return COLUMN_CHILDREN; } public String getIncomeColumnName() { return COLUMN_INCOME; } public String getSpouseIncomeColumnName() { return COLUMN_SPOUSE_INCOME; } public String getHousingFromColumnName() { return COLUMN_HOUSING_FROM; } public String getOnWaitinglistColumnName() { return COLUMN_ON_WAITING_LIST; } public String getWantFurnitureColumnName() { return COLUMN_WANT_FURNITURE; } public String getContactPhoneColumnName() { return COLUMN_CONTACT_PHONE; } public String getOtherInfoColumnName() { return COLUMN_OTHER_INFO; } public String getEmailColumnName() { return COLUMN_EMAIL; } public void setAppApplicationId(int id) { setColumn(COLUMN_APPLICATION, id); } public void setAppApplicationId(Integer id) { setColumn(COLUMN_APPLICATION, id); } public Integer getAppApplicationId() { return getIntegerColumnValue(COLUMN_APPLICATION); } public Integer getCurrentResidenceId() { return getIntegerColumnValue(COLUMN_CURR_RESIDENCE); } public Integer getSpouseOccupationId() { return getIntegerColumnValue(COLUMN_SPOUSE_OCCUPATION); } public Integer getStudyBeginMonth() { return getIntegerColumnValue(COLUMN_STUDY_BEGIN_MONTH); } public Integer getStudyBeginYear() { return getIntegerColumnValue(COLUMN_STUDY_BEGIN_YEAR); } public Integer getStudyEndMonth() { return getIntegerColumnValue(COLUMN_STUDY_END_MONTH); } public Integer getStudyEndYear() { return getIntegerColumnValue(COLUMN_STUDY_END_YEAR); } public String getFaculty() { return getStringColumnValue(COLUMN_FACULTY); } public String getStudyTrack() { return getStringColumnValue(COLUMN_STUDY_TRACK); } public String getSpouseName() { return getStringColumnValue(COLUMN_SPOUSE_NAME); } public String getSpouseSSN() { return getStringColumnValue(COLUMN_SPOUSE_SSN); } public String getSpouseSchool() { return getStringColumnValue(COLUMN_SPOUSE_SCHOOL); } public String getSpouseStudyTrack() { return getStringColumnValue(COLUMN_SPOUSE_STUDY_TRACK); } public Integer getSpouseStudyBeginMonth() { return getIntegerColumnValue(COLUMN_SPOUSE_STUDY_BEGIN_MONTH); } public Integer getSpouseStudyBeginYear() { return getIntegerColumnValue(COLUMN_SPOUSE_BEGIN_YEAR); } public Integer getSpouseStudyEndMonth() { return getIntegerColumnValue(COLUMN_SPOUSE_STUDY_END_MONTH); } public Integer getSpouseStudyEndYear() { return getIntegerColumnValue(COLUMN_SPOUSE_STUDY_END_YEAR); } public String getChildren() { return getStringColumnValue(COLUMN_CHILDREN); } public Integer getIncome() { return getIntegerColumnValue(COLUMN_INCOME); } public Integer getSpouseIncome() { return getIntegerColumnValue(COLUMN_SPOUSE_INCOME); } public Date getHousingFrom() { return (Date) getColumnValue(COLUMN_HOUSING_FROM); } public boolean getOnWaitinglist() { return getBooleanColumnValue(COLUMN_ON_WAITING_LIST, true); } public boolean getWantFurniture() { return getBooleanColumnValue(COLUMN_WANT_FURNITURE, false); } public String getContactPhone() { return getStringColumnValue(COLUMN_CONTACT_PHONE); } public String getOtherInfo() { return getStringColumnValue(COLUMN_OTHER_INFO); } public String getEmail() { return getStringColumnValue(COLUMN_EMAIL); } public int getSchoolID() { return getIntColumnValue(COLUMN_SCHOOL); } public School getSchool() { return (School) getColumnValue(COLUMN_SCHOOL); } public boolean getHasPet() { return getBooleanColumnValue(COLUMN_HAS_PET, false); } public void setCurrentResidenceId(Integer id) { setColumn(COLUMN_CURR_RESIDENCE, id); } public void setCurrentResidenceId(int id) { setColumn(COLUMN_CURR_RESIDENCE, id); } public void setSpouseOccupationId(Integer id) { setColumn(COLUMN_SPOUSE_OCCUPATION, id); } public void setSpouseOccupationId(int id) { setColumn(COLUMN_SPOUSE_OCCUPATION, id); } public void setStudyBeginMonth(Integer month) { setColumn(COLUMN_STUDY_BEGIN_MONTH, month); } public void setStudyBeginMonth(int month) { setColumn(COLUMN_STUDY_BEGIN_MONTH, month); } public void setStudyBeginYear(Integer year) { setColumn(COLUMN_STUDY_BEGIN_YEAR, year); } public void setStudyBeginYear(int year) { setColumn(COLUMN_STUDY_BEGIN_YEAR, year); } public void setStudyEndMonth(Integer month) { setColumn(COLUMN_STUDY_END_MONTH, month); } public void setStudyEndMonth(int month) { setColumn(COLUMN_STUDY_END_MONTH, month); } public void setStudyEndYear(Integer year) { setColumn(COLUMN_STUDY_END_YEAR, year); } public void setStudyEndYear(int year) { setColumn(COLUMN_STUDY_END_YEAR, year); } public void setFaculty(String faculty) { setColumn(COLUMN_FACULTY, faculty); } public void setStudyTrack(String studyTrack) { setColumn(COLUMN_STUDY_TRACK, studyTrack); } public void setSpouseName(String spouseName) { setColumn(COLUMN_SPOUSE_NAME, spouseName); } public void setSpouseSSN(String ssn) { setColumn(COLUMN_SPOUSE_SSN, ssn); } public void setSpouseSchool(String school) { setColumn(COLUMN_SPOUSE_SCHOOL, school); } public void setSpouseStudyTrack(String studyTrack) { setColumn(COLUMN_SPOUSE_STUDY_TRACK, studyTrack); } public void setSpouseStudyBeginMonth(Integer month) { setColumn(COLUMN_SPOUSE_STUDY_BEGIN_MONTH, month); } public void setSpouseStudyBeginMonth(int month) { setColumn(COLUMN_SPOUSE_STUDY_BEGIN_MONTH, month); } public void setSpouseStudyBeginYear(Integer year) { setColumn(COLUMN_SPOUSE_BEGIN_YEAR, year); } public void setSpouseStudyBeginYear(int year) { setColumn(COLUMN_SPOUSE_BEGIN_YEAR, year); } public void setSpouseStudyEndMonth(Integer month) { setColumn(COLUMN_SPOUSE_STUDY_END_MONTH, month); } public void setSpouseStudyEndMonth(int month) { setColumn(COLUMN_SPOUSE_STUDY_END_MONTH, month); } public void setSpouseStudyEndYear(Integer year) { setColumn(COLUMN_SPOUSE_STUDY_END_YEAR, year); } public void setSpouseStudyEndYear(int year) { setColumn(COLUMN_SPOUSE_STUDY_END_YEAR, year); } public void setChildren(String children) { setColumn(COLUMN_CHILDREN, children); } public void setIncome(Integer income) { setColumn(COLUMN_INCOME, income); } public void setIncome(int income) { setColumn(COLUMN_INCOME, income); } public void setSpouseIncome(Integer income) { setColumn(COLUMN_SPOUSE_INCOME, income); } public void setSpouseIncome(int income) { setColumn(COLUMN_SPOUSE_INCOME, income); } public void setHousingFrom(Date from) { setColumn(COLUMN_HOUSING_FROM, from); } public void setOnWaitinglist(boolean putOnList) { setColumn(COLUMN_ON_WAITING_LIST, putOnList); } public void setWantFurniture(boolean furniture) { setColumn(COLUMN_WANT_FURNITURE, furniture); } public void setContactPhone(String contactPhone) { setColumn(COLUMN_CONTACT_PHONE, contactPhone); } public void setOtherInfo(String info) { setColumn(COLUMN_OTHER_INFO, info); } public void setEmail(String email) { setColumn(COLUMN_EMAIL, email); } public String getPriorityLevel() { return getStringColumnValue(COLUMN_PRIORITY_LEVEL); } public void setPriorityLevel(String level) { setColumn(COLUMN_PRIORITY_LEVEL, level); } public void setSchoolID(int schoolID) { setColumn(COLUMN_SCHOOL, schoolID); } public void setSchool(School school) { setColumn(COLUMN_SCHOOL, school); } public void setHasPet(boolean hasPet) { setColumn(COLUMN_HAS_PET, hasPet); } public static String getPriorityColumnName() { return COLUMN_PRIORITY_LEVEL; } public Object ejbFindByApplicationId(int id) throws javax.ejb.FinderException { StringBuffer sql = new StringBuffer("select * from "); sql.append(getTableName()); sql.append(" where "); sql.append(COLUMN_APPLICATION); sql.append(" = "); sql.append(id); return super.idoFindOnePKBySQL(sql.toString()); } public Collection ejbFindBySubjectAndStatus(Integer subjectID, String status, String order) throws FinderException { return ejbFindBySubjectAndStatus(subjectID, status, order, -1, -1); } public Collection ejbFindBySubjectAndStatus(Integer subjectID, String status, String order, int numberOfRecords, int startingIndex) throws FinderException { try { return idoFindPKsBySQL(getSQLBySubjectAndStatus(subjectID, status, order, false), numberOfRecords, startingIndex); } catch (IDORelationshipException e) { throw new FinderException(e.getMessage()); } } public int ejbHomeGetCountBySubjectAndStatus(Integer subjectID, String status) throws IDORelationshipException, IDOException { return super.idoGetNumberOfRecords(getSQLBySubjectAndStatus(subjectID, status, null, true)); } private String getSQLBySubjectAndStatus(Integer subjectID, String status, String order, boolean count) throws IDORelationshipException { Table campusApplication = new Table(this, "c"); Table application = new Table(Application.class, "a"); Table applicant = new Table(Applicant.class, "b"); SelectQuery query = new SelectQuery(campusApplication); query.setAsCountQuery(count); // query.setAsDistinct(true); if (!count) query.addColumn(new WildCardColumn(campusApplication)); else query.addColumn(new WildCardColumn()); query.addJoin(campusApplication, application); query.addJoin(application, applicant); if (subjectID != null && subjectID.intValue() > 0) { query.addCriteria(new MatchCriteria(new Column(application, ApplicationBMPBean.getSubjectIdColumnName()), MatchCriteria.EQUALS, subjectID.intValue())); } if (status != null) { query.addCriteria(new MatchCriteria(new Column(application, ApplicationBMPBean.getStatusColumnName()), MatchCriteria.EQUALS, status)); } if (order != null && !count) { if (order.equals("submitted")) { query.addOrder(application, order, true); } else { query.addOrder(applicant, order, true); } } System.out.println("query = " + query); return query.toString(); } public Collection ejbFindAll() throws FinderException { return super.idoFindAllIDsBySQL(); } public Collection ejbFindBySQL(String sql) throws FinderException { return super.idoFindPKsBySQL(sql); } public Collection getApplied() { try { return ((AppliedHome) IDOLookup.getHome(Applied.class)) .findByApplicationID((Integer) this.getPrimaryKey()); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("Error in getApplied() : " + e.getMessage()); } } public Collection ejbFindByApartmentTypeAndComplex(Integer typeId, Integer complexID) throws FinderException { StringBuffer sql = new StringBuffer("select "); sql.append(" distinct "); sql.append(getEntityName()); sql.append(".* "); sql .append(" from cam_application ca,app_application an,app_applicant aa"); sql.append(",cam_waiting_list wl ,cam_applied ad"); sql.append(" where ca.app_application_id = an.app_application_id "); sql.append(" and an.app_applicant_id = aa.app_applicant_id "); sql.append(" and aa.app_applicant_id = wl.app_applicant_id "); if (typeId != null && typeId.intValue() > 0) { sql.append(" and wl.bu_apartment_type_id = "); sql.append(typeId); } if (complexID != null && complexID.intValue() > 0) { sql.append(" and wl.bu_complex_id = "); sql.append(complexID); } return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindBySubcategoryAndComplex(Integer subcatId, Integer complexID) throws FinderException { StringBuffer sql = new StringBuffer("select "); sql.append(" distinct ca.* "); sql .append(" from cam_application ca,app_application an"); sql.append(",cam_waiting_list wl ,cam_applied ad"); sql.append(" where ca.app_application_id = an.app_application_id "); sql.append(" and an.app_applicant_id = wl.app_applicant_id "); if (subcatId != null && subcatId.intValue() > 0) { sql.append(" and wl.bu_subcategory_id = "); sql.append(subcatId); } if (complexID != null && complexID.intValue() > 0) { sql.append(" and wl.bu_complex_id = "); sql.append(complexID); } System.out.println("sql = " + sql.toString()); return super.idoFindPKsBySQL(sql.toString()); } public String getExtraAdminInfo() { return getStringColumnValue(COLUMN_EXTRA_ADMIN_INFO); } public void setExtraAdminInfo(String adminInfo) { setStringColumn(COLUMN_EXTRA_ADMIN_INFO, adminInfo); } }