RolesHbmDAO.java

package org.europa.together.application.acl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.persistence.EntityNotFoundException;
import org.europa.together.application.GenericHbmDAO;
import org.europa.together.application.LogbackLogger;
import org.europa.together.business.Logger;
import org.europa.together.business.acl.RolesDAO;
import org.europa.together.domain.JpaPagination;
import org.europa.together.domain.LogLevel;
import org.europa.together.domain.acl.RolesDO;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

/**
 * Implementation of the RolesDAO.
 */
@Repository
@Transactional
public class RolesHbmDAO extends GenericHbmDAO<RolesDO, String> implements RolesDAO {

    private static final long serialVersionUID = 5L;
    private static final Logger LOGGER = new LogbackLogger(RolesDAO.class);

    /**
     * Default Constructor.
     */
    public RolesHbmDAO() {
        super();
        LOGGER.log("instance class", LogLevel.INFO);
    }

    @Override
    public void delete(final String roleName) throws EntityNotFoundException {
        RolesDO role = find(roleName);
        if (role != null) {
            if (role.isDeleteable()) {
                mainEntityManagerFactory.remove(role);
            }
        } else {
            throw new EntityNotFoundException("Role(" + role.getName()
                    + ") can't deleted, because it is protected.");
        }
    }

    @Override
    @Transactional(readOnly = true)
    public List<RolesDO> listProtectedRoles() {

        Map<String, Boolean> filter = new HashMap<>();
        filter.put("deleteable", Boolean.FALSE);

        JpaPagination pagination = new JpaPagination("name");
        pagination.setFilterBooleanCriteria(filter);

        return listAllElements(pagination);
    }
}