/** * find all ome.model.meta.GroupExperimenterMap which have the argument as their child. */ public java.util.Set<ome.model.meta.GroupExperimenterMap> findGroupExperimenterMap( ome.model.meta.Experimenter target ) { if (! _loaded ) errorIfUnloaded(); final java.util.Iterator<ome.model.meta.GroupExperimenterMap> it = iterateGroupExperimenterMap(); final java.util.Set<ome.model.meta.GroupExperimenterMap> result = new java.util.HashSet<ome.model.meta.GroupExperimenterMap>(); while ( it.hasNext() ) { ome.model.meta.GroupExperimenterMap link = it.next(); if ( link.child() == target ) { result.add( link ); } } return result; }
/** * takes a CBlock and calls the block once for each ome.model.meta.GroupExperimenterMap while * collecting the results. If <code>block == null</code>, then the * iterator values themselves are collected. This method uses * {@link #iterateGroupExperimenterMap} internally and so will return a value * even if the underlying collection is null. */ @SuppressWarnings("unchecked") public <E> java.util.List<E> collectGroupExperimenterMap(ome.util.CBlock<E> block) { if (! _loaded ) errorIfUnloaded(); java.util.List<E> result = new java.util.ArrayList<E>(); java.util.Iterator<ome.model.meta.GroupExperimenterMap> it = iterateGroupExperimenterMap(); while ( it.hasNext() ) { IObject obj = (IObject) it.next(); if ( block != null ) { result.add( block.call( obj ) ); } else { result.add( (E) obj ); } } return result; }
@Override @RolesAllowed("user") public List<Experimenter> getAdminsWithPrivileges(List<AdminPrivilege> privileges) { assertKnownPrivileges(privileges); final List<Experimenter> admins = new ArrayList<Experimenter>(); final long systemGroupId = getSecurityRoles().getSystemGroupId(); final Iterator<GroupExperimenterMap> memberships = getGroup(systemGroupId).iterateGroupExperimenterMap(); while (memberships.hasNext()) { boolean hasPrivileges = true; final Experimenter admin = userProxy(memberships.next().getChild().getId()); final List<AdminPrivilege> privilegesOfAdmin = getAdminPrivileges(admin); for (final AdminPrivilege privilege : privileges) { if (!privilegesOfAdmin.contains(privilege)) { hasPrivileges = false; break; } } if (hasPrivileges) { admins.add(admin); } } return admins; }