/* * $Id: ChildCareQueueBMPBean.java,v 1.16 2005/02/17 09:57:29 laddi Exp $ * * Copyright (C) 2002 Idega hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. * */ package se.idega.idegaweb.commune.childcare.data; import java.sql.Date; import java.util.Collection; import javax.ejb.FinderException; import com.idega.block.process.data.AbstractCaseBMPBean; import com.idega.block.process.data.Case; import com.idega.block.school.data.School; import com.idega.block.school.data.SchoolArea; import com.idega.data.IDOException; import com.idega.data.IDOQuery; import com.idega.user.data.User; /** * Data bean holding the information about the children waiting in line to get a childcare position * This data is just an import of the data used in the old system where there was no limit on * how many child care option one can sign up for. The system now only allows maximum five options * per child. * * @author Joakim * @version 1.0 */ public class ChildCareQueueBMPBean extends AbstractCaseBMPBean implements ChildCareQueue,Case { private final static String ENTITY_NAME = "comm_childcare_queue"; private final static String CASE_CODE_KEY = "MBANQUE"; private final static String CASE_CODE_KEY_DESC = "Old queue for child care"; protected final static String CONTRACT_ID = "contract_id"; protected final static String CHILD_ID = "child_id"; protected final static String PROVIDER_NAME = "provider_name"; protected final static String PROVIDER_ID = "provider_id"; protected final static String PRIORITY = "priority"; protected final static String CHOICE_NUMBER = "choice_number"; protected final static String SCHOOL_AREA_NAME = "school_area_name"; protected final static String SCHOOL_AREA_ID = "school_area_id"; protected final static String QUEUE_DATE = "queue_date"; protected final static String START_DATE = "start_date"; protected final static String IMPORT_DATE = "import_date"; protected final static String QUEUE_TYPE = "queue_type"; protected final static String EXPORTED = "exported"; protected final int SORT_DATE_OF_BIRTH = 1; protected final int SORT_QUEUE_DATE = 2; /** * @see com.idega.block.process.data.AbstractCaseBMPBean#getCaseCodeKey() */ public String getCaseCodeKey() { return CASE_CODE_KEY; } /** * @see com.idega.block.process.data.AbstractCaseBMPBean#getCaseCodeDescription() */ public String getCaseCodeDescription() { return CASE_CODE_KEY_DESC; } /** * @see com.idega.data.IDOLegacyEntity#getEntityName() */ public String getEntityName() { return ENTITY_NAME; } /** * @see com.idega.data.IDOLegacyEntity#initializeAttributes() */ public void initializeAttributes() { addAttribute(getIDColumnName()); addAttribute(CONTRACT_ID,"",true,true,java.lang.Integer.class); addManyToOneRelationship(CHILD_ID,User.class); addAttribute(PROVIDER_NAME,"",true,true,java.lang.String.class,1000); addManyToOneRelationship(PROVIDER_ID, School.class); addAttribute(PRIORITY,"",true,true,java.lang.String.class,1000); addAttribute(CHOICE_NUMBER,"",true,true,java.lang.Integer.class); addAttribute(SCHOOL_AREA_NAME,"",true,true,java.lang.String.class,1000); addManyToOneRelationship(SCHOOL_AREA_ID, SchoolArea.class); addAttribute(QUEUE_DATE,"",true,true,java.sql.Date.class); addAttribute(START_DATE,"",true,true,java.sql.Date.class); addAttribute(IMPORT_DATE,"",true,true,java.sql.Date.class); addAttribute(QUEUE_TYPE,"",true,true,java.lang.Integer.class); addAttribute(EXPORTED,"",true,true,java.lang.Boolean.class); } public int getContractId() { return getIntColumnValue(CONTRACT_ID); } public User getChild() { return (User)getColumnValue(CHILD_ID); } public int getChildId() { return getIntColumnValue(CHILD_ID); } public String getProviderName() { return getStringColumnValue(PROVIDER_NAME); } public int getProviderId() { return getIntColumnValue(PROVIDER_ID); } public School getProvider() { return (School) getColumnValue(PROVIDER_ID); } public String getPriority() { return getStringColumnValue(PRIORITY); } public int getChoiceNumber() { return getIntColumnValue(CHOICE_NUMBER); } public String getSchoolAreaName() { return getStringColumnValue(SCHOOL_AREA_NAME); } public String getSchoolAreaId() { return getStringColumnValue(SCHOOL_AREA_ID); } public Date getQueueDate() { return (Date)getColumnValue(QUEUE_DATE); } public Date getStartDate() { return (Date)getColumnValue(START_DATE); } public Date getImportDate() { return (Date)getColumnValue(IMPORT_DATE); } public int getQueueType() { return getIntColumnValue(QUEUE_TYPE); } public boolean isExported() { return getBooleanColumnValue(EXPORTED, false); } public void setContractId(int id) { setColumn(CONTRACT_ID,id); } public void setChildId(int id) { setColumn(CHILD_ID,id); } public void setProviderName(String name) { setColumn(PROVIDER_NAME,name); } public void setProviderId(int id) { setColumn(PROVIDER_ID,id); } public void setPriority(String priority) { setColumn(PRIORITY,priority); } public void setChoiceNumber(int number) { setColumn(CHOICE_NUMBER,number); } public void setSchoolAreaName(String area) { setColumn(SCHOOL_AREA_NAME,area); } public void setSchoolAreaId(int id) { setColumn(SCHOOL_AREA_ID,id); } public void setQueueDate(Date date) { setColumn(QUEUE_DATE,date); } public void setStartDate(Date sDate) { setColumn(START_DATE,sDate); } public void setImportedDate(Date iDate) { setColumn(IMPORT_DATE,iDate); } public void setQueueType(int type) { setColumn(QUEUE_TYPE,type); } public void setExported(boolean exp) { setColumn(EXPORTED,exp); } public Integer ejbFindQueueByChildAndChoiceNumber(User child, int choiceNumber) throws FinderException { return ejbFindQueueByChildAndChoiceNumber(((Integer)child.getPrimaryKey()).intValue(), choiceNumber); } //malin public Integer ejbFindQueueByChildAndChoiceNumberAndProviderID(int childID, int choiceNumber, int providerID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(CHOICE_NUMBER, choiceNumber).appendAndEquals(CHILD_ID,childID).appendAndEquals(PROVIDER_ID,providerID); return (Integer) idoFindOnePKByQuery(sql); } // public Integer ejbFindQueueByChildAndChoiceNumber(int childID, int choiceNumber) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(CHOICE_NUMBER, choiceNumber).appendAndEquals(CHILD_ID,childID); return (Integer) idoFindOnePKByQuery(sql); } public Integer ejbFindQueueByChildChoiceNumberAndQueueType(int childID, int choiceNumber, int queueType) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(CHOICE_NUMBER, choiceNumber). appendAndEquals(CHILD_ID,childID).appendAndEquals(QUEUE_TYPE,queueType); return (Integer) idoFindOnePKByQuery(sql); } public Collection ejbFindQueueByChild(int childID) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(CHILD_ID,childID); sql.appendOrderBy(CHOICE_NUMBER + ", " + QUEUE_DATE); return super.idoFindPKsByQuery(sql); } public Collection ejbFindQueueByProviderAndDate(int providerID, Date queueDate) throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this).appendWhereEquals(PROVIDER_ID, providerID); sql.appendAndEquals(QUEUE_DATE,queueDate); return super.idoFindPKsByQuery(sql); } public int ejbHomeGetNumberInQueue(int providerID, Date queueDate) throws IDOException { IDOQuery sql = idoQuery(); sql.appendSelectCountFrom(this).appendWhereEquals(PROVIDER_ID, providerID); sql.appendAnd().append(QUEUE_DATE).appendLessThanSign().append(queueDate); return super.idoGetNumberOfRecords(sql); } public int ejbHomeGetNumberOfNotExported(int childID) throws IDOException { IDOQuery sql = idoQuery(); sql.appendSelectCountFrom(this).appendWhereEquals(CHILD_ID, childID); sql.appendAndEqualsQuoted(EXPORTED, "N"); return super.idoGetNumberOfRecords(sql); } public int ejbHomeGetTotalCount(String[] queueType, boolean exported) throws IDOException { IDOQuery sql = idoQuery(); sql.appendSelect().append("count(distinct ").append(CHILD_ID).append(") ").appendFrom().append(getEntityName()); boolean whereAdded = false; if (queueType != null) { sql.appendWhere().append(QUEUE_TYPE).appendInArrayWithSingleQuotes(queueType); whereAdded = true; } if (exported) { if (!whereAdded) sql.appendWhereEquals(EXPORTED, "'Y'"); else sql.appendAndEquals(EXPORTED, "'Y'"); } return super.idoGetNumberOfRecords(sql); } public Collection ejbHomeGetDistinctNotExportedChildIds() throws FinderException { IDOQuery sql = idoQuery(); sql.appendSelectAllFrom(this); sql.appendWhereEqualsQuoted(EXPORTED, "N"); return super.idoFindPKsByQuery(sql); } }