blob: 6ad31f92b532eef51b4e5836cfe4c80f7c9f0a35 [file] [log] [blame]
/**
* 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.ArrayList;
import java.util.Collection;
import com.box.sdk.BoxAPIConnection;
import com.box.sdk.BoxAPIException;
import com.box.sdk.BoxGroup;
import com.box.sdk.BoxGroupMembership;
import com.box.sdk.BoxUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Box Groups Manager
*
* <p>
* Provides operations to manage Box groups.
*
*
*
*/
public class BoxGroupsManager {
private static final Logger LOG = LoggerFactory.getLogger(BoxGroupsManager.class);
/**
* Box connection to authenticated user account.
*/
private BoxAPIConnection boxConnection;
/**
* Create groups manager to manage the users of Box connection's
* authenticated user.
*
* @param boxConnection
* - Box connection to authenticated user account.
*/
public BoxGroupsManager(BoxAPIConnection boxConnection) {
this.boxConnection = boxConnection;
}
/**
* Get all the groups in the enterprise.
*
* @return Collection containing all the enterprise's groups.
*/
public Collection<BoxGroup> getAllGroups() {
try {
LOG.debug("Getting all groups");
Collection<BoxGroup> groups = new ArrayList<BoxGroup>();
for (BoxGroup.Info groupInfo : BoxGroup.getAllGroups(boxConnection)) {
groups.add(groupInfo.getResource());
}
return groups;
} catch (BoxAPIException e) {
throw new RuntimeException(
String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e);
}
}
/**
* Create a new group with a specified name and optional additional parameters.
* Optional parameters may be null.
*
* @param name
* - the name of the new group.
* @param provenance
* - the provenance of the new group.
* @param externalSyncIdentifier
* - the external_sync_identifier of the new group.
* @param description
* - the description of the new group.
* @param invitabilityLevel
* - the invitibility_level of the new group.
* @param memberViewabilityLevel
* - the member_viewability_level of the new group.
* @return The newly created group.
*/
public BoxGroup createGroup(String name, String provenance,
String externalSyncIdentifier, String description,
String invitabilityLevel, String memberViewabilityLevel) {
try {
LOG.debug("Creating group name=" + name);
if (name == null) {
throw new IllegalArgumentException("Parameter 'name' can not be null");
}
return BoxGroup.createGroup(boxConnection, name, provenance, externalSyncIdentifier, description,
invitabilityLevel, memberViewabilityLevel).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 group.
*
* @param groupId
* - the id of group to delete.
*/
public void deleteGroup(String groupId) {
try {
LOG.debug("Deleting group(" + groupId + ")");
if (groupId == null) {
throw new IllegalArgumentException("Parameter 'groupId' can not be null");
}
BoxGroup group = new BoxGroup(boxConnection, groupId);
group.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 group information.
*
* @param groupId
* - the id of group.
* @return The group information.
*/
public BoxGroup.Info getGroupInfo(String groupId) {
try {
LOG.debug("Getting info for group(id=" + groupId + ")");
if (groupId == null) {
throw new IllegalArgumentException("Parameter 'groupId' can not be null");
}
BoxGroup group = new BoxGroup(boxConnection, groupId);
return group.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 group information.
*
* @param groupId
* - the id of group to update.
* @param groupInfo
* - the updated information
* @return The updated group.
*/
public BoxGroup updateGroupInfo(String groupId, BoxGroup.Info groupInfo) {
try {
LOG.debug("Updating info for group(id=" + groupId + ")");
if (groupId == null) {
throw new IllegalArgumentException("Parameter 'groupId' can not be null");
}
if (groupInfo == null) {
throw new IllegalArgumentException("Parameter 'groupInfo' can not be null");
}
BoxGroup group = new BoxGroup(boxConnection, groupId);
group.updateInfo(groupInfo);
return group;
} catch (BoxAPIException e) {
throw new RuntimeException(
String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e);
}
}
/**
* Get information about all of the group memberships for this group.
*
* @param groupId
* - the id of group.
* @return The group information.
*/
public Collection<BoxGroupMembership.Info> getGroupMemberships(String groupId) {
try {
LOG.debug("Getting information about all memberships for group(id=" + groupId + ")");
if (groupId == null) {
throw new IllegalArgumentException("Parameter 'groupId' can not be null");
}
BoxGroup group = new BoxGroup(boxConnection, groupId);
return group.getMemberships();
} 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 member to group with the specified role.
*
* @param groupId
* - the id of group.
* @param userId
* - the id of user to be added to group.
* @param role
* - the role of the user in this group. Can be <code>null</code>
* to assign the default role.
* @return The group information.
*/
public BoxGroupMembership addGroupMembership(String groupId, String userId, BoxGroupMembership.Role role) {
try {
LOG.debug("Adding user(id=" + userId + ") as member to group(id=" + groupId
+ (role == null ? ")" : ") with role=" + role.name()));
if (groupId == null) {
throw new IllegalArgumentException("Parameter 'groupId' can not be null");
}
if (userId == null) {
throw new IllegalArgumentException("Parameter 'userId' can not be null");
}
BoxGroup group = new BoxGroup(boxConnection, groupId);
BoxUser user = new BoxUser(boxConnection, userId);
return group.addMembership(user, 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);
}
}
/**
* Delete group membership.
*
* @param groupMembershipId
* - the id of group membership to delete.
*/
public void deleteGroupMembership(String groupMembershipId) {
try {
LOG.debug("Deleting groupMembership(id=" + groupMembershipId + ")");
if (groupMembershipId == null) {
throw new IllegalArgumentException("Parameter 'groupMemebershipId' can not be null");
}
BoxGroupMembership groupMembership = new BoxGroupMembership(boxConnection, groupMembershipId);
groupMembership.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 group membership information.
*
* @param groupMemebershipId
* - the id of group membership.
* @return The group information.
*/
public BoxGroupMembership.Info getGroupMembershipInfo(String groupMemebershipId) {
try {
LOG.debug("Getting info for groupMemebership(id=" + groupMemebershipId + ")");
if (groupMemebershipId == null) {
throw new IllegalArgumentException("Parameter 'groupMemebershipId' can not be null");
}
BoxGroupMembership group = new BoxGroupMembership(boxConnection, groupMemebershipId);
return group.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 group membership information.
*
* @param groupMembershipId
* - the id of group membership to update.
* @param info
* - the updated information.
* @return The group information.
*/
public BoxGroupMembership updateGroupMembershipInfo(String groupMemebershipId, BoxGroupMembership.Info info) {
try {
LOG.debug("Updating info for groupMembership(id=" + groupMemebershipId + ")");
if (groupMemebershipId == null) {
throw new IllegalArgumentException("Parameter 'groupMemebershipId' can not be null");
}
if (info == null) {
throw new IllegalArgumentException("Parameter 'info' can not be null");
}
BoxGroupMembership groupMembership = new BoxGroupMembership(boxConnection, groupMemebershipId);
groupMembership.updateInfo(info);
return groupMembership;
} catch (BoxAPIException e) {
throw new RuntimeException(
String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e);
}
}
}