У меня есть программа, которая проходит по дереву папок, чтобы установить безопасность дерева папок на основе списка сотрудников и их должности.
Сначала я удалил бы всю безопасность и добавил быпользователи и группы назад.Это вызвало тысячи писем, когда пользователи были добавлены обратно как соавторы, и много ненавистных писем для меня!
Так что теперь я пытаюсь найти способ обновить соавторов вместо удаления / добавления.Суть того, что я делаю, - это создание списка соавторов из папки.Затем я ищу конкретных пользователей в списке.Если они не найдены, я добавляю их.Если они найдены, мне нужно обновить их безопасность, скажем, от редактора до Co_Owner.
Кто-нибудь знает, как это сделать.Смотрите по коду ниже ....
// Loop through the property's sub-folders
for (final BoxFolder propertySubfolder : boxService.getSubFolders( propertyFolder ))
{
out.format( " %s%n", propertySubfolder.getInfo().getName() );
// Capture a list of all existing collaborators for later...
List<BoxCollaboration.Info > listOfCollaborators = new ArrayList<BoxCollaboration.Info >();
for( final BoxCollaboration.Info collaboration : propertySubfolder.getCollaborations() )
{
// Loop through existing collaborators and remove any groups so we can add them later with the appropriate access
if( collaboration.getAccessibleBy() != null )
{
String collabName = collaboration.getAccessibleBy().getName();
if( StringUtils.containsIgnoreCase( listOfGroupEditors.toString(), collabName ) )
{
out.println( " Removing: " + collabName );
collaboration.getResource().delete();
}
else
{
// Add all collaborators in this subfolder to a list for checking if we need to add collaborators later
listOfCollaborators.add( collaboration );
}
}
}
int index;
BoxCollaboration.Info aCollaboration;
// Add the regional directory as a co_owner
if( regionalDirector != null )
{
index = findCollaborator( regionalDirector, listOfCollaborators );
if( index == -1 )
{
out.println( " Adding regional director: " + regionalDirector.getInfo().getName() );
propertySubfolder.collaborate( regionalDirector, BoxCollaboration.Role.CO_OWNER );
}
else
{
aCollaboration = listOfCollaborators.get( index );
aCollaboration.setRole( BoxCollaboration.Role.CO_OWNER );
// now what?
}
}