package kr.wisestone.owl.web.form; import com.google.common.collect.Lists; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.util.MapUtil; import kr.wisestone.owl.vo.*; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Created by wisestone on 2018-01-03. */ public class WorkflowForm { private Long id; private Long workspaceId; private String name; private String description; private List issueStatusVos = Lists.newArrayList(); private List removeIds = Lists.newArrayList(); private List workflowDepartmentVos = Lists.newArrayList(); public WorkflowForm(){} public static WorkflowForm make(Map params) { WorkflowForm form = ConvertUtil.convertMapToClass(params, WorkflowForm.class); if (MapUtil.getLongs(params, "removeIds") != null) { form.setRemoveIds(MapUtil.getLongs(params, "removeIds")); } List> tempIssueStatusVos = (List)params.get("issueStatusVos"); List> nodes = (List)params.get("nodes"); List> links = (List)params.get("links"); if (tempIssueStatusVos == null) { return form; } for (Map issueStatusVo : tempIssueStatusVos) { IssueStatusVo addIssueStatusVo = ConvertUtil.convertMapToClass(issueStatusVo, IssueStatusVo.class); // issueStatus x, y 좌표 값 변경 정보 셋팅 for (Map node : nodes) { Long nodeId = MapUtil.getLong(node, "id"); if (nodeId == null) { break; } if (nodeId.equals(addIssueStatusVo.getId())) { addIssueStatusVo.setxLocation((long)Double.parseDouble(MapUtil.getString(node, "x"))); addIssueStatusVo.setyLocation((long)Double.parseDouble(MapUtil.getString(node, "y"))); break; } } List> workflowTransitionVos = (List)issueStatusVo.get("workflowTransitionVos"); for (Map workflowTransitionVo : workflowTransitionVos) { String workflowTransitionId = MapUtil.getString(workflowTransitionVo, "id"); if (workflowTransitionId == null) { continue; } for (Map link : links) { String linkId = MapUtil.getString(link, "id"); if (linkId == null) { break; } // 회전 반경 보정 값 셋팅 if (workflowTransitionId.equals(linkId)) { workflowTransitionVo.put("correctX", (long)Double.parseDouble(MapUtil.getString(link, "correctX"))); workflowTransitionVo.put("correctY", (long)Double.parseDouble(MapUtil.getString(link, "correctY"))); workflowTransitionVo.put("direct", MapUtil.getBoolean(link, "direct")); } } } // 담당 부서 셋팅 List> workflowDepartments = (List)issueStatusVo.get("workflowDepartmentVos"); List departmentVos = Lists.newArrayList(); for (Map workflowDepartment : workflowDepartments) { Map department = (Map)workflowDepartment.get("departmentVo"); DepartmentVo departmentVo = ConvertUtil.convertMapToClass(department, DepartmentVo.class); WorkflowDepartmentVo workflowDepartmentVo = new WorkflowDepartmentVo(); workflowDepartmentVo.setDepartmentVo(departmentVo); workflowDepartmentVo.setIssueStatusVo(addIssueStatusVo); departmentVos.add(workflowDepartmentVo); } addIssueStatusVo.setWorkflowDepartmentVos(departmentVos); addIssueStatusVo.setWorkflowTransitionVos(ConvertUtil.convertListToListClass(workflowTransitionVos, WorkflowTransitionVo.class)); form.addIssueStatusVos(addIssueStatusVo); } return form; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getWorkspaceId() { return workspaceId; } public void setWorkspaceId(Long workspaceId) { this.workspaceId = workspaceId; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getIssueStatusVos() { return issueStatusVos; } public void setIssueStatusVos(List issueStatusVos) { this.issueStatusVos = issueStatusVos; } public void addIssueStatusVos(IssueStatusVo issueStatusVo) { this.issueStatusVos.add(issueStatusVo); } public List getRemoveIds() { return removeIds; } public void setRemoveIds(List removeIds) { this.removeIds = removeIds; } public void addRemoveIds(Long removeId) { this.removeIds.add(removeId); } public List getWorkflowDepartmentVos() { return workflowDepartmentVos; } public void setWorkflowDepartmentVos(List workflowDepartmentVos) { this.workflowDepartmentVos = workflowDepartmentVos; } }