package org.t4f.msc.services; import java.util.Iterator; import java.util.List; import java.util.logging.Logger; import org.t4f.msc.db.dao.SubscribersGroupDAO; import org.t4f.msc.model.SubscribersGroup; public class SubscribersGroupServices { private final static Logger LOGGER = Logger.getLogger("POCSAG-MSC"); public boolean create(SubscribersGroup subscribersGroup) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); if (subscribersGroupDAO.readByName(subscribersGroup.getName()) != null) { LOGGER.warning("Can't create subscribersGroup because it already exists"); return true; } return subscribersGroupDAO.create(subscribersGroup); } public SubscribersGroup read(int id) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.read(id); } public SubscribersGroup readByName(String name) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.readByName(name); } public boolean update(SubscribersGroup subscribersGroup) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.update(subscribersGroup); } public boolean delete(SubscribersGroup subscribersGroup) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.delete(subscribersGroup); } public boolean delete(int id) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.delete(id); } public List<SubscribersGroup> findAll() { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.findAll(); } // Returns all the groups and sets the member attribute of each group in case the user is member public List<SubscribersGroup> getGroupsMembershipByUserId(int userId) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); List<SubscribersGroup> list = subscribersGroupDAO.findAll(); List<SubscribersGroup> tmpList = subscribersGroupDAO.findByUserId(userId); for (SubscribersGroup group: list) { if (tmpList.contains(group)) group.setMember(true); } return list; } // Returns only the groups the user is member public List<SubscribersGroup> findByUserId(int userId) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.findByUserId(userId); } // Update the membership of the user. public boolean setGroupsMembershipByUserId(int userId, List<SubscribersGroup> list) { List<SubscribersGroup> oldList = getGroupsMembershipByUserId(userId); Iterator<SubscribersGroup> oldListIterator = oldList.iterator(); Iterator<SubscribersGroup> listIterator = list.iterator(); boolean errors = false; while (listIterator.hasNext()) { SubscribersGroup group = listIterator.next(); SubscribersGroup oldGroup = oldListIterator.next(); if (group.isMember() && !oldGroup.isMember()) { // Add group memebership errors |= addSubscriberToGroup(userId, group.getId()); } else if (!group.isMember() && oldGroup.isMember()) { // Remove group membership errors |= deleteSubscriberFromGroup(userId, group.getId()); } } return errors; } public boolean addSubscriberToGroup(int idSubscriber, int idGroup) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.addSubscriberToGroup(idSubscriber, idGroup); } public boolean deleteSubscriberFromGroup(int idSubscriber, int idGroup) { SubscribersGroupDAO subscribersGroupDAO = new SubscribersGroupDAO(); return subscribersGroupDAO.deleteSubscriberFromGroup(idSubscriber, idGroup); } }