| | |
| | | for (Map<String, Object> map : issueCustomFields) { |
| | | Map<String, Object> result = new HashMap<>(); |
| | | // customFieldVo 에서 사용자 정의 필드와 이슈 유형에 연결된 사용자 정의 필드 정보를 가져온다. |
| | | this.getCustomFieldAndIssueTypeCustomField(map, issue, result); |
| | | List<String> useValues = MapUtil.getStrings(map, "useValues"); |
| | | boolean useCustomField = this.getCustomFieldAndIssueTypeCustomField(map, issue, result); |
| | | if (useCustomField) { |
| | | List<String> useValues = MapUtil.getStrings(map, "useValues"); |
| | | |
| | | if (useValues != null) { |
| | | for (String useValue : useValues) { |
| | | if (!StringUtils.isEmpty(useValue)) { |
| | | // Xss 공격 방어를 위해 script 공백으로 치환 |
| | | IssueCustomFieldValue issueCustomFieldValue = new IssueCustomFieldValue(issue, (CustomField)result.get("customField"), (IssueTypeCustomField)result.get("issueTypeCustomField"), useValue); |
| | | issueCustomFieldValues.add(issueCustomFieldValue); |
| | | if (useValues != null) { |
| | | for (String useValue : useValues) { |
| | | if (!StringUtils.isEmpty(useValue)) { |
| | | // Xss 공격 방어를 위해 script 공백으로 치환 |
| | | IssueCustomFieldValue issueCustomFieldValue = new IssueCustomFieldValue(issue, (CustomField) result.get("customField"), (IssueTypeCustomField) result.get("issueTypeCustomField"), useValue); |
| | | issueCustomFieldValues.add(issueCustomFieldValue); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (issueCustomFieldValues.size() > 0) { |
| | | try { |
| | | this.issueCustomFieldValueRepository.saveAll(issueCustomFieldValues); |
| | | } catch (Exception ex) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.CUSTOM_FIELD_NOT_EXIST)); |
| | | } |
| | | this.issueCustomFieldValueRepository.saveAll(issueCustomFieldValues); |
| | | } |
| | | } |
| | | |
| | | // customFieldVo 에서 사용자 정의 필드와 이슈 유형에 연결된 사용자 정의 필드 정보를 가져온다. |
| | | @Override |
| | | public void getCustomFieldAndIssueTypeCustomField(Map<String, Object> map, Issue issue, Map<String, Object> result) { |
| | | public boolean getCustomFieldAndIssueTypeCustomField(Map<String, Object> map, Issue issue, Map<String, Object> result) { |
| | | Map<String, Object> customFieldMap = (Map<String, Object>) MapUtil.getObject(map, "customFieldVo"); |
| | | CustomField customField = this.customFieldService.getCustomField(MapUtil.getLong(customFieldMap, "id")); |
| | | IssueTypeCustomField issueTypeCustomField = this.issueTypeCustomFieldService.findByProjectIdAndIssueTypeIdAndCustomFieldId(issue.getProject().getId(), issue.getIssueType().getId(), customField.getId()); |
| | | if (issueTypeCustomField == null) { |
| | | // 설정된 사용자 정의 필드가 없을때 |
| | | return false; |
| | | } |
| | | |
| | | result.put("customField", customField); |
| | | result.put("issueTypeCustomField", issueTypeCustomField); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | // 이슈에 연결된 사용자 정의 필드 값을 조회한다. |