private void commands( final OperationCommand command, final Task task, final User user, final OrganizationalEntity targetEntity, OrganizationalEntity... entities) { final PeopleAssignments people = task.getPeopleAssignments(); final InternalTaskData taskData = (InternalTaskData) task.getTaskData(); if (command.getNewStatus() != null) { taskData.setStatus(command.getNewStatus()); } else if (command.isSetToPreviousStatus()) { taskData.setStatus(taskData.getPreviousStatus()); } if (command.isAddTargetEntityToPotentialOwners() && !people.getPotentialOwners().contains(targetEntity)) { people.getPotentialOwners().add(targetEntity); } if (command.isRemoveUserFromPotentialOwners()) { people.getPotentialOwners().remove(user); } if (command.isSetNewOwnerToUser()) { taskData.setActualOwner(user); } if (command.isSetNewOwnerToNull()) { taskData.setActualOwner(null); } if (command.getExec() != null) { switch (command.getExec()) { case Claim: { taskData.setActualOwner((User) targetEntity); // @TODO: Ical stuff // Task was reserved so owner should get icals // SendIcal.getInstance().sendIcalForTask(task, // service.getUserinfo()); break; } case Nominate: { if (entities != null && entities.length > 0) { List<OrganizationalEntity> potentialOwners = new ArrayList<OrganizationalEntity>(Arrays.asList(entities)); ((InternalPeopleAssignments) task.getPeopleAssignments()) .setPotentialOwners(potentialOwners); assignOwnerAndStatus((InternalTaskData) task.getTaskData(), potentialOwners); } break; } } } }