|
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;
|
}
|
/**
|
*
|
* <p>Description: </p>
|
*
|
* @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;
|
}
|
}
|