package kr.wisestone.owl.service.impl; import com.google.common.collect.Lists; import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.domain.*; import kr.wisestone.owl.repository.CustomFieldApiOverlapRepository; import kr.wisestone.owl.repository.IssueApiDefaultRepository; import kr.wisestone.owl.service.*; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.vo.*; import kr.wisestone.owl.web.form.CustomFieldApiOverlapForm; import kr.wisestone.owl.web.form.IssueApiDefaultForm; 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 CustomFieldApiOverlapServiceImpl extends AbstractServiceImpl> implements CustomFieldApiOverlapService { static final Logger log = LoggerFactory.getLogger(CustomFieldApiOverlapServiceImpl.class); @Autowired private CustomFieldApiOverlapRepository customFieldApiOverlapRepository; @Autowired private IssueTypeService issueTypeService; @Autowired private ProjectService projectService; @Autowired private CustomFieldService customFieldService; @Override protected JpaRepository getRepository() { return this.customFieldApiOverlapRepository; } @Override public List find(Long userId, Long issueTypeId) { return this.customFieldApiOverlapRepository.findByUserIdAndIssueTypeId(userId, issueTypeId); } @Override @Transactional public void find(Map resJsonData, CustomFieldApiOverlapForm form) { Long userId = this.webAppUtil.getLoginId(); List customFieldApiOverlaps = this.find(userId, form.getIssueTypeId()); if (customFieldApiOverlaps != null && customFieldApiOverlaps.size() > 0) { List customFieldApiOverlapVos = Lists.newArrayList(); for (CustomFieldApiOverlap customFieldApiOverlap : customFieldApiOverlaps) { CustomFieldApiOverlapVo customFieldApiOverlapVo = ConvertUtil.copyProperties(customFieldApiOverlap, CustomFieldApiOverlapVo.class); CustomField customField = customFieldApiOverlap.getCustomField(); if (customField != null) { customFieldApiOverlapVo.setCustomFieldVo(ConvertUtil.copyProperties(customField, CustomFieldVo.class)); } customFieldApiOverlapVos.add(customFieldApiOverlapVo); } resJsonData.put(Constants.RES_KEY_CONTENTS, customFieldApiOverlapVos); } } @Override @Transactional public boolean modify(Map resJsonData, CustomFieldApiOverlapForm form) { User user = this.webAppUtil.getLoginUserObject(); Project project = this.projectService.getProject(form.getProjectId()); List customFieldApiOverlaps = this.customFieldApiOverlapRepository.findByUserIdAndIssueTypeId(user.getId(), form.getIssueTypeId()); if (customFieldApiOverlaps != null && customFieldApiOverlaps.size() > 0) { this.customFieldApiOverlapRepository.deleteAll(customFieldApiOverlaps); } List customFieldApiOverlapList = Lists.newArrayList(); for (Long customFieldId : form.getCustomFieldIds()) { CustomFieldApiOverlap customFieldApiOverlap = ConvertUtil.copyProperties(form, CustomFieldApiOverlap.class); CustomField customField = this.customFieldService.getCustomField(customFieldId); customFieldApiOverlap.setCustomField(customField); customFieldApiOverlap.setUser(user); customFieldApiOverlap.setIssueType(this.issueTypeService.getIssueType(form.getIssueTypeId())); customFieldApiOverlap.setProject(project); customFieldApiOverlapList.add(customFieldApiOverlap); } this.customFieldApiOverlapRepository.saveAll(customFieldApiOverlapList); return true; } }