Пример #1
0
  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;
          }
      }
    }
  }