diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/PermissionSet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/PermissionSet.java index 160fb7c62..0af4001a8 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/PermissionSet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/PermissionSet.java @@ -18,6 +18,8 @@ public class PermissionSet { /** This may be empty, but it should never be null. */ private String label = ""; + private boolean defaultForNewUsers; + /** This may be empty, but it should never be null. */ private Set permissionUris = Collections.emptySet(); @@ -37,6 +39,15 @@ public class PermissionSet { this.label = (label == null) ? "" : label; } + public boolean isDefaultForNewUsers() { + return defaultForNewUsers; + } + + public void setDefaultForNewUsers(Boolean defaultForNewUsers) { + this.defaultForNewUsers = (defaultForNewUsers == null) ? false + : defaultForNewUsers.booleanValue(); + } + public Set getPermissionUris() { return permissionUris; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java index 189773686..dde828b54 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java @@ -169,6 +169,7 @@ public class VitroVocabulary { public static final String PERMISSIONSET = VITRO_AUTH + "PermissionSet"; public static final String PERMISSIONSET_HAS_PERMISSION = VITRO_AUTH + "hasPermission"; + public static final String DEFAULT_PERMISSION_SET_FOR_NEW_USERS = VITRO_AUTH + "DefaultPermissionSetForNewUsers"; public static final String PERMISSION = VITRO_AUTH + "Permission"; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java index 3e8747b51..676bdfd33 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java @@ -142,6 +142,7 @@ public class JenaBaseDaoCon { protected ObjectProperty USERACCOUNT_PROXY_EDITOR_FOR = _constModel.createObjectProperty(VitroVocabulary.USERACCOUNT_PROXY_EDITOR_FOR); protected OntClass PERMISSIONSET = _constModel.createClass(VitroVocabulary.PERMISSIONSET); + protected OntClass DEFAULT_PERMISSION_SET_FOR_NEW_USERS = _constModel.createClass(VitroVocabulary.DEFAULT_PERMISSION_SET_FOR_NEW_USERS); protected ObjectProperty PERMISSIONSET_HAS_PERMISSION = _constModel.createObjectProperty(VitroVocabulary.PERMISSIONSET_HAS_PERMISSION); protected OntClass PERMISSION = _constModel.createClass(VitroVocabulary.PERMISSION); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/UserAccountsDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/UserAccountsDaoJena.java index bdb8a21db..7611e2ffb 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/UserAccountsDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/UserAccountsDaoJena.java @@ -382,7 +382,7 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao Resource s = getOntModel().createResource(uri); getOntModel().remove(s, p, o); } - for (String uri: addThese) { + for (String uri : addThese) { Resource s = getOntModel().createResource(uri); getOntModel().add(s, p, o); } @@ -410,6 +410,8 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao PermissionSet ps = new PermissionSet(); ps.setUri(uri); ps.setLabel(getPropertyStringValue(r, RDFS.label)); + ps.setDefaultForNewUsers(isResourceOfType(r, + DEFAULT_PERMISSION_SET_FOR_NEW_USERS)); ps.setPermissionUris(getPropertyResourceURIValues(r, PERMISSIONSET_HAS_PERMISSION)); return ps; @@ -434,6 +436,8 @@ public class UserAccountsDaoJena extends JenaBaseDao implements UserAccountsDao PermissionSet ps = new PermissionSet(); ps.setUri(r.getURI()); ps.setLabel(getPropertyStringValue(r, RDFS.label)); + ps.setDefaultForNewUsers(isResourceOfType(r, + DEFAULT_PERMISSION_SET_FOR_NEW_USERS)); ps.setPermissionUris(getPropertyResourceURIValues(r, PERMISSIONSET_HAS_PERMISSION)); list.add(ps); diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/dao/jena/UserAccountsDaoJenaTest.java b/webapp/test/edu/cornell/mannlib/vitro/webapp/dao/jena/UserAccountsDaoJenaTest.java index 68bf50fac..1a6205e67 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/dao/jena/UserAccountsDaoJenaTest.java +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/dao/jena/UserAccountsDaoJenaTest.java @@ -358,6 +358,7 @@ public class UserAccountsDaoJenaTest extends AbstractTestClass { PermissionSet ps2 = new PermissionSet(); ps2.setUri(URI_ROLE2); ps2.setLabel("Role 2"); + ps2.setDefaultForNewUsers(true); expected.add(ps2); assertCorrectPermissionSets(expected, dao.getAllPermissionSets()); @@ -450,25 +451,26 @@ public class UserAccountsDaoJenaTest extends AbstractTestClass { Collection actual) { Set> expectedMaps = new HashSet>(); for (PermissionSet ps : expected) { - Map map = new HashMap(); - map.put("uri", ps.getUri()); - map.put("label", ps.getLabel()); - map.put("permissions", ps.getPermissionUris()); - expectedMaps.add(map); + expectedMaps.add(buildMapFromPermissionSet(ps)); } Set> actualMaps = new HashSet>(); for (PermissionSet ps : actual) { - Map map = new HashMap(); - map.put("uri", ps.getUri()); - map.put("label", ps.getLabel()); - map.put("permissions", ps.getPermissionUris()); - actualMaps.add(map); + actualMaps.add(buildMapFromPermissionSet(ps)); } assertEquals("all permission sets", expectedMaps, actualMaps); } + private Map buildMapFromPermissionSet(PermissionSet ps) { + Map map = new HashMap(); + map.put("uri", ps.getUri()); + map.put("label", ps.getLabel()); + map.put("permissions", ps.getPermissionUris()); + map.put("defaultForNewUsers", ps.isDefaultForNewUsers()); + return map; + } + private void assertExpectedAccountUris(String label, Set expectedUserAccounts, Collection actualUserAccounts) { diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/dao/jena/resources/UserAccountsDaoJenaTest.n3 b/webapp/test/edu/cornell/mannlib/vitro/webapp/dao/jena/resources/UserAccountsDaoJenaTest.n3 index 7b5069c26..007f41861 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/dao/jena/resources/UserAccountsDaoJenaTest.n3 +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/dao/jena/resources/UserAccountsDaoJenaTest.n3 @@ -2,6 +2,7 @@ @prefix rdf: . @prefix rdfs: . +@prefix xsd: . @prefix owl: . @prefix auth: . @prefix mydomain: . @@ -30,6 +31,7 @@ mydomain:role1 mydomain:role2 a auth:PermissionSet ; + a auth:DefaultPermissionSetForNewUsers ; rdfs:label "Role 2" ; .