package fr.openwide.core.jpa.security.business.person.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import fr.openwide.core.jpa.business.generic.service.GenericEntityServiceImpl; import fr.openwide.core.jpa.exception.SecurityServiceException; import fr.openwide.core.jpa.exception.ServiceException; import fr.openwide.core.jpa.search.service.IHibernateSearchService; import fr.openwide.core.jpa.security.business.person.dao.IGenericUserGroupDao; import fr.openwide.core.jpa.security.business.person.model.GenericUser; import fr.openwide.core.jpa.security.business.person.model.GenericUserGroup; import fr.openwide.core.jpa.security.business.person.model.IUserGroupBinding; public abstract class GenericUserGroupServiceImpl<G extends GenericUserGroup<G, U>, U extends GenericUser<U, G>> extends GenericEntityServiceImpl<Long, G> implements IGenericUserGroupService<G, U> { private static final IUserGroupBinding BINDING = new IUserGroupBinding(); private static final String[] SEARCH_FIELDS = new String[] { BINDING.name().getPath() }; @Autowired private IGenericUserService<U> userService; @Autowired private IHibernateSearchService hibernateSearchService; protected IGenericUserGroupDao<G, U> personGroupDao; @Autowired public GenericUserGroupServiceImpl(IGenericUserGroupDao<G, U> personGroupDao) { super(personGroupDao); this.personGroupDao = personGroupDao; } @Override public G getByName(String name) { return personGroupDao.getByName(name); } @Override public void addUser(G group, U person) throws ServiceException, SecurityServiceException { person.addGroup(group); update(group); userService.update(person); } @Override public void removeUser(G group, U person) throws ServiceException, SecurityServiceException { person.removeGroup(group); update(group); userService.update(person); } @Override @Deprecated public List<G> searchAutocomplete(String searchPattern) throws ServiceException, SecurityServiceException { return hibernateSearchService.searchAutocomplete(getObjectClass(), SEARCH_FIELDS, searchPattern); } }