package fr.openwide.core.basicapp.core.business.user.search; import java.util.Set; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.google.common.collect.Sets; import fr.openwide.core.basicapp.core.business.user.model.User; import fr.openwide.core.basicapp.core.business.user.model.UserGroup; import fr.openwide.core.basicapp.core.util.binding.Bindings; import fr.openwide.core.jpa.more.business.search.query.AbstractHibernateSearchSearchQuery; @Component @Scope("prototype") public class UserGroupSearchQueryImpl extends AbstractHibernateSearchSearchQuery<UserGroup, UserGroupSort> implements IUserGroupSearchQuery { public UserGroupSearchQueryImpl() { super(UserGroup.class, UserGroupSort.NAME); } @Override public IUserGroupSearchQuery user(User user) { Set<Long> ids = Sets.newHashSet(); for (UserGroup userGroup : user.getGroups()) { ids.add(userGroup.getId()); } if (ids.isEmpty()) { must(matchIfGiven(Bindings.userGroup().id(), -1L)); } else { must(matchOneIfGiven(Bindings.userGroup().id(), ids)); } return this; } @Override public IUserGroupSearchQuery name(String name) { must(matchIfGiven(Bindings.userGroup().name(), name)); return this; } }