cancel
Showing results for 
Search instead for 
Did you mean: 

How to get the Roles list?

Former Member
0 Kudos

Hi all,

I want to get the all Roles that existing on my portal.

Thanks a lot for your help!

Maya Shtibel.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Sorry, I meant how can I sort the list?

former_member182372
Active Contributor
0 Kudos

Hi Maya,

	IWDMessageManager messageManager = wdComponentAPI.getMessageManager();
    try {
		IRoleFactory roles = UMFactory.getRoleFactory();
		IRoleSearchFilter filter = roles.getRoleSearchFilter();
		filter.setUniqueName("*", ISearchAttribute.LIKE_OPERATOR, false);
		ISearchResult sresult  = roles.searchRoles(filter) ;

		TreeSet visibleRoles = new TreeSet(new RoleNameComparator());

		if ( sresult.getState() == ISearchResult.SEARCH_RESULT_OK ) {
			while(sresult.hasNext()) {
				String id = (String)sresult.next();
				IRole role = roles.getRole(id);
				visibleRoles.add(role);
				messageManager.reportSuccess(role.getDisplayName());
			}
		}
    } catch (Exception e) {
		messageManager.reportException(new WDNonFatalException(e), false);
    }
.............
public class RoleNameComparator
    implements Comparator
{

    public RoleNameComparator()
    {
    }

    public int compare(Object o1, Object o2)
    {
        IPrincipal role1 = (IPrincipal)o1;
        IPrincipal role2 = (IPrincipal)o2;
        int res = role1.getDisplayName().compareToIgnoreCase(role2.getDisplayName());
        if(0 == res)
            return role1.getUniqueID().compareToIgnoreCase(role2.getUniqueID());
        else
            return res;
    }
}

Mark usefull answers and close the thread in case your problem is solved.

Best regards, Maksim Rashchynski.

Answers (7)

Answers (7)

Former Member
0 Kudos

Hi SDN Team,

I have requirement to get the Roles that exist on specific location on the PCD.

I assume that I should put compatible value on the filter.

Thanks,

Maya Shtibel.

Former Member
0 Kudos

Hi Maksim,

Thanks for your quick and helpful answer!

Maya.

Former Member
0 Kudos

Hi Maksim,

Thanks for your quick and helpful answer!

Maya.

Former Member
0 Kudos

Hi Maksim,

Thanks for the helpful answer,

Now I get the all Roles list.

More one little question, how can I marge the list.

Thanks ahead,

Maya.

Former Member
0 Kudos

Hi,

Declare a String say Roles and use

Roles=Roles+role.getDisplayName

Regards

Saravanan K

Former Member
0 Kudos

Hi Saravanan,

The thread which U attach speak about different problem,

My problem is that I don't get the results, the thread talk about retrieving the role information from the iterator.

Any one else have any idea?

Maya Shtibel.

Former Member
0 Kudos

Hi Maksim,

Thanks for the quick answer,

I try to use your code, but for some reason it isn't working properly.

this row : <b>roles.searchRoles(filter) ;</b> return empty <b>ISearchResult</b>,

U have any suggestion why?

I even try to run the application from the portal to make sure that I have administrator premissions,

But this didn't help.

Thanke ahead,

Maya Shtibel.

Former Member
0 Kudos

Hi,

Have a look at this thread,

Regards,

Saravanan K

former_member182372
Active Contributor
0 Kudos

Hi Maya,

Try this:

	IWDMessageManager messageManager = wdComponentAPI.getMessageManager();
    try {
		IRoleFactory roles = UMFactory.getRoleFactory();
		IRoleSearchFilter filter = roles.getRoleSearchFilter();
		filter.setUniqueName("*", ISearchAttribute.LIKE_OPERATOR, false);
		ISearchResult sresult  = roles.searchRoles(filter) ;
		if ( sresult.getState() == ISearchResult.SEARCH_RESULT_OK ) {
			while(sresult.hasNext()) {
				String id = (String)sresult.next();
				IRole role = roles.getRole(id);
				messageManager.reportSuccess(role.getDisplayName());
			}
		}
    } catch (Exception e) {
		messageManager.reportException(new WDNonFatalException(e), false);
    }

Best regards, Maksim Rashchynski.

former_member182372
Active Contributor
0 Kudos

Hi Maya,

Add "com.sap.security.api.jar" to your project`s java build path.

IRoleFactory roles = UMFactory.getRoleFactory();
IRoleSearchFilter filter = roles.getRoleSearchFilter();
filter.setUniqueName("*", ISearchAttribute.LIKE_OPERATOR, false);
ISearchResult sresult  = roles.searchRoles(filter) ;
if ( sresult.getState() != ISearchResult.SEARCH_RESULT_OK ) {
	ArrayList roels = new ArrayList( sresult.size() );
	for ( final Iterator i = new PrincipalIterator(sresult); i.hasNext(); )  {
		output.add(  (IRole) i.next() ); 
	}
}

Check https://media.sdn.sap.com/javadocs/NW04/SPS15/um/index.html

http://help.sap.com/saphelp_nw04s/helpdata/en/0f/807300c5754ed79107dcd9c2ae4ef4/content.htm

Best regards, Maksim Rashchynski.