| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.camel.component.box.api; |
| |
| import java.util.Date; |
| import java.util.List; |
| |
| import com.box.sdk.BoxAPIConnection; |
| import com.box.sdk.BoxAPIException; |
| import com.box.sdk.BoxFile; |
| import com.box.sdk.BoxTask; |
| import com.box.sdk.BoxTaskAssignment; |
| import com.box.sdk.BoxUser; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| /** |
| * Box Tasks Manager |
| * |
| * <p> |
| * Provides operations to manage Box tasks. |
| * |
| * |
| * |
| */ |
| public class BoxTasksManager { |
| |
| private static final Logger LOG = LoggerFactory.getLogger(BoxTasksManager.class); |
| |
| /** |
| * Box connection to authenticated user account. |
| */ |
| private BoxAPIConnection boxConnection; |
| |
| /** |
| * Create tasks manager to manage the tasks of Box connection's |
| * authenticated user. |
| * |
| * @param boxConnection |
| * - Box connection to authenticated user account. |
| */ |
| public BoxTasksManager(BoxAPIConnection boxConnection) { |
| this.boxConnection = boxConnection; |
| } |
| |
| /** |
| * Get a list of any tasks on file. |
| * |
| * @param fileId |
| * - the id of file. |
| * @return The list of tasks on file. |
| */ |
| public List<BoxTask.Info> getFileTasks(String fileId) { |
| try { |
| LOG.debug("Getting tasks of file(id={})", fileId); |
| if (fileId == null) { |
| throw new IllegalArgumentException("Parameter 'fileId' can not be null"); |
| } |
| |
| BoxFile file = new BoxFile(boxConnection, fileId); |
| |
| return file.getTasks(); |
| |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| |
| /** |
| * Add task to file. |
| * |
| * @param fileId |
| * - the id of file to add task to. |
| * @param action |
| * - the action the task assignee will be prompted to do. |
| * @param dueAt |
| * - - the day at which this task is due. |
| * @param message |
| * - an optional message to include with the task. |
| * @return The new task. |
| */ |
| public BoxTask addFileTask(String fileId, BoxTask.Action action, Date dueAt, String message) { |
| try { |
| LOG.debug("Adding task to file(id=" + fileId + ") to '" + message + "'"); |
| if (fileId == null) { |
| throw new IllegalArgumentException("Parameter 'fileId' can not be null"); |
| } |
| if (action == null) { |
| throw new IllegalArgumentException("Parameter 'action' can not be null"); |
| } |
| if (dueAt == null) { |
| throw new IllegalArgumentException("Parameter 'dueAt' can not be null"); |
| } |
| |
| BoxFile fileToAddTaskOn = new BoxFile(boxConnection, fileId); |
| return fileToAddTaskOn.addTask(action, message, dueAt).getResource(); |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| |
| /** |
| * Delete task. |
| * |
| * @param taskId |
| * - the id of task to delete. |
| */ |
| public void deleteTask(String taskId) { |
| try { |
| LOG.debug("Deleting task(id={})", taskId); |
| if (taskId == null) { |
| throw new IllegalArgumentException("Parameter 'taskId' can not be null"); |
| } |
| BoxTask task = new BoxTask(boxConnection, taskId); |
| task.delete(); |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| |
| /** |
| * Get task information. |
| * |
| * @param taskId |
| * - the id of task. |
| * @return The task information. |
| */ |
| public BoxTask.Info getTaskInfo(String taskId) { |
| try { |
| LOG.debug("Getting info for task(id={})", taskId); |
| if (taskId == null) { |
| throw new IllegalArgumentException("Parameter 'taskId' can not be null"); |
| } |
| |
| BoxTask task = new BoxTask(boxConnection, taskId); |
| |
| return task.getInfo(); |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| |
| /** |
| * Update task information. |
| * |
| * @param taskId |
| * - the id of task. |
| * @param info |
| * - the updated information |
| * @return The updated task. |
| */ |
| public BoxTask updateTaskInfo(String taskId, BoxTask.Info info) { |
| try { |
| LOG.debug("Updating info for task(id={})", taskId); |
| if (taskId == null) { |
| throw new IllegalArgumentException("Parameter 'taskId' can not be null"); |
| } |
| if (info == null) { |
| throw new IllegalArgumentException("Parameter 'info' can not be null"); |
| } |
| |
| BoxTask task = new BoxTask(boxConnection, taskId); |
| task.updateInfo(info); |
| |
| return task; |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| |
| /** |
| * Get a list of any assignments for task. |
| * |
| * @param taskId |
| * - the id of task. |
| * @return The list of assignments for task. |
| */ |
| public List<BoxTaskAssignment.Info> getTaskAssignments(String taskId) { |
| try { |
| LOG.debug("Getting assignments for task(id={})", taskId); |
| if (taskId == null) { |
| throw new IllegalArgumentException("Parameter 'taskId' can not be null"); |
| } |
| |
| BoxTask file = new BoxTask(boxConnection, taskId); |
| |
| return file.getAssignments(); |
| |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| |
| /** |
| * Add assignment for task. |
| * |
| * @param taskId |
| * - the id of task to add assignment for. |
| * @param assignTo |
| * - the user to assign to task. |
| * @return The assigned task. |
| */ |
| @SuppressWarnings("unused") // compiler for some reason thinks 'if (assignTo |
| // == null)' clause is dead code. |
| public BoxTask addAssignmentToTask(String taskId, BoxUser assignTo) { |
| try { |
| LOG.debug("Assigning task(id=" + taskId + ") to user(id=" + assignTo.getID() + ")"); |
| if (taskId == null) { |
| throw new IllegalArgumentException("Parameter 'commentId' can not be null"); |
| } |
| if (assignTo == null) { |
| throw new IllegalArgumentException("Parameter 'assignTo' can not be null"); |
| } |
| |
| BoxTask task = new BoxTask(boxConnection, taskId); |
| task.addAssignment(assignTo); |
| |
| return task; |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| |
| /** |
| * Get task assignment information. |
| * |
| * @param taskAssignmentId |
| * - the id of task assignment. |
| * @return The task assignment information. |
| */ |
| public BoxTaskAssignment.Info getTaskAssignmentInfo(String taskAssignmentId) { |
| try { |
| LOG.debug("Getting info for task(id={})", taskAssignmentId); |
| if (taskAssignmentId == null) { |
| throw new IllegalArgumentException("Parameter 'taskAssignmentId' can not be null"); |
| } |
| |
| BoxTaskAssignment taskAssignment = new BoxTaskAssignment(boxConnection, taskAssignmentId); |
| |
| return taskAssignment.getInfo(); |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| |
| // TODO Add this method when BoxTaskAssignment API fixed: |
| // BoxTaskAssignment.update method currently |
| // takes BoxTask.Info instead of BoxTaskAssignment.Info |
| // /** |
| // * Update task assignment information. |
| // * |
| // * @param taskAssignmentId |
| // * - the id of task assignment. |
| // * @param info |
| // * - the updated information |
| // * @return The updated task assignment. |
| // */ |
| // public BoxTaskAssignment updateTaskAssignmentInfo(String |
| // taskAssignmentId, BoxTaskAssignment.Info info) { |
| // try { |
| // LOG.debug("Updating info for task(id={})", taskAssignmentId); |
| // if (taskAssignmentId == null) { |
| // throw new IllegalArgumentException("Parameter 'taskAssignmentId' can not |
| // be null"); |
| // } |
| // if (info == null) { |
| // throw new IllegalArgumentException("Parameter 'info' can not be null"); |
| // } |
| // |
| // BoxTaskAssignment taskAssignment = new BoxTaskAssignment(boxConnection, |
| // taskAssignmentId); |
| // taskAssignment.updateInfo(info); |
| // |
| // return taskAssignment; |
| // } catch (BoxAPIException e) { |
| // throw new RuntimeException( |
| // String.format("Box API returned the error code %d\n\n%s", |
| // e.getResponseCode(), e.getResponse()), e); |
| // } |
| // } |
| |
| /** |
| * Delete task assignment. |
| * |
| * @param taskAssignmentId |
| * - the id of task assignment to delete. |
| */ |
| public void deleteTaskAssignment(String taskAssignmentId) { |
| try { |
| LOG.debug("Deleting task(id={})", taskAssignmentId); |
| if (taskAssignmentId == null) { |
| throw new IllegalArgumentException("Parameter 'taskAssignmentId' can not be null"); |
| } |
| BoxTaskAssignment taskAssignment = new BoxTaskAssignment(boxConnection, taskAssignmentId); |
| taskAssignment.delete(); |
| } catch (BoxAPIException e) { |
| throw new RuntimeException( |
| String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); |
| } |
| } |
| } |