/* * $Id: CareBusinessBean.java,v 1.11 2005/10/18 20:14:24 laddi Exp $ * Created on Oct 13, 2004 * * Copyright (C) 2004 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. */ package se.idega.idegaweb.commune.care.business; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.ejb.CreateException; import javax.ejb.FinderException; import se.idega.idegaweb.commune.care.check.data.GrantedCheck; import se.idega.idegaweb.commune.care.check.data.GrantedCheckHome; import se.idega.idegaweb.commune.care.data.CurrentSchoolSeason; import se.idega.idegaweb.commune.care.data.CurrentSchoolSeasonHome; import com.idega.block.school.business.SchoolBusiness; import com.idega.block.school.business.SchoolUserBusiness; import com.idega.block.school.data.School; import com.idega.block.school.data.SchoolClassMember; import com.idega.block.school.data.SchoolSeason; import com.idega.block.school.data.SchoolSeasonHome; import com.idega.business.IBOLookup; import com.idega.business.IBORuntimeException; import com.idega.business.IBOServiceBean; import com.idega.user.business.UserBusiness; import com.idega.user.data.Group; import com.idega.user.data.User; /** * * Last modified: $Date: 2005/10/18 20:14:24 $ by $Author: laddi $ * * @author <a href="mailto:thomas@idega.com">thomas</a> * @version $Revision: 1.11 $ */ public class CareBusinessBean extends IBOServiceBean implements CareBusiness{ private SchoolBusiness schoolBusiness = null; private UserBusiness userBusiness = null; public School getProviderForUser(User user) throws FinderException, RemoteException { Group primaryGroup = user.getPrimaryGroup(); SchoolBusiness schoolBuiz = getSchoolBusiness(); try { if (primaryGroup.equals(schoolBuiz.getRootProviderAdministratorGroup()) || primaryGroup.equals(schoolBuiz.getRootSchoolAdministratorGroup()) || primaryGroup.equals(schoolBuiz.getRootMusicSchoolAdministratorGroup())) { SchoolUserBusiness sub = (SchoolUserBusiness) IBOLookup.getServiceInstance(getIWApplicationContext(), SchoolUserBusiness.class); Collection schoolIds = sub.getSchools(user); if (!schoolIds.isEmpty()) { Iterator iter = schoolIds.iterator(); while (iter.hasNext()) { School school = sub.getSchoolHome().findByPrimaryKey(iter.next()); return school; } } } } catch (CreateException ce) { ce.printStackTrace(); } catch (RemoteException e) { throw new IBORuntimeException(e.getMessage()); } catch (FinderException e) { Collection schools; try { schools = ((SchoolBusiness) IBOLookup.getServiceInstance(this.getIWApplicationContext(), SchoolBusiness.class)).getSchoolHome().findAllBySchoolGroup(user); } catch (RemoteException e1) { throw new IBORuntimeException(e1.getMessage()); } if (!schools.isEmpty()) { Iterator iter = schools.iterator(); while (iter.hasNext()) { return (School) iter.next(); } } } throw new FinderException("No provider found for user: "+user.getPrimaryKey().toString()); } public boolean hasGrantedCheck(User child) throws RemoteException { try { GrantedCheckHome home = (GrantedCheckHome) com.idega.data.IDOLookup.getHome(GrantedCheck.class); GrantedCheck check = home.findChecksByUser(child); if (check != null) return true; return false; } catch (FinderException fe) { return false; } } public SchoolSeason getCurrentSeason() throws java.rmi.RemoteException, javax.ejb.FinderException { CurrentSchoolSeason season = getCurrentSchoolSeasonHome().findCurrentSeason(); return getSchoolSeasonHome().findByPrimaryKey(season.getCurrent()); } public CurrentSchoolSeasonHome getCurrentSchoolSeasonHome() throws java.rmi.RemoteException { return (CurrentSchoolSeasonHome) this.getIDOHome(CurrentSchoolSeason.class); } public SchoolSeasonHome getSchoolSeasonHome() throws java.rmi.RemoteException { return (SchoolSeasonHome) this.getIDOHome(SchoolSeason.class); } public Map getStudentList(Collection students) throws RemoteException { HashMap coll = new HashMap(); if (!students.isEmpty()) { Collection users = getUserBusiness().getUsers(this.getUserIDsFromClassMembers(students)); User user; Iterator iter = users.iterator(); while (iter.hasNext()) { user = (User) iter.next(); coll.put(user.getPrimaryKey(), user); } } return coll; } private String[] getUserIDsFromClassMembers(Collection classMembers) { if (classMembers != null) { String[] userIDs = new String[classMembers.size()]; SchoolClassMember classMember; int a = 0; Iterator iter = classMembers.iterator(); while (iter.hasNext()) { classMember = (SchoolClassMember) iter.next(); userIDs[a] = String.valueOf(classMember.getClassMemberId()); a++; } return userIDs; } return null; } private SchoolBusiness getSchoolBusiness() throws RemoteException { if (schoolBusiness == null) { schoolBusiness = (SchoolBusiness) IBOLookup.getServiceInstance(getIWApplicationContext(), SchoolBusiness.class); } return schoolBusiness; } private UserBusiness getUserBusiness() throws RemoteException { if (userBusiness == null) { userBusiness = (UserBusiness) getServiceInstance(UserBusiness.class); } return userBusiness; } public void storeChildInformation(User child, Boolean growthDeviation, String growthDeviationDetails, Boolean allergies, String allergiesDetails, String lastCareProvider, boolean canContactLastProvider, String otherInformation) { if (growthDeviation != null) { child.setMetaData(CareConstants.METADATA_GROWTH_DEVIATION, growthDeviation.toString()); } else { child.removeMetaData(CareConstants.METADATA_GROWTH_DEVIATION); } if (growthDeviationDetails != null && growthDeviationDetails.length() > 0) { child.setMetaData(CareConstants.METADATA_GROWTH_DEVIATION_DETAILS, growthDeviationDetails); } else { child.removeMetaData(CareConstants.METADATA_GROWTH_DEVIATION_DETAILS); } if (allergies != null) { child.setMetaData(CareConstants.METADATA_ALLERGIES, allergies.toString()); } else { child.removeMetaData(CareConstants.METADATA_ALLERGIES); } if (allergiesDetails != null && allergiesDetails.length() > 0) { child.setMetaData(CareConstants.METADATA_ALLERGIES_DETAILS, allergiesDetails); } else { child.removeMetaData(CareConstants.METADATA_ALLERGIES_DETAILS); } if (lastCareProvider != null && lastCareProvider.length() > 0) { child.setMetaData(CareConstants.METADATA_LAST_CARE_PROVIDER, lastCareProvider); } else { child.removeMetaData(CareConstants.METADATA_LAST_CARE_PROVIDER); } child.setMetaData(CareConstants.METADATA_CAN_CONTACT_LAST_PROVIDER, String.valueOf(canContactLastProvider)); if (otherInformation != null && otherInformation.length() > 0) { child.setMetaData(CareConstants.METADATA_OTHER_INFORMATION, otherInformation); } else { child.removeMetaData(CareConstants.METADATA_OTHER_INFORMATION); } child.store(); } public Boolean hasGrowthDeviation(User child) { String meta = child.getMetaData(CareConstants.METADATA_GROWTH_DEVIATION); if (meta != null) { return new Boolean(meta); } return null; } public String getGrowthDeviationDetails(User child) { return child.getMetaData(CareConstants.METADATA_GROWTH_DEVIATION_DETAILS); } public Boolean hasAllergies(User child) { String meta = child.getMetaData(CareConstants.METADATA_ALLERGIES); if (meta != null) { return new Boolean(meta); } return null; } public String getAllergiesDetails(User child) { return child.getMetaData(CareConstants.METADATA_ALLERGIES_DETAILS); } public String getLastCareProvider(User child) { return child.getMetaData(CareConstants.METADATA_LAST_CARE_PROVIDER); } public Boolean canContactLastCareProvider(User child) { String meta = child.getMetaData(CareConstants.METADATA_CAN_CONTACT_LAST_PROVIDER); if (meta != null) { return new Boolean(meta); } return null; } public String getOtherInformation(User child) { return child.getMetaData(CareConstants.METADATA_OTHER_INFORMATION); } public void storeExtraCustodian(User child, User custodian, String relation, String homePhone, String workPhone, String mobilePhone, String email) { updateUserInfo(custodian, homePhone, workPhone, mobilePhone, email); child.setMetaData(CareConstants.METADATA_OTHER_CUSTODIAN, custodian.getPrimaryKey().toString(), "com.idega.user.data.User"); if (relation != null && relation.length() > 0) { storeUserRelation(child, custodian, relation); } } public User getExtraCustodian(User child) { String custodianPK = child.getMetaData(CareConstants.METADATA_OTHER_CUSTODIAN); if (custodianPK != null) { try { return getUserBusiness().getUser(new Integer(custodianPK)); } catch (RemoteException re) { throw new IBORuntimeException(re); } } return null; } public List getRelatives(User child) { List relatives = new ArrayList(); for (int a = 1; a <= 2; a++) { String name = child.getMetaData((a == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_name"); String relation = child.getMetaData((a == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_relation"); String homePhone = child.getMetaData((a == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_homePhone"); String workPhone = child.getMetaData((a == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_workPhone"); String mobilePhone = child.getMetaData((a == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_mobilePhone"); String email = child.getMetaData((a == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_email"); if (name != null) { Relative relative = new Relative(); relative.setName(name); relative.setRelation(relation); relative.setHomePhone(homePhone); relative.setWorkPhone(workPhone); relative.setMobilePhone(mobilePhone); relative.setEmail(email); relatives.add(relative); } } return relatives; } public void storeRelative(User child, String name, String relation, int number, String homePhone, String workPhone, String mobilePhone, String email) { if (number > 2 || number < 1) { return; } child.setMetaData((number == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_name", name, "java.lang.String"); child.setMetaData((number == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_relation", relation, "java.lang.String"); child.setMetaData((number == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_homePhone", homePhone, "java.lang.String"); child.setMetaData((number == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_workPhone", workPhone, "java.lang.String"); child.setMetaData((number == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_mobilePhone", mobilePhone, "java.lang.String"); child.setMetaData((number == 1 ? CareConstants.METADATA_RELATIVE_1 : CareConstants.METADATA_RELATIVE_2) + "_email", email, "java.lang.String"); } public void storeUserRelation(User child, User relatedUser, String relation) { child.setMetaData(CareConstants.METADATA_RELATION + relatedUser.getPrimaryKey().toString(), relation, "java.lang.String"); } public String getUserRelation(User child, User relatedUser) { return child.getMetaData(CareConstants.METADATA_RELATION + relatedUser.getPrimaryKey().toString()); } public void updateUserInfo(User user, String homePhone, String workPhone, String mobilePhone, String email) { try { if (email != null && email.length() > 0) { try { getUserBusiness().updateUserMail(user, email); } catch (CreateException ce) { ce.printStackTrace(); } } if (homePhone != null && homePhone.length() > 0) { getUserBusiness().updateUserHomePhone(user, homePhone); } if (workPhone != null && workPhone.length() > 0) { getUserBusiness().updateUserWorkPhone(user, workPhone); } if (mobilePhone != null && mobilePhone.length() > 0) { getUserBusiness().updateUserMobilePhone(user, mobilePhone); } } catch (RemoteException re) { throw new IBORuntimeException(re); } } }