Search in sources :

Example 86 with Dataverse

use of edu.harvard.iq.dataverse.Dataverse in project dataverse by IQSS.

the class FinalizeDatasetPublicationCommand method updateParentDataversesSubjectsField.

/**
 * add the dataset subjects to all parent dataverses.
 */
private void updateParentDataversesSubjectsField(Dataset savedDataset, CommandContext ctxt) {
    for (DatasetField dsf : savedDataset.getLatestVersion().getDatasetFields()) {
        if (dsf.getDatasetFieldType().getName().equals(DatasetFieldConstant.subject)) {
            Dataverse dv = savedDataset.getOwner();
            while (dv != null) {
                if (dv.getDataverseSubjects().addAll(dsf.getControlledVocabularyValues())) {
                    Dataverse dvWithSubjectJustAdded = ctxt.em().merge(dv);
                    ctxt.em().flush();
                    // need to reindex to capture the new subjects
                    ctxt.index().indexDataverse(dvWithSubjectJustAdded);
                }
                dv = dv.getOwner();
            }
            break;
        }
    }
}
Also used : DatasetField(edu.harvard.iq.dataverse.DatasetField) Dataverse(edu.harvard.iq.dataverse.Dataverse)

Example 87 with Dataverse

use of edu.harvard.iq.dataverse.Dataverse in project dataverse by IQSS.

the class GroupServiceBeanTest method testFlattenGroupsCollection.

@Test
public void testFlattenGroupsCollection() throws GroupException {
    // Setup
    MockRoleAssigneeServiceBean roleAssigneeSvc = new MockRoleAssigneeServiceBean();
    ExplicitGroupProvider prv = new ExplicitGroupProvider(null, roleAssigneeSvc);
    ExplicitGroup gA = new ExplicitGroup(prv);
    gA.setDisplayName("A");
    ExplicitGroup gAa = new ExplicitGroup(prv);
    gAa.setDisplayName("Aa");
    ExplicitGroup gAb = new ExplicitGroup(prv);
    gAb.setDisplayName("Ab");
    ExplicitGroup gAstar = new ExplicitGroup(prv);
    gAstar.setDisplayName("A*");
    Dataverse dv = MocksFactory.makeDataverse();
    Stream.of(gA, gAa, gAb, gAstar).forEach(g -> {
        g.setId(MocksFactory.nextId());
        g.setOwner(dv);
        g.setGroupAliasInOwner(g.getDisplayName());
        roleAssigneeSvc.add(g);
        g.updateAlias();
    });
    // create some containment hierarchy.
    gA.add(gAa);
    gA.add(gAb);
    gAb.add(gAstar);
    gAa.add(gAstar);
    gAa.add(AuthenticatedUsers.get());
    // Test
    GroupServiceBean sut = new GroupServiceBean();
    sut.roleAssigneeSvc = roleAssigneeSvc;
    Set<Group> grps = setOf(AllUsers.get(), gA);
    List<Group> result = sut.flattenGroupsCollection(grps).collect(toList());
    assertEquals("Groups should appear only once", result.size(), new HashSet<>(result).size());
    grps.addAll(listOf(gAa, gAb, gAstar, AuthenticatedUsers.get()));
    assertEquals("All groups should appear", grps, new HashSet<>(result));
}
Also used : ExplicitGroup(edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroup) ExplicitGroupProvider(edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroupProvider) MockRoleAssigneeServiceBean(edu.harvard.iq.dataverse.mocks.MockRoleAssigneeServiceBean) Dataverse(edu.harvard.iq.dataverse.Dataverse) ExplicitGroup(edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroup) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 88 with Dataverse

use of edu.harvard.iq.dataverse.Dataverse in project dataverse by IQSS.

the class GroupServiceBeanTest method testCollectAncestors.

