package fi.arcusys.koku.common.external; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import javax.ejb.EJB; import javax.ejb.Stateless; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import fi.arcusys.koku.common.soa.Group; import fi.arcusys.koku.common.soa.UserInfo; /** * DAO implementation for accessing user-visible groups-related information. * * @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi) * Oct 17, 2011 */ @Stateless public class GroupsDAOImpl implements GroupsDAO { private final static Logger logger = LoggerFactory.getLogger(GroupsDAOImpl.class); @EJB private CustomerServiceDAO customerDao; @EJB private LdapDAO ldapDao; /** * @param searchString * @param limit * @return */ @Override public List<Group> searchGroups(String searchString, int limit) { if (limit <= 0) { return Collections.emptyList(); } final Map<String, String> groups = ldapDao.searchGroups(searchString); final List<Group> result = new ArrayList<Group>(); for (final Map.Entry<String, String> entry : groups.entrySet()) { final Group group = new Group(); group.setGroupUid(entry.getKey()); group.setGroupName(entry.getValue()); result.add(group); if (result.size() >= limit) { return result; } } return result; } /** * @param groupUid * @return */ @Override public List<UserInfo> getUsersByGroupUid(String groupUid) { final List<UserInfo> result = new ArrayList<UserInfo>(); for (final String memberName : ldapDao.getGroupMembers(groupUid)) { result.add(customerDao.getKunpoUserInfoBySsn(customerDao.getSsnByKunpoName(memberName))); } return result; } }