package kr.wisestone.owl.web.form; import com.google.common.collect.Lists; import kr.wisestone.owl.domain.Issue; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.util.MapUtil; import kr.wisestone.owl.vo.CompanyFieldVo; import java.util.List; import java.util.Map; /** * Created by wisestone on 2018-01-03. */ public class IssueForm implements Cloneable { private Long id; private Long projectId; private Long issueStatusId; private Long issueTypeId; private Long priorityId; private Long severityId; private String title; private String description; private String startDate; private String completeDate; private Long issueNumber; private Long registerId; // 등록자 아이디 - issue insert batch 에서 사용 private List userIds = Lists.newArrayList(); private List departmentIds = Lists.newArrayList(); // 담당 부서 private List sendEmails = Lists.newArrayList(); // 이메일 발송 대상자 private String template; private List attachedFileIds = Lists.newArrayList(); private Long relationIssue; // 연관 일감 private List> issueCustomFields = Lists.newArrayList(); private List removeFiles = Lists.newArrayList(); private List removeIds = Lists.newArrayList(); private List ids = Lists.newArrayList(); // 이슈 다중 상태 변경에서 사용 private String comment; // 이슈 상태 변경에서 변경 사유를 입력할 때 사용 private List> issueCompanyFields = Lists.newArrayList(); private List> issueIspFields = Lists.newArrayList(); private List> issueHostingFields = Lists.newArrayList(); //파트너 정보 직접추가 private String companyName; private String companyManager; private String companyTel; private String companyUrl; private String companyEmail; private String companyMemo; private String companyTypeName; private String parentSectorName; private String childSectorName; private String regionName; private String statusName; private String ispName; private String ispCode; private String ispManager; private String ispTel; private String ispUrl; private String ispEmail; private String ispMemo; private String hostingName; private String hostingCode; private String hostingManager; private String hostingTel; private String hostingUrl; private String hostingEmail; private String hostingMemo; private List> files = Lists.newArrayList(); // api용 첨부파일 private Long parentIssueId; // 상위 이슈 private String isApi = Issue.IS_API_NO; private List downIssuesStatus = Lists.newArrayList(); //하위이슈 상태 private Boolean inheritYn; public IssueForm() { } @Override public IssueForm clone() throws CloneNotSupportedException { return (IssueForm) super.clone(); } public static IssueForm make(Map params) { IssueForm form = ConvertUtil.convertMapToClass(params, IssueForm.class); // 시작일 ~ 종료일 String startCompleteDateRange = MapUtil.getString(params, "startCompleteDateRange"); if (startCompleteDateRange != null) { String[] taskPeriod = startCompleteDateRange.split("~"); form.setStartDate(taskPeriod[0].trim()); form.setCompleteDate(taskPeriod[1].trim()); } // 담당자 정보 if (MapUtil.getLongs(params, "userIds") != null) { form.setUserIds(MapUtil.getLongs(params, "userIds")); } // 담당부서 정보 if (MapUtil.getLongs(params, "departmentIds") != null) { form.setDepartmentIds(MapUtil.getLongs(params, "departmentIds")); } // 메일 발송자 정보 if (MapUtil.getStrings(params, "sendEmails") != null) { form.setSendEmails(MapUtil.getStrings(params, "sendEmails")); } // 메일 템플릿 정보 if (MapUtil.getString(params, "template") != null) { form.setTemplate(MapUtil.getString(params, "template")); } // 텍스트 에디터에 첨부된 파일을 이슈와 연결하는 정보 if (MapUtil.getLongs(params, "attachedFileIds") != null) { form.setAttachedFileIds(MapUtil.getLongs(params, "attachedFileIds")); } // 사용자 정의 필드 정보 if (MapUtil.getObject(params, "issueCustomFields") != null) { form.setIssueCustomFields((List)MapUtil.getObject(params, "issueCustomFields")); } // 삭제 첨부 파일 정보 if (MapUtil.getLongs(params, "removeFiles") != null) { form.setRemoveFiles(MapUtil.getLongs(params, "removeFiles")); } // 삭제 이슈 정보 if (MapUtil.getLongs(params, "removeIds") != null) { form.setRemoveIds(MapUtil.getLongs(params, "removeIds")); } // 다중 상태 변경에서 이슈 아이디 if (MapUtil.getLongs(params, "ids") != null) { form.setIds(MapUtil.getLongs(params, "ids")); } // 업체 필드 정보 if (MapUtil.getObject(params, "issueCompanyFields") != null){ form.setIssueCompanyFields((List)MapUtil.getObject(params, "issueCompanyFields")); } // ISP 필드 정보 if (MapUtil.getObject(params, "issueIspFields") != null){ form.setIssueIspFields((List)MapUtil.getObject(params, "issueIspFields")); } // HOSTING 필드 정보 if (MapUtil.getObject(params, "issueHostingFields") != null){ form.setIssueHostingFields((List)MapUtil.getObject(params, "issueHostingFields")); } // api 첨부파일 if (MapUtil.getObject(params, "files") != null){ form.setFiles((List)MapUtil.getObject(params, "files")); } // 하위이슈 상태 if (MapUtil.getObject(params, "downIssuesStatus") != null){ form.setDownIssuesStatus((List)MapUtil.getObject(params, "downIssuesStatus")); } if (MapUtil.getString(params, "companyName") != null) { form.setCompanyName(MapUtil.getString(params, "companyName")); } if (MapUtil.getString(params, "companyManager") != null) { form.setCompanyManager(MapUtil.getString(params, "companyManager")); } if (MapUtil.getString(params, "companyTel") != null) { form.setCompanyTel(MapUtil.getString(params, "companyTel")); } if (MapUtil.getString(params, "companyUrl") != null) { form.setCompanyUrl(MapUtil.getString(params, "companyUrl")); } if (MapUtil.getString(params, "companyEmail") != null) { form.setCompanyEmail(MapUtil.getString(params, "companyEmail")); } if (MapUtil.getString(params, "companyMemo") != null) { form.setCompanyMemo(MapUtil.getString(params, "companyMemo")); } if (MapUtil.getString(params, "companyTypeName") != null) { form.setCompanyTypeName(MapUtil.getString(params, "companyTypeName")); } if (MapUtil.getString(params, "parentSectorName") != null) { form.setParentSectorName(MapUtil.getString(params, "parentSectorName")); } if (MapUtil.getString(params, "childSectorName") != null) { form.setChildSectorName(MapUtil.getString(params, "childSectorName")); } if (MapUtil.getString(params, "regionName") != null) { form.setRegionName(MapUtil.getString(params, "regionName")); } if (MapUtil.getString(params, "statusName") != null) { form.setStatusName(MapUtil.getString(params, "statusName")); } if (MapUtil.getString(params, "ispName") != null) { form.setIspName(MapUtil.getString(params, "ispName")); } if (MapUtil.getString(params, "ispCode") != null) { form.setIspCode(MapUtil.getString(params, "ispCode")); } if (MapUtil.getString(params, "ispManager") != null) { form.setIspManager(MapUtil.getString(params, "ispManager")); } if (MapUtil.getString(params, "ispTel") != null) { form.setIspTel(MapUtil.getString(params, "ispTel")); } if (MapUtil.getString(params, "ispUrl") != null) { form.setIspUrl(MapUtil.getString(params, "ispUrl")); } if (MapUtil.getString(params, "ispEmail") != null) { form.setIspEmail(MapUtil.getString(params, "ispEmail")); } if (MapUtil.getString(params, "ispMemo") != null) { form.setIspMemo(MapUtil.getString(params, "ispMemo")); } if (MapUtil.getString(params, "hostingName") != null) { form.setHostingName(MapUtil.getString(params, "hostingName")); } if (MapUtil.getString(params, "hostingCode") != null) { form.setHostingCode(MapUtil.getString(params, "hostingCode")); } if (MapUtil.getString(params, "hostingManager") != null) { form.setHostingManager(MapUtil.getString(params, "hostingManager")); } if (MapUtil.getString(params, "hostingTel") != null) { form.setHostingTel(MapUtil.getString(params, "hostingTel")); } if (MapUtil.getString(params, "hostingUrl") != null) { form.setHostingUrl(MapUtil.getString(params, "hostingUrl")); } if (MapUtil.getString(params, "hostingEmail") != null) { form.setHostingEmail(MapUtil.getString(params, "hostingEmail")); } if (MapUtil.getString(params, "hostingMemo") != null) { form.setHostingMemo(MapUtil.getString(params, "hostingMemo")); } if (MapUtil.getBoolean(params, "inheritYn") != null) { form.setInheritYn(MapUtil.getBoolean(params, "inheritYn")); } return form; } // 중복값으로 사용하는 사용자정의필드만 다시 설정 public void setUseIssueCustomFields(List useIssueCustomFields) { List> results = Lists.newArrayList(); for (Map customValue : this.getIssueCustomFields()) { for (Long customFieldId : useIssueCustomFields) { // Map customFieldVo = (Map)MapUtil.getObject(customValue, "customFieldVo"); if (customFieldId.equals(MapUtil.getLong(customValue, "customFieldId"))) { results.add(customValue); } } } this.setIssueCustomFields(results); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getProjectId() { return projectId; } public void setProjectId(Long projectId) { this.projectId = projectId; } public Long getRelationIssue() { return this.relationIssue; } public void setRelationIssue(Long issues) { this.relationIssue = issues; } public Long getIssueStatusId() { return issueStatusId; } public void setIssueStatusId(Long issueStatusId) { this.issueStatusId = issueStatusId; } public Long getIssueTypeId() { return issueTypeId; } public void setIssueTypeId(Long issueTypeId) { this.issueTypeId = issueTypeId; } public Long getPriorityId() { return priorityId; } public void setPriorityId(Long priorityId) { this.priorityId = priorityId; } public Long getSeverityId() { return severityId; } public void setSeverityId(Long severityId) { this.severityId = severityId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getStartDate() { return startDate; } public void setStartDate(String startDate) { this.startDate = startDate; } public String getCompleteDate() { return completeDate; } public void setCompleteDate(String completeDate) { this.completeDate = completeDate; } public List getUserIds() { return userIds; } public void setUserIds(List userIds) { this.userIds = userIds; } public List getDepartmentIds() { return departmentIds; } public void setDepartmentIds(List departmentIds) { this.departmentIds = departmentIds; } public void addDepartmentId(Long departmentId) { if (this.departmentIds != null) { this.departmentIds.add(departmentId); } } public List getRemoveFiles() { return removeFiles; } public void setRemoveFiles(List removeFiles) { this.removeFiles = removeFiles; } public List> getIssueCustomFields() { return issueCustomFields; } public void setIssueCustomFields(List> issueCustomFields) { this.issueCustomFields = issueCustomFields; } public void addIssueCustomFields(Map issueCustomField) { this.issueCustomFields.add(issueCustomField); } public List getRemoveIds() { return removeIds; } public void setRemoveIds(List removeIds) { this.removeIds = removeIds; } public List getAttachedFileIds() { return attachedFileIds; } public void setAttachedFileIds(List attachedFileIds) { this.attachedFileIds = attachedFileIds; } public Long getIssueNumber() { return issueNumber; } public void setIssueNumber(Long issueNumber) { this.issueNumber = issueNumber; } public Long getRegisterId() { return registerId; } public void setRegisterId(Long registerId) { this.registerId = registerId; } public List getIds() { return ids; } public void setIds(List ids) { this.ids = ids; } public List getSendEmails() { return sendEmails; } public void setSendEmails(List sendEmails) { this.sendEmails = sendEmails; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public List> getIssueCompanyFields() { return issueCompanyFields; } public void setIssueCompanyFields(List> issueCompanyFields) { this.issueCompanyFields = issueCompanyFields; } public void addissueCompanyField(Map issueCompanyFields) { this.issueCompanyFields.add(issueCompanyFields); } public List> getIssueIspFields() { return issueIspFields; } public void setIssueIspFields(List> issueIspFields) { this.issueIspFields = issueIspFields; } public void addIssueIspField(Map issueIspFields) { this.issueIspFields.add(issueIspFields); } public List> getIssueHostingFields() { return issueHostingFields; } public void setIssueHostingFields(List> issueHostingFields) { this.issueHostingFields = issueHostingFields; } public void addIssueHostingField(Map issueHostingFields) { this.issueHostingFields.add(issueHostingFields); } public Long getParentIssueId() { return parentIssueId; } public void setParentIssueId(Long parentIssueId) { this.parentIssueId = parentIssueId; } public String getIsApi() { return isApi; } public void setIsApi(String isApi) { this.isApi = isApi; } public List> getFiles() { return files; } public void setFiles(List> files) { this.files = files; } public String getTemplate() { return template; } public void setTemplate(String template) { this.template = template; } public List getDownIssuesStatus() { return downIssuesStatus; } public void setDownIssuesStatus(List downIssuesStatus) { this.downIssuesStatus = downIssuesStatus; } public String getCompanyName() { return companyName; } public void setCompanyName(String companyName) { this.companyName = companyName; } public String getCompanyManager() { return companyManager; } public void setCompanyManager(String companyManager) { this.companyManager = companyManager; } public String getCompanyTel() { return companyTel; } public void setCompanyTel(String companyTel) { this.companyTel = companyTel; } public String getCompanyUrl() { return companyUrl; } public void setCompanyUrl(String companyUrl) { this.companyUrl = companyUrl; } public String getCompanyEmail() { return companyEmail; } public void setCompanyEmail(String companyEmail) { this.companyEmail = companyEmail; } public String getCompanyMemo() { return companyMemo; } public void setCompanyMemo(String companyMemo) { this.companyMemo = companyMemo; } public String getIspName() { return ispName; } public void setIspName(String ispName) { this.ispName = ispName; } public String getIspCode() { return ispCode; } public void setIspCode(String ispCode) { this.ispCode = ispCode; } public String getIspManager() { return ispManager; } public void setIspManager(String ispManager) { this.ispManager = ispManager; } public String getIspTel() { return ispTel; } public void setIspTel(String ispTel) { this.ispTel = ispTel; } public String getIspUrl() { return ispUrl; } public void setIspUrl(String ispUrl) { this.ispUrl = ispUrl; } public String getIspEmail() { return ispEmail; } public void setIspEmail(String ispEmail) { this.ispEmail = ispEmail; } public String getIspMemo() { return ispMemo; } public void setIspMemo(String ispMemo) { this.ispMemo = ispMemo; } public String getHostingName() { return hostingName; } public void setHostingName(String hostingName) { this.hostingName = hostingName; } public String getHostingCode() { return hostingCode; } public void setHostingCode(String hostingCode) { this.hostingCode = hostingCode; } public String getHostingManager() { return hostingManager; } public void setHostingManager(String hostingManager) { this.hostingManager = hostingManager; } public String getHostingTel() { return hostingTel; } public void setHostingTel(String hostingTel) { this.hostingTel = hostingTel; } public String getHostingUrl() { return hostingUrl; } public void setHostingUrl(String hostingUrl) { this.hostingUrl = hostingUrl; } public String getHostingEmail() { return hostingEmail; } public void setHostingEmail(String hostingEmail) { this.hostingEmail = hostingEmail; } public String getHostingMemo() { return hostingMemo; } public void setHostingMemo(String hostingMemo) { this.hostingMemo = hostingMemo; } public String getCompanyTypeName() { return companyTypeName; } public void setCompanyTypeName(String companyTypeName) { this.companyTypeName = companyTypeName; } public String getParentSectorName() { return parentSectorName; } public void setParentSectorName(String parentSectorName) { this.parentSectorName = parentSectorName; } public String getChildSectorName() { return childSectorName; } public void setChildSectorName(String childSectorName) { this.childSectorName = childSectorName; } public String getRegionName() { return regionName; } public void setRegionName(String regionName) { this.regionName = regionName; } public String getStatusName() { return statusName; } public void setStatusName(String statusName) { this.statusName = statusName; } public Boolean getInheritYn() { return inheritYn; } public void setInheritYn(Boolean inheritYn) { this.inheritYn = inheritYn; } }