From 3552c04a1ed306b6927a81a012e9cf3e90279900 Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 14 Mar 2017 18:56:16 +0000 Subject: [PATCH] CCM NG/ccm-cms Tab Workflows git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4629 8810af33-2d31-482b-a856-94f89814c4df --- .../cms/ui/workflow/BaseTaskForm.java | 64 ++++++---- .../cms/ui/workflow/BaseWorkflowItemPane.java | 1 - .../cms/ui/workflow/TaskAddForm.java | 18 +-- .../cms/ui/workflow/TaskAddRole.java | 48 ++++---- .../cms/ui/workflow/TaskEditForm.java | 66 ++++++----- .../cms/ui/workflow/TaskItemPane.java | 26 ++--- .../workflow/WorkflowAdminPaneController.java | 110 +++++++++++++++++- .../org/librecms/CmsResources.properties | 15 +++ .../org/librecms/CmsResources_de.properties | 15 +++ .../org/librecms/CmsResources_fr.properties | 15 +++ .../main/java/org/libreccm/workflow/Task.java | 13 ++- 11 files changed, 289 insertions(+), 102 deletions(-) diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/BaseTaskForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/BaseTaskForm.java index f975e1905..0c4d10d1e 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/BaseTaskForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/BaseTaskForm.java @@ -53,37 +53,38 @@ import java.util.stream.Collectors; */ class BaseTaskForm extends BaseForm { - final WorkflowRequestLocal m_workflow; + private final WorkflowRequestLocal workflowRequestLocal; - final TextField m_name; - final TextArea m_description; - final OptionGroup m_type; - final OptionGroup m_deps; + private final TextField nameTextField; + private final TextArea descriptionTextArea; + private final OptionGroup typeOptionGroup; + private final OptionGroup dependenciesOptionGroup; BaseTaskForm(final String key, final GlobalizedMessage message, - final WorkflowRequestLocal workflow) { + final WorkflowRequestLocal workflowRequestLocal) { super(key, message); - m_workflow = workflow; + this.workflowRequestLocal = workflowRequestLocal; - m_name = new Name("name", 200, true); - addField(gz("cms.ui.workflow.task.name"), m_name); + nameTextField = new Name("name", 200, true); + addField(gz("cms.ui.workflow.task.name"), nameTextField); - m_type = new SingleSelect(new StringParameter("task_type")); - addField(gz("cms.ui.workflow.task.type"), m_type); + typeOptionGroup = new SingleSelect(new StringParameter("task_type")); + addField(gz("cms.ui.workflow.task.type"), typeOptionGroup); try { - m_type.addPrintListener(new TaskTypePrintListener()); + typeOptionGroup.addPrintListener(new TaskTypePrintListener()); } catch (TooManyListenersException ex) { throw new UncheckedWrapperException(ex); } - m_description = new Description("desc", 4000, true); - addField(gz("cms.ui.workflow.task.description"), m_description); + descriptionTextArea = new Description("desc", 4000, true); + addField(gz("cms.ui.workflow.task.description"), descriptionTextArea); - m_deps = new CheckboxGroup("dep"); - addField(gz("cms.ui.workflow.task.dependencies"), m_deps); + dependenciesOptionGroup = new CheckboxGroup("dep"); + addField(gz("cms.ui.workflow.task.dependencies"), + dependenciesOptionGroup); addAction(new Finish()); addAction(new Cancel()); @@ -95,15 +96,38 @@ class BaseTaskForm extends BaseForm { private class ValidationListener implements FormValidationListener { @Override - public final void validate(final FormSectionEvent e) + public final void validate(final FormSectionEvent event) throws FormProcessException { - final String name = (String) m_name.getValue(e.getPageState()); + final String name = (String) nameTextField.getValue(event + .getPageState()); // XXX do a dupe check here ala commented out code below } } + protected WorkflowRequestLocal getWorkflowRequestLocal() { + return workflowRequestLocal; + } + + protected TextField getNameTextField() { + return nameTextField; + } + + protected TextArea getDescriptionTextArea() { + return descriptionTextArea; + } + + protected OptionGroup getTypeOptionGroup() { + return typeOptionGroup; + } + + protected OptionGroup getDependenciesOptionGroup() { + return dependenciesOptionGroup; + } + + + /* protected void addValidationListener() { addValidationListener(new DataQueryExistsListener(ERROR_MSG) { @@ -192,8 +216,8 @@ class BaseTaskForm extends BaseForm { for (final Task taskToAdd : toAdd.values()) { try { - taskManager.addDependentTask(task, taskToAdd); - } catch(CircularTaskDependencyException ex) { + taskManager.addDependentTask(task, taskToAdd); + } catch (CircularTaskDependencyException ex) { throw new UncheckedWrapperException(ex); } } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/BaseWorkflowItemPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/BaseWorkflowItemPane.java index 42d563e7f..e47037c13 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/BaseWorkflowItemPane.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/BaseWorkflowItemPane.java @@ -49,7 +49,6 @@ import org.libreccm.workflow.TaskManager; import org.libreccm.workflow.TaskRepository; import org.libreccm.workflow.Workflow; import org.librecms.contentsection.privileges.AdminPrivileges; -import org.librecms.workflow.CmsTaskType; import java.util.List; import java.util.Locale; diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskAddForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskAddForm.java index 1e0063cd6..5b585c140 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskAddForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskAddForm.java @@ -60,7 +60,8 @@ class TaskAddForm extends BaseTaskForm { m_model = model; try { - m_deps.addPrintListener(new DependencyPrinter()); + getDependenciesOptionGroup() + .addPrintListener(new DependencyPrinter()); } catch (TooManyListenersException tmle) { throw new UncheckedWrapperException(tmle); } @@ -77,12 +78,14 @@ class TaskAddForm extends BaseTaskForm { final WorkflowAdminPaneController controller = cdiUtil .findBean(WorkflowAdminPaneController.class); final List tasks = controller - .getTasksForWorkflow(m_workflow.getWorkflow(state)); + .getTasksForWorkflow(getWorkflowRequestLocal() + .getWorkflow(state)); final OptionGroup options = (OptionGroup) event.getTarget(); final KernelConfig kernelConfig = KernelConfig.getConfig(); final Locale defaultLocale = kernelConfig.getDefaultLocale(); + options.clearOptions(); tasks.forEach(task -> options.addOption(new Option( Long.toString(task.getTaskId()), task.getLabel().getValue(defaultLocale)))); @@ -103,11 +106,12 @@ class TaskAddForm extends BaseTaskForm { .findBean(WorkflowAdminPaneController.class); final CmsTask task = controller.addTask( - m_workflow.getWorkflow(state), - (String) m_name.getValue(state), - (String) m_description.getValue(state), - CmsTaskType.valueOf((String) m_type.getValue(state)), - (String[]) m_deps.getValue(state)); + getWorkflowRequestLocal().getWorkflow(state), + (String) getNameTextField().getValue(state), + (String) getDescriptionTextArea().getValue(state), + CmsTaskType.valueOf((String) getTypeOptionGroup() + .getValue(state)), + (String[]) getDependenciesOptionGroup().getValue(state)); m_model.setSelectedKey(state, task.getTaskId()); } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskAddRole.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskAddRole.java index e202f185d..110947e47 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskAddRole.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskAddRole.java @@ -105,10 +105,11 @@ class TaskAddRole extends CMSForm { final PageState state = event.getPageState(); final CmsTask task = m_task.getTask(state); - final List assignments = task.getAssignments(); - final List roles = assignments.stream() - .map(TaskAssignment::getRole) - .collect(Collectors.toList()); + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final WorkflowAdminPaneController controller = cdiUtil + .findBean(WorkflowAdminPaneController.class); + + final List roles = controller.findAssignees(task); m_roles.setValue(state, roles); } @@ -125,24 +126,28 @@ class TaskAddRole extends CMSForm { final CmsTask task = m_task.getTask(state); final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final AssignableTaskManager taskManager = cdiUtil.findBean( - AssignableTaskManager.class); - final RoleRepository roleRepository = cdiUtil.findBean( - RoleRepository.class); - - task.getAssignments().forEach(assignment -> { - taskManager.retractTask(task, assignment.getRole()); - }); + final WorkflowAdminPaneController controller = cdiUtil + .findBean(WorkflowAdminPaneController.class); +// final AssignableTaskManager taskManager = cdiUtil.findBean( +// AssignableTaskManager.class); +// final RoleRepository roleRepository = cdiUtil.findBean( +// RoleRepository.class); +// +// task.getAssignments().forEach(assignment -> { +// taskManager.retractTask(task, assignment.getRole()); +// }); final String[] roleIds = (String[]) m_roles.getValue(state); - if (roleIds != null) { - for (final String roleId : roleIds) { - final Role role = roleRepository.findById(Long - .parseLong(roleId)).get(); - taskManager.assignTask(task, role); - } - } +// if (roleIds != null) { +// for (final String roleId : roleIds) { +// final Role role = roleRepository.findById(Long +// .parseLong(roleId)).get(); +// taskManager.assignTask(task, role); +// } +// } + + controller.assignTask(task, roleIds); } } @@ -182,8 +187,11 @@ class TaskAddRole extends CMSForm { @Override protected List getDataQuery(final PageState state) { final ContentSection section = CMS.getContext().getContentSection(); + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final WorkflowAdminPaneController controller = cdiUtil + .findBean(WorkflowAdminPaneController.class); - return section.getRoles(); + return controller.findRoles(section); } @Override diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskEditForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskEditForm.java index 905a33e9f..101cd06df 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskEditForm.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskEditForm.java @@ -37,6 +37,7 @@ import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.configuration.ConfigurationManager; import org.libreccm.workflow.Task; import org.libreccm.workflow.TaskRepository; +import org.libreccm.workflow.Workflow; import org.librecms.workflow.CmsTaskType; import java.util.List; @@ -59,7 +60,8 @@ class TaskEditForm extends BaseTaskForm { this.selectedTask = selectedTask; try { - m_deps.addPrintListener(new DependencyPrinter()); + getDependenciesOptionGroup() + .addPrintListener(new DependencyPrinter()); } catch (TooManyListenersException tmle) { throw new UncheckedWrapperException(tmle); } @@ -73,9 +75,15 @@ class TaskEditForm extends BaseTaskForm { @Override public final void prepare(final PrintEvent event) { final PageState state = event.getPageState(); - final List tasks = m_workflow.getWorkflow(state).getTasks(); + final Workflow workflow = getWorkflowRequestLocal() + .getWorkflow(state); + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final WorkflowAdminPaneController controller = cdiUtil + .findBean(WorkflowAdminPaneController.class); + final List tasks = controller.getTasksForWorkflow(workflow); final OptionGroup options = (OptionGroup) event.getTarget(); + options.clearOptions(); tasks.forEach(task -> addOption(task, state, options)); } @@ -102,16 +110,27 @@ class TaskEditForm extends BaseTaskForm { final PageState state = event.getPageState(); final CmsTask task = selectedTask.getTask(state); - m_name.setValue(state, task.getLabel()); - m_description.setValue(state, task.getDescription()); - m_type.setValue(state, task.getTaskType().toString()); + final Locale defaultLocale = KernelConfig + .getConfig() + .getDefaultLocale(); - final List dependencies = task.getDependsOn(); - final List depIdList = dependencies.stream() + getNameTextField().setValue(state, + task.getLabel().getValue(defaultLocale)); + getDescriptionTextArea().setValue( + state, + task.getDescription().getValue(defaultLocale)); + getTypeOptionGroup().setValue(state, task.getTaskType().toString()); + + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final WorkflowAdminPaneController controller = cdiUtil.findBean( + WorkflowAdminPaneController.class); + + final List dependencies = controller.getDependencies(task); + final List depIdList = dependencies.stream() .map(dependency -> Long.toString(dependency.getTaskId())) .collect(Collectors.toList()); - m_deps.setValue(state, depIdList.toArray()); + getDependenciesOptionGroup().setValue(state, depIdList.toArray()); } } @@ -124,26 +143,19 @@ class TaskEditForm extends BaseTaskForm { final PageState state = event.getPageState(); final CmsTask task = selectedTask.getTask(state); + final String name = (String) getNameTextField().getValue(state); + final String desc = (String) getDescriptionTextArea() + .getValue(state); + final CmsTaskType taskType = CmsTaskType + .valueOf((String) getTypeOptionGroup().getValue(state)); + final String[] deps = (String[]) getDependenciesOptionGroup() + .getValue(state); + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final TaskRepository taskRepo = cdiUtil.findBean( - TaskRepository.class); - final ConfigurationManager confManager = cdiUtil.findBean( - ConfigurationManager.class); - final KernelConfig kernelConfig = confManager.findConfiguration( - KernelConfig.class); - final Locale defaultLocale = kernelConfig.getDefaultLocale(); - - task.getLabel().addValue(defaultLocale, - (String) m_name.getValue(state)); - task.getDescription().addValue( - defaultLocale, - (String) m_description.getValue(state)); - - task.setTaskType(CmsTaskType.valueOf((String)m_type.getValue(state))); - - taskRepo.save(task); - - processDependencies(task, (String[]) m_deps.getValue(state)); + final WorkflowAdminPaneController controller = cdiUtil + .findBean(WorkflowAdminPaneController.class); + + controller.updateTask(task, name, desc, taskType, deps); } } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskItemPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskItemPane.java index 0f88a1a46..619649323 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskItemPane.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/TaskItemPane.java @@ -310,9 +310,9 @@ final class TaskItemPane extends BaseItemPane { final KernelConfig kernelConfig = KernelConfig.getConfig(); final Locale defaultLocale = kernelConfig.getDefaultLocale(); - props.add(new Property(gz("cms.ui.name"), + props.add(new Property(gz("cms.ui.workflow.task.name"), task.getLabel().getValue(defaultLocale))); - props.add(new Property(gz("cms.ui.description"), + props.add(new Property(gz("cms.ui.workflow.task.description"), task.getDescription().getValue( defaultLocale))); props.add(new Property(gz("cms.ui.workflow.task.dependencies"), @@ -373,7 +373,7 @@ final class TaskItemPane extends BaseItemPane { public RoleTable() { super(new RoleTableModelBuilder(m_task), new String[]{ - lz("cms.ui.name"), // XXX globz + lz("cms.ui.workflow.task.role.name"), lz("cms.ui.workflow.task.role.delete") }); @@ -391,17 +391,12 @@ final class TaskItemPane extends BaseItemPane { if (column == 1) { if (hasAdmin(state)) { final CmsTask task = m_task.getTask(state); - final Long roleId = Long.parseLong((String) event - .getRowKey()); - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final AssignableTaskManager taskManager = cdiUtil - .findBean(AssignableTaskManager.class); - final RoleRepository roleRepo = cdiUtil.findBean( - RoleRepository.class); - - final Role role = roleRepo.findById(roleId).get(); - taskManager.retractTask(task, role); + final WorkflowAdminPaneController controller = + cdiUtil.findBean(WorkflowAdminPaneController.class); + controller.removeAssignment(task, + (String) event.getRowKey()); + } } } @@ -436,7 +431,6 @@ final class TaskItemPane extends BaseItemPane { private class Model implements TableModel { private final List roles; - private Role role; private int index = -1; private Model(final CmsTask task) { @@ -460,14 +454,14 @@ final class TaskItemPane extends BaseItemPane { @Override public final Object getKeyAt(final int column) { - return Long.toString(role.getRoleId()); + return Long.toString(roles.get(index).getRoleId()); } @Override public final Object getElementAt(final int column) { switch (column) { case 0: - return role.getName(); + return roles.get(index).getName(); case 1: return lz("cms.ui.workflow.task.role.delete"); default: diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/WorkflowAdminPaneController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/WorkflowAdminPaneController.java index f3f94a840..3c3d0d524 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/WorkflowAdminPaneController.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/workflow/WorkflowAdminPaneController.java @@ -25,9 +25,10 @@ import com.arsdigita.util.UncheckedWrapperException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.configuration.ConfigurationManager; import org.libreccm.security.Role; +import org.libreccm.security.RoleRepository; +import org.libreccm.workflow.AssignableTaskManager; import org.libreccm.workflow.CircularTaskDependencyException; import org.libreccm.workflow.Task; import org.libreccm.workflow.TaskManager; @@ -35,7 +36,6 @@ import org.libreccm.workflow.TaskRepository; import org.libreccm.workflow.Workflow; import org.libreccm.workflow.WorkflowRepository; import org.libreccm.workflow.WorkflowTemplate; -import org.libreccm.workflow.WorkflowTemplateMarshaller; import org.libreccm.workflow.WorkflowTemplateRepository; import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSectionManager; @@ -44,6 +44,7 @@ import org.librecms.workflow.CmsTask; import org.librecms.workflow.CmsTaskType; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -53,6 +54,7 @@ import java.util.stream.Collectors; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; +import javax.management.relation.RoleInfo; import javax.transaction.Transactional; /** @@ -86,6 +88,12 @@ public class WorkflowAdminPaneController { @Inject private TaskManager taskManager; + @Inject + private AssignableTaskManager assignableTaskManager; + + @Inject + private RoleRepository roleRepo; + @Transactional(Transactional.TxType.REQUIRED) public List retrieveWorkflows(final ContentSection section) { @@ -160,7 +168,7 @@ public class WorkflowAdminPaneController { task.getLabel().addValue(defaultLocale, name); task.getDescription().addValue(defaultLocale, desc); task.setTaskType(type); - task.setActive(true); +// task.setActive(true); taskRepo.save(task); @@ -171,6 +179,31 @@ public class WorkflowAdminPaneController { return task; } + @Transactional(Transactional.TxType.REQUIRED) + public void updateTask(final Task task, + final String name, + final String desc, + final CmsTaskType type, + final String[] deps) { + + final KernelConfig kernelConfig = confManager.findConfiguration( + KernelConfig.class); + final Locale defaultLocale = kernelConfig.getDefaultLocale(); + + final CmsTask theTask = (CmsTask) taskRepo + .findById(task.getTaskId()) + .orElseThrow(() -> new IllegalArgumentException(String.format( + "No Task with ID %d in the database. Where did that ID come from?", + task.getTaskId()))); + theTask.getLabel().addValue(defaultLocale, name); + theTask.getDescription().addValue(defaultLocale, desc); + theTask.setTaskType(type); + + taskRepo.save(theTask); + + processDependencies(theTask, deps); + } + /** * This method decides which dependencies have to be removed and which ones * newly added. Unfortunately we cannot just do "remove all", and add the @@ -226,6 +259,10 @@ public class WorkflowAdminPaneController { @Transactional(Transactional.TxType.REQUIRED) TaskTableModelData getTaskTableModelData(final Workflow workflow) { + final KernelConfig kernelConfig = confManager + .findConfiguration(KernelConfig.class); + final Locale defaultLocale = kernelConfig.getDefaultLocale(); + final Map dependencies = new HashMap<>(); final Iterator tasksIter = getTasksForWorkflow(workflow) @@ -240,7 +277,7 @@ public class WorkflowAdminPaneController { Task dep = deps.next(); graphSet.addEdge(task, dep, null); buffer - .append(dep.getLabel()) + .append(dep.getLabel().getValue(defaultLocale)) .append(", "); } @@ -269,7 +306,9 @@ public class WorkflowAdminPaneController { break; } - final Iterator taskIterator = tasks.iterator(); + //final Iterator taskIterator = tasks.iterator(); + final Iterator taskIterator = getTasksForWorkflow(workflow) + .iterator(); return new TaskTableModelData(taskIterator, dependencies); } @@ -289,4 +328,65 @@ public class WorkflowAdminPaneController { .collect(Collectors.toList()); } + @Transactional(Transactional.TxType.REQUIRED) + public List findRoles(final ContentSection section) { + + final ContentSection contentSection = sectionRepo + .findById(section.getObjectId()) + .orElseThrow(() -> new IllegalArgumentException(String.format( + "No ContentSection with ID %d in the database. " + + "Where did that ID come from?", + section.getObjectId()))); + + return new ArrayList<>(contentSection.getRoles()); + } + + @Transactional(Transactional.TxType.REQUIRED) + public void assignTask(final Task task, final String[] roleIds) { + + final CmsTask theTask = (CmsTask) taskRepo + .findById(task.getTaskId()) + .orElseThrow(() -> new IllegalArgumentException(String.format( + "No Task with ID %d in the database. Where did that ID come from?", + task.getTaskId()))); + + theTask.getAssignments() + .forEach(assignment -> assignableTaskManager + .retractTask(theTask, assignment.getRole())); + + if (roleIds != null) { + final List roles = Arrays + .stream(roleIds) + .map(roleId -> Long.parseLong(roleId)) + .map(roleId -> roleRepo.findById(roleId).orElseThrow( + () -> new IllegalArgumentException(String.format( + "No role with ID %d in the database. " + + "Where did that ID come from?", roleId)))) + .collect(Collectors.toList()); + + roles.forEach(role -> assignableTaskManager + .assignTask(theTask, role)); + } + + } + + @Transactional(Transactional.TxType.REQUIRED) + public void removeAssignment(final Task task, final String roleId ) { + + final Role role = roleRepo + .findById(Long.parseLong(roleId)) + .orElseThrow(() -> new IllegalArgumentException(String.format( + "No Role with ID %d in the database. Where did that ID come from?", + roleId))); + + final CmsTask theTask = (CmsTask) taskRepo + .findById(task.getTaskId()) + .orElseThrow(() -> new IllegalArgumentException(String.format( + "No Task with ID %d in the database. Where did that ID come from?", + task.getTaskId()))); + + assignableTaskManager.retractTask(theTask, role); + + } + } diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties index d367e7c06..9bb64435e 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -166,3 +166,18 @@ cms.workflow.task_type.AUTHOR=Author cms.workflow.task_type.EDIT=Edit cms.workflow.task_type.DEPLOY=Deploy cms.ui.workflow.task.state=Status +cms.ui.workflow.task.return=Return to workflow +cms.ui.workflow.task.details=Task details +cms.ui.workflow.task.state.none=None +cms.ui.workflow.task.locked=Locked? +cms.ui.no=No +cms.ui.yes=Yes +cms.ui.workflow.task.lock=Lock task +cms.ui.workflow.task.edit=Edit task +cms.ui.workflow.task.delete=Delete task +cms.ui.workflow.task.delete_prompt=Are you sure you want to delete this task? +cms.ui.workflow.task.roles=Roles to which this task is assigned: +cms.ui.workflow.task.role.none=This task has not been assigned to any roles +cms.ui.workflow.task.role.add=Assign this task to a role +cms.ui.workflow.task.role.delete=Remove +cms.ui.workflow.task.role.name=Role diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties index 0c19a8f47..680816bbf 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties @@ -165,3 +165,18 @@ cms.workflow.task_type.AUTHOR=Verfassen cms.workflow.task_type.EDIT=Bearbeiten cms.workflow.task_type.DEPLOY=Ver\u00f6ffentlichen cms.ui.workflow.task.state=Status +cms.ui.workflow.task.return=Zur\u00fcck zum Arbeitsablauf +cms.ui.workflow.task.details=Aufgabe Details +cms.ui.workflow.task.state.none=Kein Status +cms.ui.workflow.task.locked=Reserviert? +cms.ui.no=Nein +cms.ui.yes=Ja +cms.ui.workflow.task.lock=Aufgabe reservieren +cms.ui.workflow.task.edit=Aufgabe bearbeiten +cms.ui.workflow.task.delete=Aufgabe l\u00f6schen +cms.ui.workflow.task.delete_prompt=Sind Sie sicher, dass Sie diese Aufgabe l\u00f6schen wollen? +cms.ui.workflow.task.roles=Diese Aufgabe wurde folgenden Rollen zugeordnet: +cms.ui.workflow.task.role.none=Diese Aufgabe ist keiner Rolle zugeordnet +cms.ui.workflow.task.role.add=Diese Aufgabe einer Rolle zuordnen +cms.ui.workflow.task.role.delete=Entfernen +cms.ui.workflow.task.role.name=Rolle diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties index 42e0eeb52..5f8ac4f3f 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties @@ -134,3 +134,18 @@ cms.workflow.task_type.AUTHOR=Author cms.workflow.task_type.EDIT=Edit cms.workflow.task_type.DEPLOY=Deploy cms.ui.workflow.task.state=Status +cms.ui.workflow.task.return=Return to workflow +cms.ui.workflow.task.details=Task details +cms.ui.workflow.task.state.none=None +cms.ui.workflow.task.locked=Locked? +cms.ui.no=No +cms.ui.yes=Yes +cms.ui.workflow.task.lock=Lock task +cms.ui.workflow.task.edit=Edit task +cms.ui.workflow.task.delete=Delete task +cms.ui.workflow.task.delete_prompt=Are you sure you want to delete this task? +cms.ui.workflow.task.roles=Roles to which this task is assigned: +cms.ui.workflow.task.role.none=This task has not been assigned to any roles +cms.ui.workflow.task.role.add=Assign this task to a role +cms.ui.workflow.task.role.delete=Remove +cms.ui.workflow.task.role.name=Role diff --git a/ccm-core/src/main/java/org/libreccm/workflow/Task.java b/ccm-core/src/main/java/org/libreccm/workflow/Task.java index 7ff527165..ba7c9426b 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/Task.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/Task.java @@ -201,6 +201,7 @@ public class Task implements Identifiable, Serializable { dependentTasks = new ArrayList<>(); dependsOn = new ArrayList<>(); comments = new ArrayList<>(); + active = false; } public long getTaskId() { @@ -387,9 +388,9 @@ public class Task implements Identifiable, Serializable { + "label = %s, " + "active = %b, " + "taskState = \"%s\", " - + "workflow = %s, " - + "dependentTasks = %s, " - + "dependsOn = %s%s" +// + "workflow = %s, " +// + "dependentTasks = %s, " +// + "dependsOn = %s%s" + " }", super.toString(), taskId, @@ -397,9 +398,9 @@ public class Task implements Identifiable, Serializable { Objects.toString(label), active, taskState, - Objects.toString(workflow), - Objects.toString(dependentTasks), - Objects.toString(dependsOn), +// Objects.toString(workflow), +// Objects.toString(dependentTasks), +// Objects.toString(dependsOn), data); }