* @return
*/
protected List<String> getParticipantsByWorkflowVariable(PackageParticipant participant, String activityId) {
List<String> resultList = new ArrayList<String>();
ApplicationContext appContext = AppUtil.getApplicationContext();
DirectoryManager directoryManager = (DirectoryManager) appContext.getBean("directoryManager");
WorkflowManager workflowManager = (WorkflowManager) appContext.getBean("workflowManager");
String variableName = null;
String variableType = null;
String variableStr = participant.getValue();
if (variableStr != null) {
StringTokenizer st = new StringTokenizer(variableStr.replaceAll(";", ","), ",");
if (st.hasMoreTokens()) {
variableName = st.nextToken();
}
if (st.hasMoreTokens()) {
variableType = st.nextToken();
}
}
//if is workflow variable
Collection<WorkflowVariable> varList = workflowManager.getActivityVariableList(activityId);
for (WorkflowVariable va : varList) {
if (va.getName() != null && va.getName().equals(variableName)) {
String variableValue = (String) va.getVal();
variableValue = variableValue.replace(",", ";");
StringTokenizer valueST = new StringTokenizer(variableValue, ";");
Collection<User> users = new ArrayList<User>();
while (valueST.hasMoreTokens()) {
String value = valueST.nextToken();
value = value.trim();
if (PackageParticipant.TYPE_GROUP.equals(variableType)) {
Collection<User> tempUsers = directoryManager.getUserByGroupId(value);
users.addAll(tempUsers);
} else if (PackageParticipant.TYPE_USER.equals(variableType)) {
User user = directoryManager.getUserByUsername(value);
users.add(user);
} else if (PackageParticipant.TYPE_HOD.equals(variableType)) {
User user = directoryManager.getDepartmentHod(value);
users.add(user);
} else if (PackageParticipant.TYPE_DEPARTMENT.equals(variableType)) {
Collection<User> tempUsers = directoryManager.getUserByDepartmentId(value);
users.addAll(tempUsers);
}
}
for (User user : users) {
if (user != null && user.getActive() == User.ACTIVE) {