@Test
public void testCollectAncestors() throws GroupException {
    // Setup
    MockRoleAssigneeServiceBean roleAssigneeSvc = new MockRoleAssigneeServiceBean();
    MockExplicitGroupService explicitGroupSvc = new MockExplicitGroupService();
    ExplicitGroupProvider prv = new ExplicitGroupProvider(null, roleAssigneeSvc);
    ExplicitGroup gA = new ExplicitGroup(prv);
    gA.setDisplayName("A");
    ExplicitGroup gAa = new ExplicitGroup(prv);
    gAa.setDisplayName("Aa");
    ExplicitGroup gAb = new ExplicitGroup(prv);
    gAb.setDisplayName("Ab");
    ExplicitGroup gAstar = new ExplicitGroup(prv);
    gAstar.setDisplayName("A*");
    Dataverse dv = MocksFactory.makeDataverse();
    Stream.of(gA, gAa, gAb, gAstar).forEach(g -> {
        g.setId(MocksFactory.nextId());
        g.setOwner(dv);
        g.setGroupAliasInOwner(g.getDisplayName());
        g.updateAlias();
        roleAssigneeSvc.add(g);
        explicitGroupSvc.registerGroup(g);
    });
    // create some containment hierarchy.
    gA.add(gAa);
    gA.add(gAb);
    gAb.add(gAstar);
    gAa.add(gAstar);
    gAa.add(AuthenticatedUsers.get());
    // Test
    GroupServiceBean sut = new GroupServiceBean();
    sut.roleAssigneeSvc = roleAssigneeSvc;
    sut.explicitGroupService = explicitGroupSvc;
    assertEquals(setOf(gA), sut.collectAncestors(setOf(gA)));
    assertEquals(setOf(gA, gAb), sut.collectAncestors(setOf(gAb)));
    assertEquals(setOf(gA, gAa, AuthenticatedUsers.get()), sut.collectAncestors(setOf(AuthenticatedUsers.get())));
    assertEquals(setOf(gA, gAb, gAa, gAstar), sut.collectAncestors(setOf(gAstar)));
}
Also used : ExplicitGroupProvider(edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroupProvider) MockRoleAssigneeServiceBean(edu.harvard.iq.dataverse.mocks.MockRoleAssigneeServiceBean) MockExplicitGroupService(edu.harvard.iq.dataverse.mocks.MockExplicitGroupService) Dataverse(edu.harvard.iq.dataverse.Dataverse) ExplicitGroup(edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroup) Test(org.junit.Test)

Example 89 with Dataverse

use of edu.harvard.iq.dataverse.Dataverse in project dataverse by IQSS.

the class ExplicitGroupTest method addGroupToUnrealtedGroup.

@Test(expected = GroupException.class)
public void addGroupToUnrealtedGroup() throws GroupException {
    Dataverse dv1 = makeDataverse();
    Dataverse dv2 = makeDataverse();
    ExplicitGroup g1 = new ExplicitGroup(prv);
    ExplicitGroup g2 = new ExplicitGroup(prv);
    g1.setOwner(dv1);
    g2.setOwner(dv2);
    g1.add(g2);
    fail("An explicit group cannot contain an explicit group defined in " + "a dataverse that's not an ancestor of that group's owner dataverse.");
}
Also used : Dataverse(edu.harvard.iq.dataverse.Dataverse) Test(org.junit.Test)

Example 90 with Dataverse

use of edu.harvard.iq.dataverse.Dataverse in project dataverse by IQSS.

the class ExplicitGroupTest method addGroupToDescendant.

@Test(expected = GroupException.class)
public void addGroupToDescendant() throws GroupException {
    Dataverse dv = makeDataverse();
    ExplicitGroup root = new ExplicitGroup(prv);
    root.setId(nextId());
    root.setGroupAliasInOwner("top");
    ExplicitGroup sub = new ExplicitGroup(prv);
    sub.setGroupAliasInOwner("sub");
    sub.setId(nextId());
    ExplicitGroup subSub = new ExplicitGroup(prv);
    subSub.setGroupAliasInOwner("subSub");
    subSub.setId(nextId());
    root.setOwner(dv);
    sub.setOwner(dv);
    subSub.setOwner(dv);
    sub.add(subSub);
    root.add(sub);
    subSub.add(root);
    fail("A group cannot contain its parent");
}
Also used : Dataverse(edu.harvard.iq.dataverse.Dataverse) Test(org.junit.Test)

Aggregations

Dataverse (edu.harvard.iq.dataverse.Dataverse)94 Dataset (edu.harvard.iq.dataverse.Dataset)34 AuthenticatedUser (edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser)31 Test (org.junit.Test)27 DataverseRequest (edu.harvard.iq.dataverse.engine.command.DataverseRequest)22 DataFile (edu.harvard.iq.dataverse.DataFile)18 IOException (java.io.IOException)18 Path (javax.ws.rs.Path)16 JsonObject (javax.json.JsonObject)15 CommandException (edu.harvard.iq.dataverse.engine.command.exception.CommandException)11 ArrayList (java.util.ArrayList)11 EJBException (javax.ejb.EJBException)11 JsonObjectBuilder (javax.json.JsonObjectBuilder)11 InputStream (java.io.InputStream)10 Date (java.util.Date)10 JsonArrayBuilder (javax.json.JsonArrayBuilder)10 POST (javax.ws.rs.POST)10 DataverseRole (edu.harvard.iq.dataverse.authorization.DataverseRole)9 User (edu.harvard.iq.dataverse.authorization.users.User)9 SwordError (org.swordapp.server.SwordError)9