/* * $Id: ContractBMPBean.java,v 1.22.4.8 2009/04/24 13:24:32 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.allocation.data; import is.idega.idegaweb.campus.block.allocation.business.ContractFinder; import java.sql.Date; 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.data.IDOBoolean; import com.idega.data.IDOException; import com.idega.data.IDOQuery; import com.idega.data.IDORelationshipException; import com.idega.user.data.User; import com.idega.util.IWTimestamp; /** * * @author <a href="mailto:palli@idega.is">Pall Helgason</a> * @version 1.0 */ public class ContractBMPBean extends com.idega.data.GenericEntity implements Contract { private static final String ENTITY_NAME = "cam_contract"; private static final String COLUMN_USER = "ic_user_id"; private static final String COLUMN_APARTMENT = "bu_apartment_id"; private static final String COLUMN_VALID_FROM = "valid_from"; private static final String COLUMN_VALID_TO = "valid_to"; private static final String COLUMN_STATUS = "status"; private static final String COLUMN_RENTED = "rented"; private static final String COLUMN_APPLICANT = "app_applicant_id"; private static final String COLUMN_RESIGN_INFO = "resign_info"; private static final String COLUMN_STATUS_DATE = "status_date"; private static final String COLUMN_MOVING_DATE = "moving_date"; private static final String COLUMN_DELIVER_DATE = "deliver_date"; private static final String COLUMN_RETURN_DATE = "return_date"; private static final String COLUMN_FILE = "ic_file_id"; private static final String COLUMN_HAS_PHONE = "has_phone"; private static final String COLUMN_PHONE_FROM_DATE = "phone_from"; private static final String COLUMN_PHONE_TO_DATE = "phone_to"; private static final String COLUMN_APPLICATION = "app_application_id"; private static final String COLUMN_DISCOUNT_PERCENTAGE = "discount_perc"; private static final String COLUMN_CHANGE_KEY_STATUS_AT = "change_key_at"; private static final String COLUMN_CHANGE_KEY_STATUS_TO = "change_key_to"; public static final String STATUS_CREATED = "C"; public static final String STATUS_PRINTED = "P"; public static final String STATUS_SIGNED = "S"; public static final String STATUS_REJECTED = "R"; public static final String STATUS_TERMINATED = "T"; public static final String STATUS_ENDED = "E"; public static final String STATUS_RESIGNED = "U"; public static final String STATUS_GARBAGE = "G"; public static final String STATUS_STORAGE = "Z"; public static final String STATUS_DENIED = "D"; public static final String STATUS_FINALIZED = "F"; public static final String STATUS_RENEWAL = "X"; public static String getStatusColumnName() { return COLUMN_STATUS; } public static String getApplicantIdColumnName() { return COLUMN_APPLICANT; } public static String getValidToColumnName() { return COLUMN_VALID_TO; } public static String getValidFromColumnName() { return COLUMN_VALID_FROM; } public static String getApartmentIdColumnName() { return COLUMN_APARTMENT; } public static String getUserIdColumnName() { return COLUMN_USER; } public static String getResignInfoColumnName() { return COLUMN_RESIGN_INFO; } public static String getStatusDateColumnName() { return COLUMN_MOVING_DATE; } public static String getRentedColumnName() { return COLUMN_RENTED; } public static String getMovingDateColumnName() { return COLUMN_MOVING_DATE; } public static String getColumnReturnDate() { return COLUMN_RETURN_DATE; } public static String getColumnDeliverDate() { return COLUMN_DELIVER_DATE; } public static String getFileColumnName() { return COLUMN_FILE; } public static String getContractEntityName() { return ENTITY_NAME; } public static String getHasPhoneColumnName() { return COLUMN_HAS_PHONE; } public static String getPhoneFromDateColumnName() { return COLUMN_PHONE_FROM_DATE; } public static String getPhoneToDateColumnName() { return COLUMN_PHONE_TO_DATE; } public ContractBMPBean() { } public ContractBMPBean(int id) throws SQLException { super(id); } public void initializeAttributes() { addAttribute(getIDColumnName()); addAttribute(COLUMN_USER, "User id", true, true, java.lang.Integer.class, "one-to-many", User.class); addAttribute(COLUMN_APARTMENT, "Apartment id", true, true, java.lang.Integer.class, "one-to-many", Apartment.class); addAttribute(COLUMN_APPLICANT, "Applicant id", true, true, java.lang.Integer.class, "one-to-one", Applicant.class); addAttribute(COLUMN_VALID_FROM, "Valid from", true, true, java.sql.Date.class); addAttribute(COLUMN_VALID_TO, "Valid to", true, true, java.sql.Date.class); addAttribute(COLUMN_STATUS_DATE, "Resign date", true, true, java.sql.Date.class); addAttribute(COLUMN_MOVING_DATE, "Moving date", true, true, java.sql.Date.class); addAttribute(COLUMN_DELIVER_DATE, "Deliver date", true, true, java.sql.Timestamp.class); addAttribute(COLUMN_RETURN_DATE, "Return date", true, true, java.sql.Timestamp.class); addAttribute(COLUMN_STATUS, "Status", true, true, java.lang.String.class, 1); addAttribute(COLUMN_RENTED, "Rented", true, true, java.lang.Boolean.class, 1); addAttribute(COLUMN_RESIGN_INFO, "Resign info", true, true, java.lang.String.class, 4000); addAttribute(COLUMN_FILE, "File id", true, true, java.lang.Integer.class); addAttribute(COLUMN_HAS_PHONE, "Has phone", true, true, java.lang.Boolean.class, 1); addAttribute(COLUMN_PHONE_FROM_DATE, "Phone from", true, true, Timestamp.class); addAttribute(COLUMN_PHONE_TO_DATE, "Phone to", true, true, Timestamp.class); addAttribute(COLUMN_DISCOUNT_PERCENTAGE, "Discount percentage", Double.class); addAttribute(COLUMN_CHANGE_KEY_STATUS_AT, "Change key status at time", Timestamp.class); addAttribute(COLUMN_CHANGE_KEY_STATUS_TO, "Change key status to", Boolean.class); addManyToOneRelationship(COLUMN_APPLICATION, Application.class); } public String getEntityName() { return ENTITY_NAME; } public void setUserId(int id) { setColumn(COLUMN_USER, id); } public void setUserId(Integer id) { setColumn(COLUMN_USER, id); } public Integer getUserId() { return getIntegerColumnValue(COLUMN_USER); } public User getUser() { return (User) getColumnValue(COLUMN_USER); } public void setApplicantId(int id) { setColumn(COLUMN_APPLICANT, id); } public void setApplicantId(Integer id) { setColumn(COLUMN_APPLICANT, id); } public Integer getFileId() { return getIntegerColumnValue(COLUMN_FILE); } public void setFileId(int id) { setColumn(COLUMN_FILE, id); } public void setFileId(Integer id) { setColumn(COLUMN_FILE, id); } public Integer getApplicantId() { return getIntegerColumnValue(COLUMN_APPLICANT); } public Applicant getApplicant() { return (Applicant) getColumnValue(COLUMN_APPLICANT); } public void setApartmentId(int id) { setColumn(COLUMN_APARTMENT, id); } public void setApartmentId(Integer id) { setColumn(COLUMN_APARTMENT, id); } public Integer getApartmentId() { return getIntegerColumnValue(COLUMN_APARTMENT); } public Apartment getApartment() { return (Apartment) getColumnValue(COLUMN_APARTMENT); } public void setValidFrom(Date date) { setColumn(COLUMN_VALID_FROM, date); } public Date getValidFrom() { return (Date) getColumnValue(COLUMN_VALID_FROM); } public void setValidTo(Date date) { setColumn(COLUMN_VALID_TO, date); } public Date getValidTo() { return (Date) getColumnValue(COLUMN_VALID_TO); } public void setMovingDate(Date date) { setColumn(COLUMN_MOVING_DATE, date); } public Date getMovingDate() { return (Date) getColumnValue(COLUMN_MOVING_DATE); } public void setStatusDate(Date date) { setColumn(COLUMN_STATUS_DATE, date); } public Date getStatusDate() { return (Date) getColumnValue(COLUMN_STATUS_DATE); } public void setDeliverTime(Timestamp stamp) { setColumn(COLUMN_DELIVER_DATE, stamp); } public Timestamp getDeliverTime() { return (Timestamp) getColumnValue(COLUMN_DELIVER_DATE); } public void setReturnTime(Timestamp stamp) { setColumn(COLUMN_RETURN_DATE, stamp); } public Timestamp getReturnTime() { return (Timestamp) getColumnValue(COLUMN_RETURN_DATE); } public String getResignInfo() { return getStringColumnValue(COLUMN_RESIGN_INFO); } public void setResignInfo(String info) { setColumn(COLUMN_RESIGN_INFO, info); } public boolean getIsRented() { return getBooleanColumnValue(COLUMN_RENTED); } public void setIsRented(boolean rented) { setColumn(COLUMN_RENTED, rented); } public void setEnded() { setIsRented(false); setReturnTime(IWTimestamp.getTimestampRightNow()); } public void setStarted() { // setIsRented(true); setStarted(IWTimestamp.getTimestampRightNow()); } public void setStarted(Timestamp when) { setIsRented(true); setDeliverTime(when); } public void setStatus(String status) throws IllegalStateException { if ((status.equalsIgnoreCase(STATUS_CREATED)) || (status.equalsIgnoreCase(STATUS_ENDED)) || (status.equalsIgnoreCase(STATUS_REJECTED)) || (status.equalsIgnoreCase(STATUS_SIGNED)) || (status.equalsIgnoreCase(STATUS_TERMINATED)) || (status.equalsIgnoreCase(STATUS_RESIGNED)) || (status.equalsIgnoreCase(STATUS_GARBAGE)) || (status.equalsIgnoreCase(STATUS_STORAGE)) || (status.equalsIgnoreCase(STATUS_DENIED)) || (status.equalsIgnoreCase(STATUS_PRINTED)) || (status.equalsIgnoreCase(STATUS_FINALIZED))) { setColumn(COLUMN_STATUS, status); setStatusDate(new Date(System.currentTimeMillis())); } else throw new IllegalStateException("Undefined state : " + status); } public String getStatus() { return (String) getColumnValue(COLUMN_STATUS); } public void setHasPhone(boolean hasPhone) { if (hasPhone) { setColumn(COLUMN_PHONE_FROM_DATE, IWTimestamp.getTimestampRightNow()); } else { setColumn(COLUMN_PHONE_TO_DATE, IWTimestamp.getTimestampRightNow()); } setColumn(getHasPhoneColumnName(), hasPhone); } public boolean getHasPhone() { return getBooleanColumnValue(COLUMN_HAS_PHONE, false); } public Timestamp getPhoneFromDate() { return getTimestampColumnValue(COLUMN_PHONE_FROM_DATE); } public Timestamp getPhoneToDate() { return getTimestampColumnValue(COLUMN_PHONE_TO_DATE); } public void setStatusCreated() { setStatus(STATUS_CREATED); } public void setStatusEnded() { setStatus(STATUS_ENDED); } public void setStatusRejected() { setStatus(STATUS_REJECTED); } public void setStatusSigned() { setStatus(STATUS_SIGNED); } public void setStatusTerminated() { setStatus(STATUS_TERMINATED); } public void setStatusPrinted() { setStatus(STATUS_PRINTED); } public void setStatusResigned() { setStatus(STATUS_RESIGNED); } public void setStatusGarbage() { setStatus(STATUS_GARBAGE); } public void setStatusDenied() { setStatus(STATUS_DENIED); } public void setStatusStorage() { setStatus(STATUS_STORAGE); } public void setStatusFinalized() { setStatus(STATUS_FINALIZED); } 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 double getDiscountPercentage() { return getDoubleColumnValue(COLUMN_DISCOUNT_PERCENTAGE, 0.0d); } public void setDiscountPercentage(double percentage) { setColumn(COLUMN_DISCOUNT_PERCENTAGE, percentage); } public Timestamp getChangeKeyStatusAt() { return getTimestampColumnValue(COLUMN_CHANGE_KEY_STATUS_AT); } public void setChangeKeyStatusAt(Timestamp at) { setColumn(COLUMN_CHANGE_KEY_STATUS_AT, at); } public boolean getChangeKeyStatusTo() { return getBooleanColumnValue(COLUMN_CHANGE_KEY_STATUS_TO); } public void setChangeKeyStatusTo(boolean to) { setColumn(COLUMN_CHANGE_KEY_STATUS_TO, to); } //ejb public Collection ejbFindByApplicantID(Integer ID) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApplicantIdColumnName(), ID.intValue())); } public Collection ejbFindByUserID(Integer ID) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getUserIdColumnName(), ID.intValue())); } public Collection ejbFindByApartmentAndUser(Integer AID, Integer UID) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getUserIdColumnName(), UID.intValue()).appendAndEquals(getApartmentIdColumnName(), AID.intValue())); } public Collection ejbFindByUserAndRented(Integer ID, Boolean rented) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getUserIdColumnName(), ID.intValue()).appendAndEqualsQuoted( getRentedColumnName(), IDOBoolean.toString(rented.booleanValue()))); } public Collection ejbFindByApartmentID(Integer ID) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApartmentIdColumnName(), ID.intValue()).appendOrderByDescending(getValidToColumnName())); } public Collection ejbFindByApartmentAndStatus(Integer ID, String status) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApartmentIdColumnName(), ID.intValue()).appendAndEqualsQuoted(getStatusColumnName(), status).appendOrderByDescending( getValidToColumnName())); } public Collection ejbFindByApartmentAndStatus(Integer ID, String[] status) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApartmentIdColumnName(), ID.intValue()).appendAnd().append(getStatusColumnName()).appendInArrayWithSingleQuotes(status).appendOrderByDescending( getValidToColumnName())); } public Collection ejbFindByApplicantAndStatus(Integer ID, String status) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApplicantIdColumnName(), ID.intValue()).appendAndEqualsQuoted(getStatusColumnName(), status)); } public Collection ejbFindByApplicantAndStatus(Integer ID, String status[]) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApplicantIdColumnName(), ID.intValue()).appendAnd().append(getStatusColumnName()).appendInArrayWithSingleQuotes(status)); } public Collection ejbFindByApplicantAndRented(Integer ID, Boolean rented) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApplicantIdColumnName(), ID.intValue()).appendAndEqualsQuoted(getRentedColumnName(), IDOBoolean.toString(rented.booleanValue()))); } public Collection ejbFindByApartmentAndRented(Integer ID, Boolean rented) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApartmentIdColumnName(), ID.intValue()).appendAndEqualsQuoted(getRentedColumnName(), IDOBoolean.toString(rented.booleanValue()))); } public Collection ejbFindByStatus(String status) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEqualsQuoted(getStatusColumnName(), status)); } public Collection ejbFindAll() throws FinderException { return super.idoFindAllIDsBySQL(); } public Collection ejbFindBySQL(String sql) throws FinderException { return super.idoFindPKsBySQL(sql); } public java.util.Collection ejbFindByApplicant(Integer ID) throws FinderException { return super.idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEquals(getApplicantIdColumnName(), ID.intValue())); } public Collection ejbFindByApplicantInCreatedStatus(Integer applicant) throws FinderException { return ejbFindByApplicantAndStatus(applicant, STATUS_CREATED); } public Collection ejbFindByApplicantInCreatedAndPrintedStatus(Integer applicant) throws FinderException { String statuses[] = {STATUS_CREATED, STATUS_PRINTED}; return ejbFindByApplicantAndStatus(applicant, statuses); } public Date ejbHomeGetLastValidToForApartment(Integer apartment) throws FinderException { if (apartment != null) { try { return getDateTableValue("select max(c.valid_to) from cam_contract c where c.bu_apartment_id = " + apartment); } catch (SQLException e) { throw new FinderException(e.getMessage()); } } return null; } public Date ejbHomeGetLastValidFromForApartment(Integer apartment) throws FinderException { if (apartment != null) { try { return getDateTableValue("select max(c.valid_from) from cam_contract c where c.bu_apartment_id = " + apartment); } catch (SQLException e) { throw new FinderException(e.getMessage()); } } return null; } public Collection ejbFindBySearchConditions(String status, Integer complexId, Integer buildingId, Integer floorId, Integer typeId, Integer categoryId, int order, int returnResultSize, int startingIndex) throws FinderException { String sql = getSearchConditionSQL(status, complexId, buildingId, floorId, typeId, categoryId, order, false); return super.idoFindPKsBySQL(sql.toString(), returnResultSize, startingIndex); } public int ejbHomeCountBySearchConditions(String status, Integer complexId, Integer buildingId, Integer floorId, Integer typeId, Integer categoryId, int order) throws IDOException { String sql = getSearchConditionSQL(status, complexId, buildingId, floorId, typeId, categoryId, order, true); return idoGetNumberOfRecords(sql); } private String getSearchConditionSQL(String status, Integer complexId, Integer buildingId, Integer floorId, Integer typeId, Integer categoryId, int order, boolean count) { StringBuffer sql = new StringBuffer("select "); if (count) sql.append(" count( * )"); else sql.append(" con.* "); sql.append(" from bu_apartment a,bu_floor f,bu_building b,app_applicant p "); sql.append(",bu_complex c,bu_aprt_type t,bu_aprt_sub_cat sub, bu_aprt_cat y,cam_contract con "); sql.append(" where a.bu_aprt_type_id = t.bu_aprt_type_id "); sql.append(" and y.bu_aprt_cat_id = sub.aprt_cat"); sql.append(" and sub.bu_aprt_sub_cat_id = t.bu_aprt_subcat"); sql.append(" and a.bu_floor_id = f.bu_floor_id "); sql.append(" and f.bu_building_id = b.bu_building_id "); sql.append(" and b.bu_complex_id = c.bu_complex_id "); sql.append(" and a.bu_apartment_id = con.bu_apartment_id"); sql.append(" and con.app_applicant_id = p.app_applicant_id"); if (status != null && !"".equals(status)) { sql.append(" and con.status = '"); sql.append(status); sql.append("' "); } if (complexId != null && complexId.intValue() > 0) { sql.append(" and c.bu_complex_id = "); sql.append(complexId); } if (buildingId != null && buildingId.intValue() > 0) { sql.append(" and b.bu_building_id = "); sql.append(buildingId); } if (floorId != null && floorId.intValue() > 0) { sql.append(" and f.bu_floor_id = "); sql.append(floorId); } if (typeId != null && typeId.intValue() > 0) { sql.append(" and t.bu_aprt_type_id = "); sql.append(typeId); } if (categoryId != null && categoryId.intValue() > 0) { sql.append(" and y.bu_aprt_cat_id = "); sql.append(categoryId); } if (!count && order >= 0) { sql.append(" order by "); sql.append(ContractFinder.getOrderString(order)); } return sql.toString(); } public Collection ejbFindByComplexAndBuildingAndApartmentName(Integer complexID, Integer buildingID, String apartmentName) throws FinderException { StringBuffer sql = new StringBuffer("select con.* "); sql.append(" from bu_apartment a, bu_floor f, bu_building b, cam_contract con "); sql.append(" where a.bu_floor_id = f.bu_floor_id "); sql.append(" and f.bu_building_id = b.bu_building_id "); sql.append(" and a.bu_apartment_id = con.bu_apartment_id"); sql.append(" and b.bu_complex_id = "); sql.append(complexID); sql.append(" and b.bu_building_id = "); sql.append(buildingID); sql.append(" and a.name = '"); sql.append(apartmentName); sql.append("'"); return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindByBuildingAndApartmentName(Integer buildingID, String apartmentName) throws FinderException { StringBuffer sql = new StringBuffer("select con.* "); sql.append(" from bu_apartment a, bu_floor f, bu_building b, cam_contract con "); sql.append(" where a.bu_floor_id = f.bu_floor_id "); sql.append(" and f.bu_building_id = b.bu_building_id "); sql.append(" and a.bu_apartment_id = con.bu_apartment_id"); sql.append(" and b.bu_building_id = "); sql.append(buildingID); sql.append(" and a.name = '"); sql.append(apartmentName); sql.append("'"); return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindByApartmentName(String apartmentName) throws FinderException { StringBuffer sql = new StringBuffer("select con.* "); sql.append(" from bu_apartment a, cam_contract con "); sql.append(" where a.bu_apartment_id = con.bu_apartment_id"); sql.append(" and a.name = '"); sql.append(apartmentName); sql.append("'"); return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindByComplexAndRented(Integer complexID, boolean rented) throws FinderException { StringBuffer sql = new StringBuffer("select con.* "); sql.append(" from bu_apartment a, bu_floor f, bu_building b, cam_contract con "); sql.append(" where a.bu_floor_id = f.bu_floor_id "); sql.append(" and f.bu_building_id = b.bu_building_id "); sql.append(" and a.bu_apartment_id = con.bu_apartment_id"); sql.append(" and b.bu_complex_id = "); sql.append(complexID); if (rented) { sql.append(" and con.rented = 'Y'"); } else { sql.append(" and (con.rented is null or con.rented = 'N')"); } return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbFindByPersonalID(String ID) throws FinderException { StringBuffer sql = new StringBuffer("select c.* "); sql.append(" from cam_contract c, app_applicant a where "); sql.append(" c.app_applicant_id = a.app_applicant_id and a.ssn like '"); sql.append(ID); sql.append("'"); return super.idoFindPKsBySQL(sql.toString()); } public Collection ejbHomeGetUnsignedApplicants(String personalID) throws FinderException { try { StringBuffer sql = new StringBuffer("select a.* "); sql.append(" from app_applicant a "); sql.append(" where a.app_applicant_id "); sql.append(" not in (select c.app_applicant_id from cam_contract c) "); sql.append(" and ssn like '"); sql.append(personalID); sql.append("'"); return idoGetRelatedEntitiesBySQL(Applicant.class, sql.toString()); } catch (IDORelationshipException e) { throw new FinderException(e.getMessage()); } } public Collection ejbFindByStatusAndValidBeforeDate(String status, Date date) throws FinderException { IDOQuery query = super.idoQueryGetSelect().appendWhereEqualsWithSingleQuotes(getStatusColumnName(), status).appendAnd().append( getValidToColumnName()).appendLessThanOrEqualsSign().append(date); return idoFindPKsByQuery(query); } public Collection ejbFindByStatusAndChangeDate(String status, Date date) throws FinderException { return idoFindPKsByQuery(super.idoQueryGetSelect().appendWhereEqualsWithSingleQuotes(getStatusColumnName(), status).appendAnd().append(getStatusDateColumnName()).appendLessThanOrEqualsSign().append(date)); } private IDOQuery getQueryByStatusAndOverlapPeriod(String[] status, Date from, Date to) { IDOQuery query = super.idoQueryGetSelect().appendWhere(); query.append(getStatusColumnName()); query.appendInArrayWithSingleQuotes(status); query.appendAnd(); query.appendOverlapPeriod(getValidFromColumnName(), getValidToColumnName(), from, to); return query; } public Collection ejbFindByStatusAndOverLapPeriodMultiples(String[] status, Date from, Date to) throws FinderException { IDOQuery outerQuery = getQueryByStatusAndOverlapPeriod(status, from, to); IDOQuery innerQuery = super.idoQuery().appendSelect().append(getUserIdColumnName()); innerQuery.appendFrom().append(this.getTableName()); innerQuery.appendWhere(); innerQuery.append(getStatusColumnName()); innerQuery.appendInArrayWithSingleQuotes(status); innerQuery.appendAnd(); innerQuery.appendOverlapPeriod(getValidFromColumnName(), getValidToColumnName(), from, to); innerQuery.appendGroupBy(getUserIdColumnName()); innerQuery.appendHaving().appendCount(getIDColumnName()).appendGreaterThanSign().append(1); outerQuery.appendAnd().append(getUserIdColumnName()).appendIn(innerQuery); outerQuery.appendOrderBy(getUserIdColumnName() + "," + getIDColumnName()); return super.idoFindPKsByQuery(outerQuery); } public Collection ejbFindByUserAndStatus(Integer userId, String[] status) throws FinderException { return super.idoFindPKsByQuery(idoQueryGetSelect().appendWhereEquals(getUserIdColumnName(), userId).appendAnd().append( getStatusColumnName()).appendInArrayWithSingleQuotes(status)); } public Collection ejbFindByUserAndStatus(Integer userId, String status) throws FinderException { return super.idoFindPKsByQuery(idoQueryGetSelect().appendWhereEquals(getUserIdColumnName(), userId).appendAndEqualsQuoted( getStatusColumnName(), status)); } public Collection ejbFindByUserAndStatusAndRentedBeforeDate(Integer userId, String status, Date date) throws FinderException { return super.idoFindPKsByQuery(idoQueryGetSelect().appendWhereEquals(getUserIdColumnName(), userId).appendAndEqualsQuoted( getStatusColumnName(), status).appendAnd().append(this.COLUMN_VALID_FROM).appendLessThanOrEqualsSign().append(date)); } public Collection ejbFindAllWithKeyChangeDateSet() throws FinderException { IDOQuery query = super.idoQueryGetSelect(); query.appendWhere(); query.append(COLUMN_CHANGE_KEY_STATUS_AT); query.appendIsNotNull(); return super.idoFindPKsByQuery(query); } }