package kr.wisestone.owl.service.impl; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import kr.wisestone.owl.domain.Permission; import kr.wisestone.owl.domain.User; import kr.wisestone.owl.repository.PermissionRepository; import kr.wisestone.owl.service.PermissionService; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.vo.PermissionVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service public class PermissionServiceImpl extends AbstractServiceImpl> implements PermissionService { private static final Logger log = LoggerFactory.getLogger(PermissionServiceImpl.class); @Autowired private PermissionRepository permissionRepository; @Override protected JpaRepository getRepository() { return this.permissionRepository; } @Override @Transactional(readOnly = true) public List findByUserId() { User user = this.webAppUtil.getLoginUserObject(); List allPermission = ConvertUtil.convertObjectsToClasses(this.permissionRepository.findAll(), PermissionVo.class); List userPermissions = Lists.newArrayList(); if (user != null) { userPermissions.addAll(ConvertUtil.convertObjectsToClasses(this.permissionRepository.findByUserId(user.getId()), PermissionVo.class)); } this.setPermissionActiveYn(allPermission, userPermissions); return allPermission; } @Override @Transactional(readOnly = true) public List findByRoleType(String roleType) { return this.permissionRepository.findByRoleType(roleType); } private void setPermissionActiveYn(List allPermissionVos, List userPermissionVos) { for (PermissionVo permissionVo : allPermissionVos) { final Long permissionId = permissionVo.getId(); PermissionVo userPermission = Iterables.find(userPermissionVos, new Predicate() { @Override public boolean apply(PermissionVo input) { return input.getId().equals(permissionId); } }, null); if (userPermission != null) { permissionVo.setActiveYn(Boolean.TRUE); } } } }