/* * Created on 26.3.2003 */ package se.idega.idegaweb.commune.care.data; import java.sql.Date; import java.util.Collection; import javax.ejb.FinderException; import com.idega.block.contract.data.Contract; import com.idega.block.school.data.School; import com.idega.block.school.data.SchoolClassBMPBean; import com.idega.block.school.data.SchoolClassMember; import com.idega.block.school.data.SchoolClassMemberBMPBean; import com.idega.core.file.data.ICFile; import com.idega.data.GenericEntity; import com.idega.data.IDOException; import com.idega.data.IDOQuery; import com.idega.data.IDORelationshipException; import com.idega.data.query.MatchCriteria; import com.idega.data.query.SelectQuery; import com.idega.data.query.Table; import com.idega.user.data.User; import com.idega.util.IWTimestamp; import com.idega.util.TimePeriod; /** * The main class of a childcare contract. Is thought to be an extension of the standard Contract object (com.idega.block.contract.data.Contract). * @author laddi */ public class ChildCareContractBMPBean extends GenericEntity implements ChildCareContract { public static final String ENTITY_NAME = "comm_childcare_archive"; public static final String COLUMN_CHILD_ID = "child_id"; public static final String COLUMN_APPLICATION_ID = "application_id"; public final static String COLUMN_CONTRACT_ID = "contract_id"; public static final String COLUMN_CONTRACT_FILE_ID = "contract_file_id"; public static final String COLUMN_SCH_CLASS_MEMBER = "sch_class_member_id"; public static final String COLUMN_CREATED_DATE = "created_date"; public static final String COLUMN_VALID_FROM_DATE = "valid_from_date"; public static final String COLUMN_TERMINATED_DATE = "terminated_date"; public static final String COLUMN_CARE_TIME = "care_time_string"; public static final String COLUMN_CARE_TIME_OLD = "care_time"; public static final String COLUMN_WORK_SITUATION = "work_situation"; public static final String COLUMN_INVOICE_RECEIVER = "invoice_receiver"; /** * @see com.idega.data.IDOLegacyEntity#getEntityName() */ public String getEntityName() { return ENTITY_NAME; } /** * @see com.idega.data.IDOLegacyEntity#initializeAttributes() */ public void initializeAttributes() { addAttribute(getIDColumnName()); addAttribute(COLUMN_CREATED_DATE,"",true,true,java.sql.Date.class); addAttribute(COLUMN_VALID_FROM_DATE,"",true,true,java.sql.Date.class); addAttribute(COLUMN_TERMINATED_DATE,"",true,true,java.sql.Date.class); addAttribute(COLUMN_CARE_TIME_OLD,"",true,true,java.lang.Integer.class); addAttribute(COLUMN_CARE_TIME,"",true,true,java.lang.String.class); addManyToOneRelationship(COLUMN_CHILD_ID,User.class); addManyToOneRelationship(COLUMN_APPLICATION_ID,ChildCareApplication.class); addOneToOneRelationship(COLUMN_CONTRACT_FILE_ID,ICFile.class); addOneToOneRelationship(COLUMN_CONTRACT_ID,Contract.class); addOneToOneRelationship(COLUMN_SCH_CLASS_MEMBER,SchoolClassMember.class); addManyToOneRelationship(COLUMN_WORK_SITUATION,EmploymentType.class); addManyToOneRelationship(COLUMN_INVOICE_RECEIVER,User.class); } public Date getCreatedDate() { return (Date) getColumnValue(COLUMN_CREATED_DATE); } public Date getValidFromDate() { return (Date) getColumnValue(COLUMN_VALID_FROM_DATE); } public Date getTerminatedDate() { return (Date) getColumnValue(COLUMN_TERMINATED_DATE); } public String getCareTime() { String careTime = getStringColumnValue(COLUMN_CARE_TIME); if (careTime == null) { int oldCareTime = getIntColumnValue(COLUMN_CARE_TIME_OLD); if (oldCareTime != -1) { careTime = String.valueOf(oldCareTime); } } return careTime; } public int getChildID() { return getIntColumnValue(COLUMN_CHILD_ID); } public User getChild() { return (User) getColumnValue(COLUMN_CHILD_ID); } public int getApplicationID() { return getIntColumnValue(COLUMN_APPLICATION_ID); } public ChildCareApplication getApplication() { return (ChildCareApplication) getColumnValue(COLUMN_APPLICATION_ID); } public int getContractID() { return getIntColumnValue(COLUMN_CONTRACT_ID); } public Contract getContract() { return (Contract) getColumnValue(COLUMN_CONTRACT_ID); } public int getContractFileID() { return getIntColumnValue(COLUMN_CONTRACT_FILE_ID); } public ICFile getContractFile() { return (ICFile) getColumnValue(COLUMN_CONTRACT_FILE_ID); } public SchoolClassMember getSchoolClassMember() { return (SchoolClassMember) getColumnValue(COLUMN_SCH_CLASS_MEMBER); } public int getSchoolClassMemberId() { return getIntColumnValue(COLUMN_SCH_CLASS_MEMBER); } public int getEmploymentTypeId(){ return getIntColumnValue(COLUMN_WORK_SITUATION); } public EmploymentType getEmploymentType() { return (EmploymentType) getColumnValue(COLUMN_WORK_SITUATION); } public int getInvoiceReceiverID() { return getIntColumnValue(COLUMN_INVOICE_RECEIVER); } public User getInvoiceReceiver() { return (User) getColumnValue(COLUMN_INVOICE_RECEIVER); } public void setCreatedDate(Date createdDate) { setColumn(COLUMN_CREATED_DATE, createdDate); } public void setValidFromDate(Date validFromDate) { setColumn(COLUMN_VALID_FROM_DATE, validFromDate); } public void setTerminatedDate(Date terminatedDate) { setColumn(COLUMN_TERMINATED_DATE, terminatedDate); } public void setCareTime(String careTime) { setColumn(COLUMN_CARE_TIME, careTime); } public void setChildID(int childID) { setColumn(COLUMN_CHILD_ID, childID); } public void setChild(User child) { setColumn(COLUMN_CHILD_ID, child); } public void setApplicationID(int applicationID) { setColumn(COLUMN_APPLICATION_ID, applicationID); } public void setApplication(ChildCareApplication application) { setColumn(COLUMN_APPLICATION_ID, application); } public void setContractID(int contractID) { setColumn(COLUMN_CONTRACT_ID, contractID); } public void setContract(Contract contract) { setColumn(COLUMN_CONTRACT_ID, contract); } public void setContractFileID(int contractFileID) { setColumn(COLUMN_CONTRACT_FILE_ID, contractFileID); } public void setContractFile(ICFile contractFile) { setColumn(COLUMN_CONTRACT_FILE_ID, contractFile); } public void setSchoolClassMemberID(int schoolClassMemberID) { setColumn(COLUMN_SCH_CLASS_MEMBER, schoolClassMemberID); } public void setSchoolClassMember(SchoolClassMember schoolClassMember) { setColumn(COLUMN_SCH_CLASS_MEMBER, schoolClassMember); } public void setTerminationDateAsNull(boolean setAsNull) { if (setAsNull) removeFromColumn(COLUMN_TERMINATED_DATE); } public void setEmploymentType(int employmentTypeID) { setColumn(COLUMN_WORK_SITUATION, employmentTypeID); } public void setInvoiceReceiverID(int invoiceReciverID) { setColumn(COLUMN_INVOICE_RECEIVER, invoiceReciverID); } public void setInvoiceReceiverID(Integer invoiceReciverID) { setColumn(COLUMN_INVOICE_RECEIVER, invoiceReciverID); } public void setInvoiceReceiver(User invoiceReciver) { setColumn(COLUMN_INVOICE_RECEIVER, invoiceReciver); } public Collection ejbFindByChild(int childID) throws FinderException { return ejbFindByChild(childID,-1,-1); } public Collection ejbFindByChild(int childID,int resultSize,int startIndex) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CHILD_ID, childID); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return idoFindPKsByQuery(sql,resultSize,startIndex); } public Collection ejbFindByChildAndDateRange (User child, Date startDate, Date endDate) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CHILD_ID, child); sql.appendAnd (); sql.appendLeftParenthesis (); sql.appendWithinDates (COLUMN_VALID_FROM_DATE, startDate, endDate); sql.appendOr (); sql.appendLeftParenthesis (); sql.append (COLUMN_VALID_FROM_DATE); sql.appendLessThanOrEqualsSign (); sql.append (startDate); sql.appendAnd (); sql.appendLeftParenthesis (); sql.append (COLUMN_TERMINATED_DATE).appendIsNull (); sql.appendOr (); sql.append (startDate); sql.appendLessThanOrEqualsSign (); sql.append (COLUMN_TERMINATED_DATE); sql.appendRightParenthesis (); sql.appendRightParenthesis (); sql.appendRightParenthesis (); return idoFindPKsByQuery(sql); } public Collection ejbFindByChildAndProvider(int childID, int providerID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(getEntityName()).append(" a, ").append(ChildCareApplicationBMPBean.ENTITY_NAME).append(" c"); sql.appendWhereEquals("a."+COLUMN_CHILD_ID, childID); sql.appendAndEquals("a."+COLUMN_CHILD_ID, "c."+ChildCareApplicationBMPBean.CHILD_ID); sql.appendAndEquals("c."+ChildCareApplicationBMPBean.PROVIDER_ID, providerID); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return idoFindPKsByQuery(sql); } public Collection ejbFindByApplication(int applicationID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return idoFindPKsByQuery(sql); } public Integer ejbFindValidContractByApplication(int applicationID, Date date) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(date); sql.appendAnd().appendLeftParenthesis().append(COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(date); sql.appendOr().append(COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindValidContractByPlacement(SchoolClassMember member, Date date) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_SCH_CLASS_MEMBER, member); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(date); sql.appendAnd().appendLeftParenthesis().append(COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(date); sql.appendOr().append(COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Collection ejbFindValidContractByProvider(int providerID, Date date) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(getEntityName()).append(" c, "); sql.append(ChildCareApplicationBMPBean.ENTITY_NAME).append(" a"); sql.appendWhere().append("c."+COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(date); sql.appendAnd().appendLeftParenthesis().append("c."+COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(date); sql.appendOr().append("c."+COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); sql.appendAndEquals("c."+COLUMN_APPLICATION_ID,"a."+ChildCareApplicationBMPBean.ENTITY_NAME+"_id"); sql.appendAndEquals("a."+ChildCareApplicationBMPBean.PROVIDER_ID, providerID); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return idoFindPKsByQuery(sql); } public Integer ejbFindApplicationByContract(int contractID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CONTRACT_ID, contractID); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindValidContractByChild(int childID) throws FinderException { IWTimestamp stamp = new IWTimestamp(); return ejbFindValidContractByChild(childID, stamp.getDate()); } public Integer ejbFindValidContractByChild(int childID, Date date) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CHILD_ID, childID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(date); sql.appendAnd().appendLeftParenthesis().append(COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(date); sql.appendOr().append(COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindContractByChildAndPeriod(User child, TimePeriod period) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this); sql.appendWhereEquals(COLUMN_CHILD_ID, child); sql.appendAnd(); sql.append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(period.getLastTimestamp().getDate ()); sql.appendAnd(); sql.appendLeftParenthesis (); sql.append(COLUMN_TERMINATED_DATE).appendGreaterThanOrEqualsSign().append(period.getFirstTimestamp().getDate ()); sql.appendOr().append(COLUMN_TERMINATED_DATE).append(" is null"); sql.appendRightParenthesis(); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindLatestTerminatedContractByChild(int childID, Date date) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CHILD_ID, childID); if(date!=null){ sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(date); sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(date); } sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendIsNotNull(); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindNextContractByChild(ChildCareContract contract) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CHILD_ID, contract.getChildID()); if(contract.getTerminatedDate()!=null){ sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendGreaterThanSign().append(contract.getTerminatedDate()); } else { sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendGreaterThanSign().append(contract.getValidFromDate()); } sql.appendOrderBy(COLUMN_VALID_FROM_DATE); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindNextTerminatedContractByChild(ChildCareContract contract) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CHILD_ID, contract.getChildID()); if(contract.getValidFromDate()!=null){ sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendGreaterThanSign().append(contract.getValidFromDate()); sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendGreaterThanOrEqualsSign().append(contract.getValidFromDate()); } sql.appendAnd().append(getIDColumnName()).appendNOTEqual().append(contract.getPrimaryKey()); sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendIsNotNull(); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindPreviousTerminatedContractByChild(ChildCareContract contract) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CHILD_ID, contract.getChildID()); sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendLessThanSign().append(contract.getValidFromDate()); sql.appendAnd().append(getIDColumnName()).appendNOTEqual().append(contract.getPrimaryKey()); sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendIsNotNull(); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } /** * Gets the contract which stands before the supplied one * @param contract * @return * @throws FinderException */ public Integer ejbFindPreviousTerminatedContractByContract(ChildCareContract contract) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this); sql.appendWhere(); sql.append(COLUMN_APPLICATION_ID).appendEqualSign().append(contract.getApplication()); sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendIsNotNull(); sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendLessThanSign().append(contract.getValidFromDate()); sql.appendAnd().append(getIDColumnName()).appendNOTEqual().append(contract.getPrimaryKey()); sql.appendOrderBy(COLUMN_VALID_FROM_DATE + " desc"); return (Integer) idoFindOnePKByQuery(sql); } /** * Finds the contract that stands after the supplied one * @param contract * @return * @throws FinderException */ public Integer ejbFindNextContractByContract(ChildCareContract contract) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this); sql.appendWhere(); sql.append(COLUMN_APPLICATION_ID).appendEqualSign().append(contract.getApplication()); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendGreaterThanSign(); if (contract.getTerminatedDate() != null) { sql.append(contract.getTerminatedDate()); } else { sql.append(contract.getValidFromDate()); } sql.appendOrderBy(COLUMN_VALID_FROM_DATE + " asc"); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindLatestContractByChild(int childID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CHILD_ID, childID); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindLatestContractByApplication(int applicationID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Collection ejbFindLatestByApplication(int applicationID,int maxNumberOfContracts) throws FinderException{ IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return idoFindPKsByQuery(sql,maxNumberOfContracts); } public Integer ejbFindLatestNotByApplication(int applicationID, Date startDate) throws FinderException{ IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhere().append(COLUMN_APPLICATION_ID).appendNOTEqual().append(applicationID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanSign().append(startDate); sql.appendOrderByDescending(COLUMN_VALID_FROM_DATE); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindFirstContractByApplication(int applicationID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendOrderBy(COLUMN_VALID_FROM_DATE); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindContractByApplicationAndDate(int applicationID, Date date) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(date); sql.appendOrderBy(COLUMN_VALID_FROM_DATE).append(" desc"); return (Integer) idoFindOnePKByQuery(sql); } public Collection ejbFindFutureContractsByApplication(int applicationID, Date date) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendGreaterThanSign().append(date); return idoFindPKsByQuery(sql); } public int ejbHomeGetNumberOfActiveNotWithProvider(int childID, int providerID) throws IDOException { return ejbHomeGetNumberOfActiveNotWithProvider(childID, providerID, null); } public int ejbHomeGetNumberOfActiveNotWithProvider(int childID, int providerID, Date date) throws IDOException { IDOQuery sql = idoQuery(); sql.append("select count(*) from ").append(this.getEntityName()).append(" a, comm_childcare c"); sql.appendWhereEquals("a."+COLUMN_APPLICATION_ID, "c.comm_childcare_id"); sql.appendAndEquals("a." + COLUMN_CHILD_ID, childID); sql.appendAnd().append("c.provider_id").appendNOTEqual().append(providerID); sql.appendAnd().append(COLUMN_TERMINATED_DATE).append(" is null"); if (date != null) { sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendGreaterThanSign().append(date); } return idoGetNumberOfRecords(sql); } public int ejbHomeGetNumberOfActiveForApplication(int applicationID, Date date) throws IDOException { IDOQuery sql = idoQuery(); sql.appendSelectCountFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(date); sql.appendAnd().appendLeftParenthesis().append(COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(date); sql.appendOr().append(COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); sql.appendOrderBy(COLUMN_VALID_FROM_DATE+" desc"); return idoGetNumberOfRecords(sql); } public int ejbHomeGetNumberOfTerminatedLaterNotWithProvider(int childID, int providerID, Date date) throws IDOException { IDOQuery sql = idoQuery(); sql.append("select count(*) from ").append(this.getEntityName()).append(" a, comm_childcare c"); sql.appendWhereEquals("a."+COLUMN_APPLICATION_ID, "c.comm_childcare_id"); sql.appendAndEquals("a." + COLUMN_CHILD_ID, childID); if (providerID != -1) { sql.appendAnd().append("c.provider_id").appendNOTEqual().append(providerID); } sql.appendAnd().append(COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(date); return idoGetNumberOfRecords(sql); } public int ejbHomeGetFutureContractsCountByApplication(int applicationID, Date date) throws IDOException { IDOQuery sql = idoQuery(); sql.appendSelectCountFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendGreaterThanOrEqualsSign().append(date); return idoGetNumberOfRecords(sql); } public int ejbHomeGetContractsCountByApplication(int applicationID) throws IDOException { IDOQuery sql = idoQuery(); sql.appendSelectCountFrom(this).appendWhereEquals(COLUMN_APPLICATION_ID, applicationID); return idoGetNumberOfRecords(sql); } public int ejbHomeGetContractsCountByDateRangeAndProvider(Date startDate, Date endDate, int providerID) throws IDOException { IDOQuery sql = idoQuery(); sql.append("select count(*) from ").append(this.getEntityName()).append(" a, ").append(ChildCareApplicationBMPBean.ENTITY_NAME).append(" c"); sql.appendWhereEquals("a."+COLUMN_CHILD_ID, "c."+ChildCareApplicationBMPBean.CHILD_ID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(endDate); sql.appendAnd().appendLeftParenthesis().append(COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(startDate); sql.appendOr().append(COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); sql.appendAndEquals("c."+ChildCareApplicationBMPBean.PROVIDER_ID, providerID); return idoGetNumberOfRecords(sql); } public Integer ejbFindByContractFileID(int contractFileID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_CONTRACT_FILE_ID, contractFileID); return (Integer) idoFindOnePKByQuery(sql); } public Collection ejbFindByDateRange(Date startDate, Date endDate) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelect().append(" distinct a.* from "+getEntityName()).append(" a, ").append(ChildCareApplicationBMPBean.ENTITY_NAME).append(" c"); sql.appendWhereEquals("a."+COLUMN_CHILD_ID, "c."+ChildCareApplicationBMPBean.CHILD_ID); sql.appendAnd().append(COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(endDate); sql.appendAnd().appendLeftParenthesis().append(COLUMN_TERMINATED_DATE).appendGreaterThanSign().append(startDate); sql.appendOr().append(COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); return idoFindPKsByQuery(sql); } public Collection ejbFindChangedSinceDate(Date date) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelect().append(" distinct a.* from "+getEntityName()).append(" a, ").append(ChildCareApplicationBMPBean.ENTITY_NAME).append(" c"); sql.appendWhereEquals("a."+COLUMN_CHILD_ID, "c."+ChildCareApplicationBMPBean.CHILD_ID); sql.appendAnd().appendLeftParenthesis(); sql.append(COLUMN_VALID_FROM_DATE).appendGreaterThanOrEqualsSign().append(date); sql.appendOr().append(COLUMN_TERMINATED_DATE).appendGreaterThanOrEqualsSign().append(date); sql.appendRightParenthesis(); return idoFindPKsByQuery(sql); } public Collection ejbFindChangedBetween(Date from, Date to) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelect().append(" distinct a.* from ").append(getEntityName()).append(" a "); sql.append("left join sch_class_member m "); sql.append("on m.sch_class_member_id = a.sch_class_member_id "); sql.append("left join sch_class_member_log l "); sql.append("on l.sch_class_member_id = m.sch_class_member_id"); sql.appendWhere(); sql.appendLeftParenthesis(); sql.append("a." + COLUMN_VALID_FROM_DATE).appendGreaterThanOrEqualsSign().append(from); sql.appendAnd().append("a." + COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(to); sql.appendRightParenthesis(); sql.appendOr().appendLeftParenthesis(); sql.append("a." + COLUMN_TERMINATED_DATE).appendGreaterThanOrEqualsSign().append(from); sql.appendAnd().append("a." + COLUMN_TERMINATED_DATE).appendLessThanOrEqualsSign().append(to); sql.appendRightParenthesis(); sql.appendOr().appendLeftParenthesis(); sql.append("l.start_date").appendGreaterThanOrEqualsSign().append(from); sql.appendAnd().append("l.start_date").appendLessThanOrEqualsSign().append(to); sql.appendRightParenthesis(); sql.appendOr().appendLeftParenthesis(); sql.append("l.end_date").appendGreaterThanOrEqualsSign().append(from); sql.appendAnd().append("l.end_date").appendLessThanOrEqualsSign().append(to); sql.appendRightParenthesis(); return idoFindPKsByQuery(sql); } public Collection ejbFindByDateRangeAndProviderWhereStatusActive(Date startDate, Date endDate,School school) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelect().append(" distinct a.COMM_CHILDCARE_ARCHIVE_ID from "+getEntityName()).append(" a, ") .append(ChildCareApplicationBMPBean.ENTITY_NAME).append(" c, "); sql.append(SchoolClassMemberBMPBean.SCHOOLCLASSMEMBER).append(" scm, "); sql.append(SchoolClassBMPBean.SCHOOLCLASS).append(" sc "); sql.appendWhereEquals("a."+COLUMN_APPLICATION_ID, "c.COMM_CHILDCARE_ID"); sql.appendAnd(); sql.appendEquals("a."+COLUMN_SCH_CLASS_MEMBER,"scm."+SchoolClassMemberBMPBean.SCHOOLCLASSMEMBERID); sql.appendAnd(); sql.appendEquals("sc."+SchoolClassBMPBean.SCHOOLCLASSID,"scm."+SchoolClassMemberBMPBean.SCHOOLCLASS); sql.appendAnd(); sql.appendEquals("sc."+SchoolClassBMPBean.SCHOOL,school.getPrimaryKey().toString()); /* sql.appendAnd().appendLeftParenthesis(); sql.appendEqualsQuoted("c.APPLICATION_STATUS","F"); sql.appendOr().appendEqualsQuoted("c.APPLICATION_STATUS","V"); sql.appendRightParenthesis();*/ sql.appendAnd(); sql.append("c.APPLICATION_STATUS in ").appendLeftParenthesis(); sql.append("'F', 'V', 'R', 'P'").appendRightParenthesis(); sql.appendAnd().append("a."+COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(endDate); sql.appendAnd().appendLeftParenthesis().append("a."+COLUMN_TERMINATED_DATE).appendGreaterThanOrEqualsSign().append(startDate); sql.appendOr().append("a."+COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); //Temp Patch for Lotta until they have fixed the problem // sql.appendAnd().append("a."+COLUMN_CARE_TIME).appendGreaterThanSign().append("0"); System.out.println("SQL: "+sql); return idoFindPKsByQuery(sql); } public Collection ejbFindByDateRangeWhereStatusActive(Date startDate, Date endDate) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelect().append(" distinct a.COMM_CHILDCARE_ARCHIVE_ID from "+getEntityName()).append(" a, ").append(ChildCareApplicationBMPBean.ENTITY_NAME).append(" c"); sql.appendWhereEquals("a."+COLUMN_APPLICATION_ID, "c.COMM_CHILDCARE_ID"); /* sql.appendAnd().appendLeftParenthesis(); sql.appendEqualsQuoted("c.APPLICATION_STATUS","F"); sql.appendOr().appendEqualsQuoted("c.APPLICATION_STATUS","V"); sql.appendRightParenthesis();*/ sql.appendAnd(); sql.append("c.APPLICATION_STATUS in ").appendLeftParenthesis(); sql.append("'F', 'V', 'R', 'P'").appendRightParenthesis(); sql.appendAnd().append("a."+COLUMN_VALID_FROM_DATE).appendLessThanOrEqualsSign().append(endDate); sql.appendAnd().appendLeftParenthesis().append("a."+COLUMN_TERMINATED_DATE).appendGreaterThanOrEqualsSign().append(startDate); sql.appendOr().append("a."+COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); //Temp Patch for Lotta until they have fixed the problem // sql.appendAnd().append("a."+COLUMN_CARE_TIME).appendGreaterThanSign().append("0"); // System.out.println("SQL: "+sql); return idoFindPKsByQuery(sql); } public Integer ejbFindBySchoolClassMember (SchoolClassMember placement) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_SCH_CLASS_MEMBER, placement); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindLatestBySchoolClassMember (SchoolClassMember placement) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_SCH_CLASS_MEMBER, placement); sql.appendOrderByDescending(COLUMN_VALID_FROM_DATE); return (Integer) idoFindOnePKByQuery(sql); } public Collection ejbFindAll() throws FinderException { IDOQuery sql = idoQueryGetSelect(); return idoFindPKsByQuery(sql); } public Collection ejbFindByInvoiceReceiver(Integer invoiceReceiverID)throws FinderException{ IDOQuery query = idoQueryGetSelect(); query.appendWhereEquals(COLUMN_INVOICE_RECEIVER,invoiceReceiverID); return super.idoFindPKsByQuery(query); } public Collection ejbFindByInvoiceReceiverActiveOrFuture(Integer invoiceReceiverID,Date fromDate)throws FinderException{ IDOQuery query = idoQueryGetSelect(); query.appendWhereEquals(COLUMN_INVOICE_RECEIVER,invoiceReceiverID); query.appendAnd().appendLeftParenthesis().append(COLUMN_TERMINATED_DATE).appendGreaterThanOrEqualsSign().append(fromDate); query.appendOr().append(COLUMN_TERMINATED_DATE).append(" is null").appendRightParenthesis(); query.appendOrderBy(COLUMN_VALID_FROM_DATE).appendDescending(); return super.idoFindPKsByQuery(query); } public Collection ejbFindAllBySchoolClassMember(SchoolClassMember member)throws FinderException{ IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(COLUMN_SCH_CLASS_MEMBER, member); sql.appendOrderBy(COLUMN_VALID_FROM_DATE); return idoFindPKsByQuery(sql); } public int ejbHomeGetCountBySchoolClassMember(SchoolClassMember member) throws IDOException { IDOQuery sql = idoQuery(); sql.appendSelectCountFrom(this).appendWhereEquals(COLUMN_SCH_CLASS_MEMBER, member); return idoGetNumberOfRecords(sql); } public Collection ejbFindAllByCareTimeAndDates(String careTime, Date startingBefore, Date fromBirthDate, Date toBirthDate) throws FinderException { Table table = new Table(this); Table user = new Table(User.class); SelectQuery query = new SelectQuery(table); query.addColumn(table, getIDColumnName()); try { query.addJoin(table, user); } catch (IDORelationshipException ire) { throw new FinderException(ire.getMessage()); } query.addCriteria(new MatchCriteria(table, COLUMN_CARE_TIME, MatchCriteria.EQUALS, careTime)); query.addCriteria(new MatchCriteria(table.getColumn(COLUMN_TERMINATED_DATE), false)); query.addCriteria(new MatchCriteria(table, COLUMN_VALID_FROM_DATE, MatchCriteria.LESSEQUAL, startingBefore)); query.addCriteria(new MatchCriteria(user, "date_of_birth", MatchCriteria.GREATEREQUAL, fromBirthDate)); query.addCriteria(new MatchCriteria(user, "date_of_birth", MatchCriteria.LESSEQUAL, toBirthDate)); return idoFindPKsByQuery(query); } /** * Finds contracts, according to params * * @return * @throws FinderException */ public Collection ejbFindAllByProviderAndClassMemberDateRange(Integer schoolId, Date startFrom, Date startTo, Date endFrom, Date endTo) throws FinderException { IDOQuery query = idoQuery(); query.appendSelect(); query.append(" cca.comm_childcare_archive_id "); query.appendFrom(); query.append(getEntityName()).append(" cca, "); query.append(SchoolClassMemberBMPBean.SCHOOLCLASSMEMBER).append(" scm, "); query.append(ChildCareApplicationBMPBean.ENTITY_NAME).append(" cc "); query.appendWhere(); query.appendEquals("cca.sch_class_member_id", "scm.sch_class_member_id"); query.appendAndEquals("cca.application_id", "cc.comm_childcare_id"); if (schoolId != null) { query.appendAndEquals("cc.provider_id", schoolId); } if(startFrom != null) { query.appendAnd().append("scm.register_date >= ").append(startFrom); } if (startTo != null) { query.appendAnd().append("scm.register_date <= ").append(startTo); } if (endFrom != null){ query.appendAnd().append("scm.removed_date >= ").append(endFrom); } if (endTo != null) { query.appendAnd().append("scm.removed_date <= ").append(endTo); } query.appendAnd().append(" cca.comm_childcare_archive_id = "); query.append("(select max(comm_childcare_archive_id) from comm_childcare_archive cca_sub"); query.append(" where cca_sub.application_id = cca.application_id)"); query.append(" order by scm.removed_date - cc.cancel_date_requested desc "); return idoFindPKsByQuery(query); } }