package kr.wisestone.owl.service.impl; import com.google.common.collect.Lists; import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.Severity; import kr.wisestone.owl.domain.Workspace; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.repository.SeverityRepository; import kr.wisestone.owl.service.SeverityService; import kr.wisestone.owl.service.UserService; import kr.wisestone.owl.service.WorkspaceService; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.vo.SeverityVo; 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; import java.util.Map; @Service public class SeverityServiceImpl extends AbstractServiceImpl> implements SeverityService { private static final Logger log = LoggerFactory.getLogger(SeverityServiceImpl.class); @Autowired private SeverityRepository severityRepository; @Autowired private WorkspaceService workspaceService; @Autowired private UserService userService; @Override protected JpaRepository getRepository() { return this.severityRepository; } @Override @Transactional(readOnly = true) public List findByWorkspaceIdOrderByPosition() { Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); return this.severityRepository.findByWorkspaceIdOrderByPosition(workspace.getId()); } // 중요도 아이디로 우선순위를 조회한다. @Transactional(readOnly = true) @Override public Severity getSeverity(Long id) { if (id == null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.SEVERITY_NOT_EXIST)); } Severity severity = this.findOne(id); if (severity == null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.SEVERITY_NOT_EXIST)); } return severity; } // 중요도 목록을 조회한다. @Override @Transactional(readOnly = true) public List findSeverity(Map resJsonData) { List severityVos = ConvertUtil.convertObjectsToClasses(this.findByWorkspaceIdOrderByPosition(), SeverityVo.class); resJsonData.put(Constants.RES_KEY_CONTENTS, severityVos); return severityVos; } // 기본적으로 제공되는 우선순위 목록록 @Override @Transactional public void addDefaultSeverity(Workspace workspace) { List severities = Lists.newArrayList(); severities.add(new Severity(this.messageAccessor.message("common.critical"), 1, "#ed5565", workspace)); severities.add(new Severity(this.messageAccessor.message("common.major"), 2, "#f8ac59", workspace)); severities.add(new Severity(this.messageAccessor.message("common.minor"), 3, "#1c84c6", workspace)); severities.add(new Severity(this.messageAccessor.message("common.trivial"), 4, "#23c6c8", workspace)); this.severityRepository.saveAll(severities); } // 업무공간에 있는 중요도 목록을 가져온다. @Override @Transactional(readOnly = true) public List findByWorkspaceId() { return this.severityRepository.findByWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); } }