package org.apache.hise; import java.util.HashSet; import java.util.Set; import org.apache.hise.dao.GenericHumanRole; import org.apache.hise.dao.HISEDao; import org.apache.hise.dao.Job; import org.apache.hise.dao.Message; import org.apache.hise.dao.OrgEntity; import org.apache.hise.dao.Task; import org.apache.hise.dao.TaskOrgEntity; import org.apache.hise.dao.Task.Status; import org.apache.hise.dao.TaskOrgEntity.OrgEntityType; import org.junit.Assert; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallback; import org.springframework.transaction.support.TransactionTemplate; public class TaskCreationHelper { public enum TaskType { TASK1, TASK2, TASK3 } public static String TASK1_GROUP = "group1"; public static String TASK1_OWNER = "user1"; public static String TASK1_OWNER_PASSWORD = "abc"; public static String TASK1_DEFINITION_KEY = "asd"; public static String TASK1_INPUT_KEY = "abc"; public static String TASK1_INPUT_VALUE = "def"; public static String TASK2_ASSIGNED_USER = "user1"; public static String TASK2_ASSIGNED_USER_GROUP = "group1"; public static String TASK2_DEFINITION_KEY = "asd2"; public static String TASK3_ASSIGNED_USER = "user1"; public static String TASK3_ASSIGNED_GROUP = "group1"; public static String TASK3_DEFINITION_KEY = "asd3"; private void cleanup(HISEDao hiseDao) throws Exception { hiseDao.clearAllRecords(OrgEntity.class); hiseDao.clearAllRecords(Task.class); hiseDao.clearAllRecords(Job.class); } public Long addTask(HISEDao hiseDao) throws Exception { Assert.assertTrue(hiseDao != null); OrgEntity o, o2; o2 = new OrgEntity(); o2.setName(TASK1_GROUP); o2.setType(OrgEntityType.GROUP); hiseDao.persist(o2); o = new OrgEntity(); o.setName(TASK1_OWNER); o.setType(OrgEntityType.USER); o.setUserPassword(TASK1_OWNER_PASSWORD); o.addToGroup(o2); hiseDao.persist(o); Task t = new Task(); t.setStatus(Status.CREATED); t.setTaskDefinitionKey(TASK1_DEFINITION_KEY); t.setActualOwner(TASK1_OWNER); t.getInput().put(TASK1_INPUT_KEY, new Message(TASK1_INPUT_KEY, TASK1_INPUT_VALUE)); hiseDao.persist(t); Long id = t.getId(); Assert.assertNotNull(id); return id; } public void addTask2(HISEDao hiseDao) throws Exception { addTask(hiseDao); Task t = new Task(); t.setStatus(Status.READY); t.setTaskDefinitionKey(TASK2_DEFINITION_KEY); Set<TaskOrgEntity> pa = new HashSet<TaskOrgEntity>(); TaskOrgEntity x = new TaskOrgEntity(); x.setName(TASK2_ASSIGNED_USER); x.setType(OrgEntityType.USER); x.setGenericHumanRole(GenericHumanRole.POTENTIALOWNERS); x.setTask(t); pa.add(x); t.setPeopleAssignments(pa); hiseDao.persist(t); } public void addTask3(HISEDao hiseDao) throws Exception { addTask(hiseDao); Task t = new Task(); t.setStatus(Status.READY); t.setTaskDefinitionKey(TASK3_DEFINITION_KEY); Set<TaskOrgEntity> pa = new HashSet<TaskOrgEntity>(); TaskOrgEntity x = new TaskOrgEntity(); x.setName(TASK3_ASSIGNED_GROUP); x.setType(OrgEntityType.GROUP); x.setGenericHumanRole(GenericHumanRole.POTENTIALOWNERS); x.setTask(t); pa.add(x); t.setPeopleAssignments(pa); hiseDao.persist(t); } public Long addTaskInTransaction(final TaskType taskType, TransactionTemplate tt, final HISEDao hiseDao) { Long tid = (Long) tt.execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus arg0) { try { cleanup(hiseDao); Long tid = null; switch(taskType) { case TASK1: tid = addTask(hiseDao); break; case TASK2: addTask2(hiseDao); break; case TASK3: addTask3(hiseDao); break; } return tid; } catch (Exception e) { throw new RuntimeException(e); } } }); return tid; } }