package com.vci.client.workflow.editor; public class CandidateData { /** * 候选人数据定义组分隔符 */ public final static String CANDIDATE_GROUP_SPLIT_CHAR = ";"; /** * 每组内,各个候选人数据之间的分隔符 */ public final static String CANDIDATE_DATA_SPLIT_CHAR = ","; /** * 是否定义了成员 */ private boolean userDefined = false; /** * 是否定义了角色 */ private boolean roleDefined = false; /** * 是否定义了部门 */ private boolean deptDefined = false; /** * 成员候选人定义数据 */ private String userDefinedString = ""; /** * 角色候选人数据 */ private String roleDefinedString = ""; /** * 部门候选人定义数据 */ private String deptDefinedString = ""; /** * 成员候选人定义数组(已分解) */ private String[] userDefinedStrings = new String[]{}; /** * 角色候选人数据(已分解) */ private String[] roleDefinedStrings = new String[]{}; /** * 部门候选人定义数据(已分解) */ private String[] deptDefinedStrings = new String[]{}; /** * 候选人定义数据内容 */ private String candidateDefineString = ""; /** * 构造CandidateData 对象 * @param candidateDefinedString 流程任务节点上的候选人定义数据 */ public CandidateData(String candidateDefinedString){ this.candidateDefineString = candidateDefinedString; calcCandidateData(); } private void calcCandidateData(){ String userName = this.candidateDefineString; // 兼容曾经约定不需要最后一个;的情况 // 如果定义的数据中,;(分号)的个数不等于3,则补充;(分号)以达到新约定->只要定义了,就一定是3个;(分号) int max = 3; int count = 0; for(char c : userName.toCharArray()){ if(String.valueOf(c).equals(";")){ count += 1; } } for(int i = count; i < max; i++){ userName += ";"; } /** * 支持的有效数据格式列表: * ;;; * ;r1;; * ;r1;d1; * ;;d1; * u1;;; * u1;;d1; * u1;r1;; * u1;r1;d1; */ userName = userName.replaceAll(",;", ";"); // u001,;roleId,;deptId,; -> u001;roleId;deptId; userName = userName.replaceAll(";,", ";"); // ,u001;,roleId;,deptId; -> ,u001;roleId;deptId; if(userName.startsWith(",")){ userName = userName.substring(1); // ,u001;roleId;deptId; -> u001;roleId;deptId; } int firstSplitIndex = userName.indexOf(";"); boolean userDefined = (firstSplitIndex != 1); int userDefinedBeginIndex = 0; int userDefinedEndIndex = userName.indexOf(";"); String subString = userName.substring(firstSplitIndex + 1); int secondSplitIndex = subString.indexOf(";"); boolean roleDefined = (secondSplitIndex != 1); int roleDefinedBeginIndex = (userDefinedEndIndex + 1); int roleDefinedEndIndex = (userDefinedEndIndex + secondSplitIndex + 1); subString = subString.substring(secondSplitIndex + 1); int thirdSplitindex = subString.indexOf(";"); boolean deptDefined = (thirdSplitindex != 1); int deptDefinedBeginIndex = roleDefinedEndIndex + 1; int deptDefinedEndIndex = userName.lastIndexOf(";"); String userDefinedString = userName.substring(userDefinedBeginIndex, userDefinedEndIndex); String roleDefinedString = userName.substring(roleDefinedBeginIndex, roleDefinedEndIndex); String deptDefinedString = userName.substring(deptDefinedBeginIndex, deptDefinedEndIndex); String[] userDefinedStrings = userDefinedString.length() == 0 ? new String[]{} : userDefinedString.split(","); String[] roleDefinedStrings = roleDefinedString.length() == 0 ? new String[]{} : roleDefinedString.split(","); String[] deptDefinedStrings = deptDefinedString.length() == 0 ? new String[]{} : deptDefinedString.split(","); this.userDefined = userDefined; this.roleDefined = roleDefined; this.deptDefined = deptDefined; this.userDefinedString = userDefinedString; this.roleDefinedString = roleDefinedString; this.deptDefinedString = deptDefinedString; this.userDefinedStrings = userDefinedStrings; this.roleDefinedStrings = roleDefinedStrings; this.deptDefinedStrings = deptDefinedStrings; } /** * *
Description:
* * @author xchao * @time 2012-11-13 * @return */ public String getCandidateDefineString() { return candidateDefineString; } public void setCandidateDefineString(String candidateDefineString) { this.candidateDefineString = candidateDefineString; } public boolean isUserDefined() { return userDefined; } public boolean isRoleDefined() { return roleDefined; } public boolean isDeptDefined() { return deptDefined; } public String getUserDefinedString() { return userDefinedString; } public String getRoleDefinedString() { return roleDefinedString; } public String getDeptDefinedString() { return deptDefinedString; } public String[] getUserDefinedStrings() { return userDefinedStrings; } public String[] getRoleDefinedStrings() { return roleDefinedStrings; } public String[] getDeptDefinedStrings() { return deptDefinedStrings; } }