/** * Tests the default group of an experimenter. * * @throws Exception Thrown if an error occurred. */ @Test public void testChangeDefaultGroup() throws Exception { // Create 2 groups and add a user String uuid1 = UUID.randomUUID().toString(); ExperimenterGroup g1 = new ExperimenterGroupI(); g1.setName(omero.rtypes.rstring(uuid1)); g1.getDetails().setPermissions(new PermissionsI("rw----")); String uuid2 = UUID.randomUUID().toString(); ExperimenterGroup g2 = new ExperimenterGroupI(); g2.setName(omero.rtypes.rstring(uuid2)); g2.getDetails().setPermissions(new PermissionsI("rw----")); IAdminPrx svc = root.getSession().getAdminService(); IQueryPrx query = root.getSession().getQueryService(); long id1 = svc.createGroup(g1); long id2 = svc.createGroup(g2); ParametersI p = new ParametersI(); p.addId(id1); ExperimenterGroup eg1 = (ExperimenterGroup) query.findByQuery("select distinct g from ExperimenterGroup g where g.id = :id", p); p = new ParametersI(); p.addId(id2); ExperimenterGroup eg2 = (ExperimenterGroup) query.findByQuery("select distinct g from ExperimenterGroup g where g.id = :id", p); Experimenter e = new ExperimenterI(); e.setOmeName(omero.rtypes.rstring(uuid1)); e.setFirstName(omero.rtypes.rstring("user")); e.setLastName(omero.rtypes.rstring("user")); List<ExperimenterGroup> groups = new ArrayList<ExperimenterGroup>(); // method tested elsewhere ExperimenterGroup userGroup = svc.lookupGroup(USER_GROUP); groups.add(eg1); groups.add(eg2); groups.add(userGroup); long id = svc.createExperimenter(e, eg1, groups); e = svc.lookupExperimenter(uuid1); List<GroupExperimenterMap> links = e.copyGroupExperimenterMap(); assertTrue(groups.get(0).getId().getValue() == eg1.getId().getValue()); svc.setDefaultGroup(e, eg2); e = svc.lookupExperimenter(uuid1); links = e.copyGroupExperimenterMap(); groups = new ArrayList<ExperimenterGroup>(); for (GroupExperimenterMap link : links) { groups.add(link.getParent()); } assertTrue(groups.get(0).getId().getValue() == eg2.getId().getValue()); }
/** * Returns the experimenters contained in this group. * * @return See above. */ public Set getExperimenters() { if (experimenters == null && asGroup().sizeOfGroupExperimenterMap() >= 0) { experimenters = new HashSet<ExperimenterData>(); List<GroupExperimenterMap> links = asGroup().copyGroupExperimenterMap(); for (GroupExperimenterMap link : links) { experimenters.add(new ExperimenterData(link.getChild())); } } return experimenters == null ? null : new HashSet(experimenters); }
/** * Returns the experimenters contained in this group. * * @return See above. */ public Set getLeaders() { if (leaders == null && asGroup().sizeOfGroupExperimenterMap() >= 0) { leaders = new HashSet<ExperimenterData>(); List<GroupExperimenterMap> links = asGroup().copyGroupExperimenterMap(); for (GroupExperimenterMap link : links) { if (link.getOwner().getValue()) leaders.add(new ExperimenterData(link.getChild())); } } return leaders == null ? null : new HashSet(leaders); }
/** * Tests the creation of a user using the <code>createUser</code> method. * * @throws Exception Thrown if an error occurred. */ @Test public void testCreateUser() throws Exception { String uuid = UUID.randomUUID().toString(); Experimenter e = new ExperimenterI(); e.setOmeName(omero.rtypes.rstring(uuid)); e.setFirstName(omero.rtypes.rstring("user")); e.setLastName(omero.rtypes.rstring("user")); IAdminPrx svc = root.getSession().getAdminService(); // already tested ExperimenterGroup g = new ExperimenterGroupI(); g.setName(omero.rtypes.rstring(uuid)); g.getDetails().setPermissions(new PermissionsI("rw----")); long groupId = svc.createGroup(g); long id = svc.createUser(e, uuid); IQueryPrx query = root.getSession().getQueryService(); // Check if we have a user ParametersI p = new ParametersI(); p.addId(id); e = (Experimenter) query.findByQuery("select distinct e from Experimenter e where e.id = :id", p); assertNotNull(e); assertTrue(e.getOmeName().getValue().equals(uuid)); // check if we are in the correct group i.e. user and uuid // now check if the user is in correct groups. ExperimenterGroup userGroup = svc.lookupGroup(USER_GROUP); List<Long> ids = new ArrayList<Long>(); ids.add(groupId); ids.add(userGroup.getId().getValue()); p = new ParametersI(); p.addLongs("gids", ids); List list = (List) query.findAllByQuery( "select m " + "from GroupExperimenterMap as m " + "left outer join fetch m.child " + "left outer join fetch m.parent" + " where m.parent.id in (:gids)", p); assertNotNull(list); Iterator i = list.iterator(); GroupExperimenterMap geMap; int count = 0; while (i.hasNext()) { geMap = (GroupExperimenterMap) i.next(); if (geMap.getChild().getId().getValue() == id) count++; } assertTrue(count == 2); }
/** * Tests to make a user the owner of a group. * * @throws Exception Thrown if an error occurred. */ @Test public void testSetOwner() throws Exception { // First create a new user. String uuid = UUID.randomUUID().toString(); Experimenter e = new ExperimenterI(); e.setOmeName(omero.rtypes.rstring(uuid)); e.setFirstName(omero.rtypes.rstring("user")); e.setLastName(omero.rtypes.rstring("user")); IAdminPrx svc = root.getSession().getAdminService(); // already tested ExperimenterGroup g = new ExperimenterGroupI(); g.setName(omero.rtypes.rstring(uuid)); g.getDetails().setPermissions(new PermissionsI("rw----")); // create group. long groupId = svc.createGroup(g); g = svc.lookupGroup(uuid); // create the user. long expId = svc.createUser(e, uuid); e = svc.lookupExperimenter(uuid); // set the user as the group owner. svc.setGroupOwner(g, e); IQueryPrx query = root.getSession().getQueryService(); String sql = "select m from GroupExperimenterMap as m "; sql += "left outer join fetch m.child as c "; sql += "left outer join fetch m.parent as p "; sql += "where "; sql += "c.id = :expId "; sql += " and p.id = :groupId"; ParametersI p = new ParametersI(); p.addLong("expId", expId); p.addLong("groupId", groupId); List l = (List) query.findAllByQuery(sql, p); Iterator i = l.iterator(); GroupExperimenterMap map; while (i.hasNext()) { map = (GroupExperimenterMap) i.next(); assertTrue(map.getOwner().getValue()); } }