Package com.sparc.knappsack.components.services

Source Code of com.sparc.knappsack.components.services.UserDomainServiceImpl

package com.sparc.knappsack.components.services;

import com.sparc.knappsack.components.dao.UserDomainDao;
import com.sparc.knappsack.components.entities.Domain;
import com.sparc.knappsack.components.entities.User;
import com.sparc.knappsack.components.entities.UserDomain;
import com.sparc.knappsack.enums.DomainType;
import com.sparc.knappsack.enums.UserRole;
import com.sparc.knappsack.models.UserDomainModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

@Transactional( propagation = Propagation.REQUIRED )
@Service("userDomainService")
public class UserDomainServiceImpl implements UserDomainService {

    @Qualifier("userDomainDao")
    @Autowired(required = true)
    private UserDomainDao userDomainDao;

    @Qualifier("userService")
    @Autowired(required = true)
    private UserService userService;

    @Qualifier("roleService")
    @Autowired(required = true)
    private RoleService roleService;

    @Override
    public UserDomain get(Long id) {
        return userDomainDao.get(id);
    }

    @Override
    public void delete(Long id) {
        delete(get(id));
    }

    @Override
    public void update(UserDomain userDomain) {
        userDomainDao.update(userDomain);
    }

    @Override
    public void add(UserDomain userDomain) {
        userDomainDao.add(userDomain);
    }

    @Override
    public UserDomain get(User user, Long domainId, UserRole userRole) {
        return userDomainDao.getUserDomain(user, domainId, userRole);
    }

    @Override
    public UserDomain get(User user, Long domainId) {
        UserDomain userDomain = null;
        if (user != null && domainId != null && domainId > 0) {
            userDomain = userDomainDao.getUserDomain(user, domainId);
        }
        return userDomain;
    }

    @Override
    public List<UserDomain> getAll(Long domainId) {
        List<UserDomain> userDomains = new ArrayList<UserDomain>();
        if (domainId != null && domainId > 0) {
            userDomains.addAll(userDomainDao.getUserDomainsForDomain(domainId));
        }
        return userDomains;
    }

    @Override
    public List<UserDomain> getAll(Long domainId, UserRole... userRoles) {
        List<UserDomain> userDomains = new ArrayList<UserDomain>();

        if (userRoles != null && userRoles.length > 0) {
            List<UserDomain> returnedUserDomains = userDomainDao.getUserDomainsForDomainAndRoles(domainId, userRoles);
            if (returnedUserDomains != null) {
                userDomains.addAll(returnedUserDomains);
            }
        }

        return userDomains;
    }

    @Override
    public List<UserDomain> getAll(Long domainId, DomainType domainType, UserRole... userRoles) {
        List<UserDomain> userDomains = new ArrayList<UserDomain>();

        if (domainType != null && userRoles != null && userRoles.length > 0) {
            List<UserDomain> returnedUserDomains = getAll(domainId, userRoles);
            if (returnedUserDomains != null) {
                for (UserDomain userDomain : returnedUserDomains) {
                    Domain domain = userDomain.getDomain();
                    if (domain != null && domainType.equals(domain.getDomainType())) {
                        userDomains.add(userDomain);
                    }
                }
            }
        }

        return userDomains;
    }

    @Override
    public List<UserDomain> getUserDomainsForEmailsAndDomains(List<String> emails, List<Long> domainIds) {
        if (CollectionUtils.isEmpty(emails) || CollectionUtils.isEmpty(domainIds)) {
            return new ArrayList<UserDomain>();
        }

        List<UserDomain> userDomains = userDomainDao.getUserDomainsForEmailsAndDomains(emails, domainIds);
        if (CollectionUtils.isEmpty(userDomains)) {
            return new ArrayList<UserDomain>();
        } else {
            return userDomains;
        }
    }

    @Override
    public void removeUserDomainFromDomain(Long domainId, Long userId) {
        if (domainId != null && domainId > 0 && userId != null && userId > 0) {
            User user = userService.get(userId);
            if (user != null && user.getUserDomains() != null) {
                UserDomain userDomain = userDomainDao.getUserDomain(user, domainId);

                if (userDomain != null) {
                    if (user.getUserDomains().contains(userDomain)) {
                        user.getUserDomains().remove(userDomain);
                    }

                    userDomainDao.delete(userDomain);
                }
            }
        }
    }

    @Override
    public void updateUserDomainRole(Long userId, Long domainId, UserRole userRole) {
        User user = userService.get(userId);
        UserDomain userDomain = get(user, domainId);

        if (userDomain != null) {
            userDomain.setRole(roleService.getRoleByAuthority(userRole.toString()));

            update(userDomain);
        }
    }

    @Override
    public void removeAllFromDomain(Long domainId) {
        if (domainId != null && domainId > 0) {
            userDomainDao.removeAllFromDomain(domainId);
        }
    }

    @Override
    public UserDomainModel createUserDomainModel(UserDomain userDomain) {
        UserDomainModel model = null;
        if (userDomain != null && userDomain.getDomain() != null) {
            model = new UserDomainModel();
            model.setId(userDomain.getId());
            model.setDomainId(userDomain.getDomain().getId());
            model.setDomainType(userDomain.getDomain().getDomainType());
            model.setUser(userService.createUsermodel(userDomain.getUser()));
            model.setUserRole(userDomain.getRole().getUserRole());
        }
        return model;
    }

    @Override
    public long countDomains(User user, DomainType domainType, UserRole userRole) {
        return userDomainDao.countDomains(user, userRole);
    }

    @Override
    public void delete(UserDomain userDomain) {
        if (userDomain != null) {
            userDomainDao.delete(userDomain);
        }
    }

    @Override
    public boolean doesEntityExist(Long id) {
        return get(id) != null;
    }
}
TOP

Related Classes of com.sparc.knappsack.components.services.UserDomainServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.