package com.jspxcms.core.service.impl;
import java.util.Arrays;
import java.util.Collection;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jspxcms.core.domain.Workflow;
import com.jspxcms.core.domain.WorkflowStep;
import com.jspxcms.core.listener.RoleDeleteListener;
import com.jspxcms.core.repository.WorkflowStepDao;
import com.jspxcms.core.service.WorkflowStepRoleService;
import com.jspxcms.core.service.WorkflowStepService;
import com.jspxcms.core.support.DeleteException;
@Service
@Transactional(readOnly = true)
public class WorkflowStepServiceImpl implements WorkflowStepService,
RoleDeleteListener {
public void save(String[] stepName, Integer[] stepRoleId, Workflow workflow) {
if (ArrayUtils.isNotEmpty(stepName)) {
WorkflowStep step;
for (int i = 0, len = stepName.length; i < len; i++) {
if (StringUtils.isNotBlank(stepName[i])) {
step = new WorkflowStep();
step.setWorkflow(workflow);
step.setName(stepName[i]);
step.setSeq(i);
step.applyDefaultValue();
step = dao.save(step);
stepRoleService.save(step, new Integer[] { stepRoleId[i] });
workflow.addStep(step);
}
}
}
}
@Transactional
public void delete(Collection<WorkflowStep> steps) {
if (steps != null) {
dao.delete(steps);
}
}
public void preRoleDelete(Integer[] ids) {
if (ArrayUtils.isNotEmpty(ids)) {
if (stepRoleService.countByRoleId(Arrays.asList(ids)) > 0) {
throw new DeleteException("workflow.management");
}
}
}
private WorkflowStepRoleService stepRoleService;
@Autowired
public void setStepRoleService(WorkflowStepRoleService stepRoleService) {
this.stepRoleService = stepRoleService;
}
private WorkflowStepDao dao;
@Autowired
public void setDao(WorkflowStepDao dao) {
this.dao = dao;
}
}