
com.linkare.commons.dao.security.impl.GroupDAO Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jpa.security Show documentation
Show all versions of jpa.security Show documentation
Project containing the base domain model for security concerns in JPA projects.
The newest version!
package com.linkare.commons.dao.security.impl;
import static com.linkare.commons.jpa.security.Group.FIND_BY_NAME_QUERYNAME;
import static com.linkare.commons.jpa.security.Group.QUERY_PARAM_NAME;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import com.linkare.commons.dao.jpa.GenericDAO;
import com.linkare.commons.dao.security.GroupService;
import com.linkare.commons.jpa.security.Group;
import com.linkare.commons.jpa.security.User;
import com.linkare.commons.utils.BooleanResult;
import com.linkare.commons.utils.EqualityUtils;
/**
*
* @author Paulo Zenida - Linkare TI
*
*/
public class GroupDAO extends GenericDAO implements GroupService {
public static final String ERROR_NAME_ALREADY_EXISTING = "error.name.already.existing";
private UserDAO userDAO;
/**
*
* @param em
* the entity manager to set.
*/
public GroupDAO(final EntityManager em) {
super(em);
this.userDAO = new UserDAO(em);
}
/**
* {@inheritDoc}
*/
@Override
protected BooleanResult canCreate(final Group group) {
final Group otherGroup = findByName(group.getName());
if (otherGroup != null) {
return new BooleanResult(Boolean.FALSE, ERROR_NAME_ALREADY_EXISTING);
}
return super.canCreate(group);
}
/**
* {@inheritDoc}
*/
@Override
protected BooleanResult canEdit(final Group group) {
final Group otherGroup = findByName(group.getName());
if (!EqualityUtils.equals(group, otherGroup)) {
return new BooleanResult(Boolean.FALSE, ERROR_NAME_ALREADY_EXISTING);
}
return super.canEdit(group);
}
/**
* {@inheritDoc}
*/
@Override
public Group findByName(final String name) {
try {
return (Group) getEntityManager().createNamedQuery(FIND_BY_NAME_QUERYNAME).setParameter(QUERY_PARAM_NAME, name).getSingleResult();
} catch (NoResultException e) {
return null;
}
}
/**
* {@inheritDoc}
*/
@Override
public List getNonMembers(final List members) {
final List result = userDAO.findAll();
result.removeAll(members);
return result;
}
/**
* {@inheritDoc}
*/
@Override
public Group setUsersMembership(final Group group, final List users) {
final Group mergedGroup = getEntityManager().merge(group);
mergedGroup.setChildPrincipalsMembership(users);
return mergedGroup;
}
/**
* {@inheritDoc}
*/
@Override
public void addUser(final Group group, final Long userId) {
getEntityManager().merge(group);
User user = userDAO.find(userId);
if (user != null) {
group.addDirectChild(user);
getEntityManager().merge(group);
}
}
/**
* {@inheritDoc}
*/
@Override
public void removeUser(final Group group, final Long userId) {
User user = userDAO.find(userId);
if (user != null) {
group.removeDirectChild(user);
getEntityManager().merge(group);
}
}
/**
* @return the userDAO
*/
public UserDAO getUserDAO() {
return userDAO;
}
/**
* @param userDAO
* the userDAO to set
*/
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy