Как обновить существующего соавтора - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть программа, которая проходит по дереву папок, чтобы установить безопасность дерева папок на основе списка сотрудников и их должности.

Сначала я удалил бы всю безопасность и добавил быпользователи и группы назад.Это вызвало тысячи писем, когда пользователи были добавлены обратно как соавторы, и много ненавистных писем для меня!

Так что теперь я пытаюсь найти способ обновить соавторов вместо удаления / добавления.Суть того, что я делаю, - это создание списка соавторов из папки.Затем я ищу конкретных пользователей в списке.Если они не найдены, я добавляю их.Если они найдены, мне нужно обновить их безопасность, скажем, от редактора до 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?
    }
}
...