package com.idega.block.staff.business; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Vector; import com.idega.block.staff.data.StaffEntity; import com.idega.block.staff.data.StaffInfo; import com.idega.block.staff.data.StaffLocalized; import com.idega.block.staff.data.StaffMeta; import com.idega.block.staff.data.StaffMetaData; import com.idega.block.staff.data.StaffMetaDataBMPBean; import com.idega.core.contact.data.Email; import com.idega.core.contact.data.Phone; import com.idega.core.data.GenericGroup; import com.idega.core.localisation.business.ICLocaleBusiness; import com.idega.core.user.business.UserBusiness; import com.idega.core.user.business.UserGroupBusiness; import com.idega.core.user.data.User; import com.idega.data.EntityFinder; import com.idega.data.GenericEntity; import com.idega.presentation.IWContext; import com.idega.user.data.Group; import com.idega.user.data.UserBMPBean; import com.idega.util.IWTimestamp; /** * Title: User * Copyright: Copyright (c) 2000 idega.is All Rights Reserved * Company: idega margmi�lun * @author * @version 1.0 */ public class StaffFinder { public static User getUser(int userID) { try { return ((com.idega.core.user.data.UserHome)com.idega.data.IDOLookup.getHomeLegacy(User.class)).findByPrimaryKeyLegacy(userID); } catch (SQLException e) { return null; } } public static StaffInfo getStaffInfo(int userId) { try { return ((com.idega.block.staff.data.StaffInfoHome)com.idega.data.IDOLookup.getHomeLegacy(StaffInfo.class)).findByPrimaryKeyLegacy(userId); } catch (SQLException e) { return null; } } public static StaffEntity getStaff(int userId) { try { return ((com.idega.block.staff.data.StaffEntityHome)com.idega.data.IDOLookup.getHomeLegacy(StaffEntity.class)).findByPrimaryKeyLegacy(userId); } catch (SQLException e) { return null; } } public static StaffMetaData[] getMetaData(int userId) { try { return (StaffMetaData[]) com.idega.block.staff.data.StaffMetaDataBMPBean.getStaticInstance().findAllByColumn(com.idega.block.staff.data.StaffMetaDataBMPBean.getColumnNameUserID(),Integer.toString(userId),"="); } catch (SQLException e) { return null; } } public static StaffMeta[] getMeta(int userID,int localeID) { try { return (StaffMeta[]) GenericEntity.getStaticInstance(StaffMeta.class).findAllByColumn(StaffMetaDataBMPBean.getColumnNameUserID(),Integer.toString(userID),'=',com.idega.block.staff.data.StaffMetaBMPBean.getColumnNameLocaleId(),Integer.toString(localeID),'='); } catch (SQLException e) { return null; } } public static Email getUserEmail(User user) { return UserBusiness.getUserMail(user); } public static List getGroups(IWContext iwc) { return getAllGroups(iwc); } public static List getAllUsers(IWContext iwc) { try { List allUsers = EntityFinder.findAll(UserBMPBean.getStaticInstance()); /*if ( allUsers != null ) { allUsers.remove(iwc.getAccessController().getAdministratorUser()); }*/ return allUsers; } catch (Exception e) { return null; } } public static List getAllUsersInGroup(Group group) { return UserBusiness.getUsersInGroup(((Integer)group.getPrimaryKey()).intValue()); } public static List getAllGroups(IWContext iwc) { List groups = UserGroupBusiness.getAllGroups(iwc); List filteredList = new ArrayList(); if ( groups != null ) { try { groups.remove(iwc.getAccessController().getPermissionGroupAdministrator()); } catch (Exception e) {} Iterator iter = groups.iterator(); while (iter.hasNext()) { GenericGroup element = (GenericGroup) iter.next(); if (element.getGroupType().equalsIgnoreCase("general")) { filteredList.add(element); } } return filteredList; } return null; } public static List getUsersInPrimaryGroup(GenericGroup group) { List users = UserBusiness.getUsersInPrimaryGroup(group); if ( users != null ) { return users; } return null; } public static List getAllUsersByLetter(IWContext iwc,String letter) { try { List allUsers = EntityFinder.findAllByColumn(UserBMPBean.getStaticInstance(),UserBMPBean.getColumnNameFirstName(),letter+"%"); if ( allUsers != null ) { allUsers.remove(iwc.getAccessController().getAdministratorUser()); } return allUsers; } catch (Exception e) { return null; } } public static List getUsersInNoGroups(GenericGroup group) { try { return UserBusiness.getUsersInGroup(group); } catch (Exception e) { return null; } } public static List getUsersInNoGroups() { try { return UserBusiness.getUsersInNoGroup(); } catch (SQLException e) { return null; } } public static StaffLocalized getLocalizedStaff(StaffEntity entity, int iLocaleID){ try { List list = null; try { list = EntityFinder.findRelated(entity,GenericEntity.getStaticInstance(StaffLocalized.class)); } catch (Exception e) { list = null; } if ( list != null ) { Iterator iter = list.iterator(); while (iter.hasNext()) { StaffLocalized item = (StaffLocalized) iter.next(); if ( item.getLocaleId() == iLocaleID ) { return item; } } } return null; } catch (Exception e) { e.printStackTrace(); return null; } } public static List getStaffHolders(List users,IWContext iwc) { return getStaffHolders(users,ICLocaleBusiness.getLocaleId(iwc.getCurrentLocale())); } public static List getStaffHolders(List users,int localeID) { Vector staffHolders = new Vector(); if ( users != null ) { Iterator iter = users.iterator(); while (iter.hasNext()) { staffHolders.add(getStaffHolder((User)iter.next(),localeID)); } } return staffHolders; } public static StaffHolder getStaffHolder(int userID,IWContext iwc) { User user = StaffFinder.getUser(userID); return getStaffHolder(user,ICLocaleBusiness.getLocaleId(iwc.getCurrentLocale())); } public static StaffHolder getStaffHolder(int userID,int localeID) { User user = StaffFinder.getUser(userID); return getStaffHolder(user,localeID); } public static StaffHolder getStaffHolder(User user,int localeID) { StaffEntity staff = getStaff(user.getID()); StaffLocalized staffInfo = getLocalizedStaff(staff,localeID); StaffMeta[] staffMeta = getMeta(user.getID(),localeID); Phone workPhone = UserBusiness.getUserPhone(user.getID(),com.idega.core.contact.data.PhoneTypeBMPBean.WORK_PHONE_ID); Phone mobilePhone = UserBusiness.getUserPhone(user.getID(),com.idega.core.contact.data.PhoneTypeBMPBean.MOBILE_PHONE_ID); Email email = UserBusiness.getUserMail(user); StaffHolder holder = new StaffHolder(user); if ( user != null ) { IWTimestamp stamp = null; if ( user.getDateOfBirth() != null ) { stamp = new IWTimestamp(user.getDateOfBirth()); } IWTimestamp dateToday = new IWTimestamp(); int userAge = 0; if ( stamp != null ) { userAge = (new IWTimestamp().getDaysBetween(stamp,dateToday))/365; } /* holder.setFirstName(user.getFirstName()); holder.setMiddleName(user.getMiddleName()); holder.setLastName(user.getLastName()); */ holder.setAge(userAge); // holder.setUserID(user.getID()); } if ( staff != null ) { if ( staff.getBeganWork() != null ) { holder.setBeganWork(new IWTimestamp(staff.getBeganWork())); } holder.setImageID(staff.getImageID()); } if ( staffInfo != null ) { holder.setArea(staffInfo.getArea()); holder.setEducation(staffInfo.getEducation()); holder.setTitle(staffInfo.getTitle()); } else {//Legacy try { StaffInfo info = getStaffInfo(user.getID()); holder.setArea(info.getArea()); holder.setEducation(info.getEducation()); holder.setTitle(info.getTitle()); } catch (Exception ex) { // } } if ( staffMeta != null ) { String[] attributes = new String[staffMeta.length]; String[] values = new String[staffMeta.length]; for ( int a = 0; a < staffMeta.length; a++ ) { attributes[a] = staffMeta[a].getAttribute(); values[a] = staffMeta[a].getValue(); } holder.setMetaAttributes(attributes); holder.setMetaValues(values); } if ( workPhone != null ) { holder.setWorkPhone(workPhone.getNumber()); } if ( mobilePhone != null ) { holder.setMobilePhone(mobilePhone.getNumber()); } if ( email != null ) { holder.setEmail(email.getEmailAddress()); } return holder; } } // Class StaffFinder