2014-02-12 4 views
0

В настоящее время я разрабатываю плагин, который позволяет администраторам проектов управлять пользователями в группах. Я расчесывал справочную документацию api, и я не могу найти никаких вызовов, которые я могу сделать, что позволит мне видеть группы, связанные с конкретным проектом.Группы доступа, связанные с ролью проекта с использованием Atlassian API

Я просмотрел API в любом месте, которое имеет отношение к тому, что я ищу, но безрезультатно.

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

SELECT ROLETYPEPARAMETER AS "Groups" 

FROM projectrole PROJECT_ROLE, 
projectroleactor PROJECT_ROLE_ACTOR 

JOIN project PROJECT 
    ON PROJECT.id = PROJECT_ROLE_ACTOR.PID 
JOIN cwd_group 
    ON group_name = roletypeparameter 

WHERE PROJECT_ROLE_ACTOR.projectroleid = PROJECT_ROLE.id 
AND PKEY = <projectkey>; 

Я бы предпочел манипулировать этими данными через API, если это вообще возможно.

Все остальные части доступны для меня, чтобы завершить плагин, чтобы добавить, удалить пользователей из групп.

Я знаю, что информация, которую я ищу, доступна. Если вы перейдете на страницу ролей, у вас будут как пользователи в ролях, так и группы в ролях. Я уверен, что я пропускаю что-то второстепенное с API, чтобы дать мне группы, связанные с проектом.

ответ

0

После внедрения моего маршрута базы данных я вернулся к подходу, отличному от базы данных. Это реализация, которая решает проблему.

Способ реализации групп - это роль актера, как набор под ролями проекта. Еще один уровень у вас есть имена вашей группы в качестве дескриптора роли.

//Create TreeMap to Store the Role-Group association. Note a role can have more than one group 
TreeMap<String,Collection<String>> projectGroups = new TreeMap<String,Collection<String>>(); 

//Get all the project roles 
Collection<ProjectRole> projectRoles = projectRoleManager.getProjectRoles(); 

//Iterate through each role and get the groups associated with the role 
for (ProjectRole projectRole : projectRoles) 
{ 
    //Get the role actors for the project role 
    ProjectRoleActors roleActors = projectRoleManager.getProjectRoleActors(projectRole, project); 

    //Create an iterator to grab all of the groups for this project role 
    Iterator <RoleActor> roleActorIterator = roleActors.getRoleActors().iterator(); 

    //Create a collection of strings to store all of the group's roles to put in the map 
    Collection <String> groupRoles = new ArrayList<String>(); 

    //Iterate the role actors to get the groups 
    while (roleActorIterator.hasNext()) 
    { 

     //Add the group by string name into collection 
     groupRoles.add(roleActorIterator.next().getDescriptor()); 

    }//END While 

    //Add that role, and the associated groups to that role into our map. 
    projectGroups.put(projectRole.getName(), groupRoles); 

}//END For 

Выход это будет выглядеть так же, как это

{Administrators=[jira-administrators], Developers=[jira-developers, jira-users], Users=[jira-users]}