/** * 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.Collection; import com.box.sdk.BoxAPIConnection; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxCollaboration; import com.box.sdk.BoxCollaborator; import com.box.sdk.BoxFolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Box Collaborations Manager * <p> * Provides operations to manage Box collaborations. * */ public class BoxCollaborationsManager { private static final Logger LOG = LoggerFactory.getLogger(BoxCollaborationsManager.class); /** * Box connection to authenticated user account. */ private BoxAPIConnection boxConnection; /** * Create collaborations manager to manage the comments of Box connection's * authenticated user. * * @param boxConnection * - Box connection to authenticated user account. */ public BoxCollaborationsManager(BoxAPIConnection boxConnection) { this.boxConnection = boxConnection; } /** * Get information about all of the collaborations for folder. * * @param folderId * - the id of folder to get collaborations information on. * * @return The collection of collaboration information for folder. */ public Collection<BoxCollaboration.Info> getFolderCollaborations(String folderId) { try { LOG.debug("Getting collaborations for folder(id=" + folderId + ")"); if (folderId == null) { throw new IllegalArgumentException("Parameter 'folderId' can not be null"); } BoxFolder folder = new BoxFolder(boxConnection, folderId); return folder.getCollaborations(); } catch (BoxAPIException e) { throw new RuntimeException( String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); } } /** * Add a collaboration to this folder. * * @param folderId * - the id of folder to add collaboration to. * @param collaborator * - the collaborator to add. * @param role * - the role of the collaborator. * * @return The new collaboration. */ @SuppressWarnings("unused") // compiler for some reason thinks 'if // (collaborator == null)' clause is dead code. public BoxCollaboration addFolderCollaboration(String folderId, BoxCollaborator collaborator, BoxCollaboration.Role role) { try { LOG.debug("Creating collaborations for folder(id=" + folderId + ") with collaborator(" + collaborator.getID() + ")"); if (folderId == null) { throw new IllegalArgumentException("Parameter 'folderId' can not be null"); } if (collaborator == null) { throw new IllegalArgumentException("Parameter 'collaborator' can not be null"); } if (role == null) { throw new IllegalArgumentException("Parameter 'role' can not be null"); } BoxFolder folder = new BoxFolder(boxConnection, folderId); return folder.collaborate(collaborator, role).getResource(); } catch (BoxAPIException e) { throw new RuntimeException( String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); } } /** * Add a collaboration to this folder. An email will be sent to the * collaborator if they don't already have a Box account. * * @param folderId * - the id of folder to add collaboration to. * @param email * - the email address of the collaborator to add. * @param role * - the role of the collaborator. * * @return The new collaboration. */ public BoxCollaboration addFolderCollaborationByEmail(String folderId, String email, BoxCollaboration.Role role) { try { LOG.debug("Creating collaborations for folder(id=" + folderId + ") with collaborator(" + email + ")"); if (folderId == null) { throw new IllegalArgumentException("Parameter 'folderId' can not be null"); } if (email == null) { throw new IllegalArgumentException("Parameter 'email' can not be null"); } if (role == null) { throw new IllegalArgumentException("Parameter 'role' can not be null"); } BoxFolder folder = new BoxFolder(boxConnection, folderId); return folder.collaborate(email, role).getResource(); } catch (BoxAPIException e) { throw new RuntimeException( String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); } } /** * Get collaboration information. * * @param collaborationId * - the id of collaboration. * @return The collaboration information. */ public BoxCollaboration.Info getCollaborationInfo(String collaborationId) { try { LOG.debug("Getting info for collaboration(id=" + collaborationId + ")"); if (collaborationId == null) { throw new IllegalArgumentException("Parameter 'collaborationId' can not be null"); } BoxCollaboration collaboration = new BoxCollaboration(boxConnection, collaborationId); return collaboration.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 collaboration information. * * @param collaborationId * - the id of collaboration. * @return The collaboration with updated information. */ public BoxCollaboration updateCollaborationInfo(String collaborationId, BoxCollaboration.Info info) { try { LOG.debug("Updating info for collaboration(id=" + collaborationId + ")"); if (collaborationId == null) { throw new IllegalArgumentException("Parameter 'collaborationId' can not be null"); } BoxCollaboration collaboration = new BoxCollaboration(boxConnection, collaborationId); collaboration.updateInfo(info); return collaboration; } catch (BoxAPIException e) { throw new RuntimeException( String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); } } /** * Delete collaboration. * * @param collaborationId * - the id of comment to change. * @return The comment with changed message. */ public void deleteCollaboration(String collaborationId) { try { LOG.debug("Deleting collaboration(id=" + collaborationId + ")"); if (collaborationId == null) { throw new IllegalArgumentException("Parameter 'collaborationId' can not be null"); } BoxCollaboration collaboration = new BoxCollaboration(boxConnection, collaborationId); collaboration.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 all pending collaboration invites for the current user. * * @return A collection of pending collaboration information. */ public Collection<BoxCollaboration.Info> getPendingCollaborations() { try { return BoxCollaboration.getPendingCollaborations(boxConnection); } catch (BoxAPIException e) { throw new RuntimeException( String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e); } } }