Skip to content

Commit e054b8c

Browse files
authored
Merge pull request #3346 from IQSS/2572-permissions-ux
2572 permissions ux
2 parents fd9ff39 + a460568 commit e054b8c

22 files changed

+340
-118
lines changed

src/main/java/Bundle.properties

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
dataverse=Dataverse
22
newDataverse=New Dataverse
33
hostDataverse=Host Dataverse
4+
dataverses=Dataverses
45
passwd=Password
56
dataset=Dataset
7+
datasets=Datasets
68
newDataset=New Dataset
79
files=Files
810
file=File
@@ -736,11 +738,11 @@ dataverse.permissions.roles.copy=Copy Role
736738

737739
# permissions-manage-files.xhtml
738740

739-
dataverse.permissionsFiles.title=File Permissions
741+
dataverse.permissionsFiles.title=Restricted File Permissions
740742

741743
dataverse.permissionsFiles.usersOrGroups=Users/Groups
742744
dataverse.permissionsFiles.usersOrGroups.assignBtn=Grant Access to Users/Groups
743-
dataverse.permissionsFiles.usersOrGroups.description=All the users and groups that have access to files in this dataset.
745+
dataverse.permissionsFiles.usersOrGroups.description=All the users and groups that have access to restricted files in this dataset.
744746
dataverse.permissionsFiles.usersOrGroups.tabHeader.userOrGroup=User/Group Name (Affiliation)
745747
dataverse.permissionsFiles.usersOrGroups.tabHeader.id=ID
746748
dataverse.permissionsFiles.usersOrGroups.tabHeader.email=Email
@@ -750,7 +752,8 @@ dataverse.permissionsFiles.usersOrGroups.file=File
750752
dataverse.permissionsFiles.usersOrGroups.files=Files
751753
dataverse.permissionsFiles.usersOrGroups.invalidMsg=There are no users or groups with access to the restricted files in this dataset.
752754

753-
dataverse.permissionsFiles.files=Files
755+
dataverse.permissionsFiles.files=Restricted Files
756+
dataverse.permissionsFiles.files.label={0, choice, 0#Restricted Files|1#Restricted File|2#Restricted Files}
754757
dataverse.permissionsFiles.files.description=All the restricted files in this dataset.
755758
dataverse.permissionsFiles.files.tabHeader.fileName=File Name
756759
dataverse.permissionsFiles.files.tabHeader.roleAssignees=Users/Groups
@@ -762,21 +765,23 @@ dataverse.permissionsFiles.files.public=Public
762765
dataverse.permissionsFiles.files.restricted=Restricted
763766
dataverse.permissionsFiles.files.roleAssignee=User/Group
764767
dataverse.permissionsFiles.files.roleAssignees=Users/Groups
768+
dataverse.permissionsFiles.files.roleAssignees.label={0, choice, 0#Users/Groups|1#User/Group|2#Users/Groups}
765769
dataverse.permissionsFiles.files.assignBtn=Assign Access
766770
dataverse.permissionsFiles.files.invalidMsg=There are no restricted files in this dataset.
771+
dataverse.permissionsFiles.files.requested=Requested Files
772+
dataverse.permissionsFiles.files.selected=Selecting {0} of {1} {2}
767773

768774
dataverse.permissionsFiles.viewRemoveDialog.header=File Access
769775
dataverse.permissionsFiles.viewRemoveDialog.removeBtn=Remove Access
770776
dataverse.permissionsFiles.viewRemoveDialog.removeBtn.confirmation=Are you sure you want to remove access to this file? Once access has been removed, the user or group will no longer be able to download this file.
771777

772778
dataverse.permissionsFiles.assignDialog.header=Grant File Access
773779
dataverse.permissionsFiles.assignDialog.description=Grant file access to users and groups.
774-
dataverse.permissionsFiles.assignDialog.userOrGroup=User/Group
775-
dataverse.permissionsFiles.assignDialog.userOrGroup.title=User/Group
780+
dataverse.permissionsFiles.assignDialog.userOrGroup=Users/Groups
776781
dataverse.permissionsFiles.assignDialog.userOrGroup.enterName=Enter User/Group Name
777782
dataverse.permissionsFiles.assignDialog.userOrGroup.invalidMsg=No matches found.
778783
dataverse.permissionsFiles.assignDialog.userOrGroup.requiredMsg=Please select at least one user or group.
779-
dataverse.permissionsFiles.assignDialog.file=File
784+
dataverse.permissionsFiles.assignDialog.fileName=File Name
780785
dataverse.permissionsFiles.assignDialog.grantBtn=Grant
781786
dataverse.permissionsFiles.assignDialog.rejectBtn=Reject
782787

@@ -798,11 +803,12 @@ dataverse.permissions.Q2.answer.curator.description=- Edit metadata, upload file
798803

799804
dataverse.permissions.usersOrGroups.assignDialog.header=Assign Role
800805
dataverse.permissions.usersOrGroups.assignDialog.description=Grant permissions to users and groups by assigning them a role.
801-
dataverse.permissions.usersOrGroups.assignDialog.userOrGroup=User/Group
806+
dataverse.permissions.usersOrGroups.assignDialog.userOrGroup=Users/Groups
802807
dataverse.permissions.usersOrGroups.assignDialog.userOrGroup.enterName=Enter User/Group Name
803808
dataverse.permissions.usersOrGroups.assignDialog.userOrGroup.invalidMsg=No matches found.
804809
dataverse.permissions.usersOrGroups.assignDialog.userOrGroup.requiredMsg=Please select at least one user or group.
805810
dataverse.permissions.usersOrGroups.assignDialog.role.description=These are the permissions associated with the selected role.
811+
dataverse.permissions.usersOrGroups.assignDialog.role.warning=Assigning the {0} role means the user(s) will also have the {0} role applied to all {1} within this {2}.
806812
dataverse.permissions.usersOrGroups.assignDialog.role.requiredMsg=Please select a role to assign.
807813

808814
# roles-edit.xhtml
@@ -823,6 +829,7 @@ dataverse.permissions.explicitGroupEditDialog.title.new=Create Group
823829
dataverse.permissions.explicitGroupEditDialog.title.edit=Edit Group {0}
824830
dataverse.permissions.explicitGroupEditDialog.help=Add users or other groups to this group.
825831
dataverse.permissions.explicitGroupEditDialog.groupIdentifier=Group Identifier
832+
dataverse.permissions.explicitGroupEditDialog.groupIdentifier.tip=Short name used for the ID of this group.
826833
dataverse.permissions.explicitGroupEditDialog.groupIdentifier.required=Group identifier cannot be empty
827834
dataverse.permissions.explicitGroupEditDialog.groupIdentifier.invalid=Group identifier can contain only letters, digits, underscores (_) and dashes (-)
828835
dataverse.permissions.explicitGroupEditDialog.groupIdentifier.helpText=Consists of letters, digits, underscores (_) and dashes (-)
@@ -997,6 +1004,8 @@ dataset.editBtn.itemLabel.terms=Terms
9971004
dataset.editBtn.itemLabel.permissions=Permissions
9981005
dataset.editBtn.itemLabel.widgets=Widgets
9991006
dataset.editBtn.itemLabel.privateUrl=Private URL
1007+
dataset.editBtn.itemLabel.permissionsDataset=Dataset
1008+
dataset.editBtn.itemLabel.permissionsFile=Restricted Files
10001009
dataset.editBtn.itemLabel.deleteDataset=Delete Dataset
10011010
dataset.editBtn.itemLabel.deleteDraft=Delete Draft Version
10021011
dataset.editBtn.itemLabel.deaccession=Deaccession Dataset
@@ -1144,10 +1153,11 @@ file.noSelectedFiles.tip=There are no selected files to display.
11441153
file.noUploadedFiles.tip=Files you upload will appear here.
11451154
file.delete=Delete
11461155
file.metadata=Metadata
1147-
file.deleted.success=Files {0} will be permanently deleted from this version of this dataset once you click on the Save Changes button.
1156+
file.deleted.success=Files "{0}" will be permanently deleted from this version of this dataset once you click on the Save Changes button.
1157+
file.editAccess=Edit Access
11481158
file.restrict=Restrict
11491159
file.unrestrict=Unrestrict
1150-
file.restricted.success=The file(s) {0} will be restricted after you click on the Save Changes button on the bottom of this page.
1160+
file.restricted.success=Files "{0}" will be restricted once you click on the Save Changes button.
11511161
file.download.header=Download
11521162
file.preview=Preview:
11531163
file.fileName=File Name

src/main/java/edu/harvard/iq/dataverse/DataFile.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.nio.file.Path;
1717
import java.nio.file.Paths;
1818
import java.nio.file.Files;
19+
import java.util.Comparator;
1920
import javax.persistence.Entity;
2021
import javax.persistence.OneToMany;
2122
import javax.persistence.OneToOne;
@@ -44,7 +45,7 @@
4445
, @Index(columnList="md5")
4546
, @Index(columnList="contenttype")
4647
, @Index(columnList="restricted")})
47-
public class DataFile extends DvObject {
48+
public class DataFile extends DvObject implements Comparable {
4849
private static final long serialVersionUID = 1L;
4950

5051
public static final char INGEST_STATUS_NONE = 65;
@@ -604,6 +605,13 @@ public String getDisplayName() {
604605
return getLatestFileMetadata().getLabel();
605606
}
606607

608+
@Override
609+
public int compareTo(Object o) {
610+
DataFile other = (DataFile) o;
611+
return this.getDisplayName().toUpperCase().compareTo(other.getDisplayName().toUpperCase());
612+
613+
}
614+
607615
/**
608616
* Check if the Geospatial Tag has been assigned to this file
609617
* @return
@@ -619,4 +627,4 @@ public boolean hasGeospatialTag(){
619627
}
620628
return false;
621629
}
622-
}
630+
}

src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ public void restrictFiles(boolean restricted) {
550550
if (fileNames == null) {
551551
fileNames = fmd.getLabel();
552552
} else {
553-
fileNames = fileNames.concat(fmd.getLabel());
553+
fileNames = fileNames.concat(", " + fmd.getLabel());
554554
}
555555
}
556556
fmd.setRestricted(restricted);
@@ -590,7 +590,7 @@ public void restrictFilesDP(boolean restricted) {
590590
if (fileNames == null) {
591591
fileNames = fmd.getLabel();
592592
} else {
593-
fileNames = fileNames.concat(fmd.getLabel());
593+
fileNames = fileNames.concat(", " + fmd.getLabel());
594594
}
595595
}
596596
if (fmd.getDataFile().equals(fmw.getDataFile())) {
@@ -628,7 +628,7 @@ public void deleteFiles() {
628628
if (fileNames == null) {
629629
fileNames = fmd.getLabel();
630630
} else {
631-
fileNames = fileNames.concat(fmd.getLabel());
631+
fileNames = fileNames.concat(", " + fmd.getLabel());
632632
}
633633
}
634634

src/main/java/edu/harvard/iq/dataverse/ManageFilePermissionsPage.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.HashMap;
2727
import java.util.List;
2828
import java.util.Map;
29+
import java.util.TreeMap;
2930
import java.util.logging.Level;
3031
import java.util.logging.Logger;
3132
import javax.ejb.EJB;
@@ -37,6 +38,9 @@
3738
import javax.persistence.EntityManager;
3839
import javax.persistence.PersistenceContext;
3940
import org.apache.commons.lang.StringUtils;
41+
import org.primefaces.event.SelectEvent;
42+
import org.primefaces.event.ToggleSelectEvent;
43+
import org.primefaces.event.UnselectEvent;
4044

4145
/**
4246
*
@@ -80,9 +84,9 @@ public class ManageFilePermissionsPage implements java.io.Serializable {
8084
DataverseSession session;
8185

8286
Dataset dataset = new Dataset();
83-
private final Map<RoleAssignee,List<RoleAssignmentRow>> roleAssigneeMap = new HashMap<>();
84-
private final Map<DataFile,List<RoleAssignmentRow>> fileMap = new HashMap<>();
85-
private final Map<AuthenticatedUser,List<DataFile>> fileAccessRequestMap = new HashMap<>();
87+
private final TreeMap<RoleAssignee,List<RoleAssignmentRow>> roleAssigneeMap = new TreeMap<>();
88+
private final TreeMap<DataFile,List<RoleAssignmentRow>> fileMap = new TreeMap<>();
89+
private final TreeMap<AuthenticatedUser,List<DataFile>> fileAccessRequestMap = new TreeMap<>();
8690

8791
public Dataset getDataset() {
8892
return dataset;
@@ -92,19 +96,19 @@ public void setDataset(Dataset dataset) {
9296
this.dataset = dataset;
9397
}
9498

95-
public Map<RoleAssignee, List<RoleAssignmentRow>> getRoleAssigneeMap() {
99+
public TreeMap<RoleAssignee, List<RoleAssignmentRow>> getRoleAssigneeMap() {
96100
return roleAssigneeMap;
97101
}
98102

99-
public Map<DataFile, List<RoleAssignmentRow>> getFileMap() {
103+
public TreeMap<DataFile, List<RoleAssignmentRow>> getFileMap() {
100104
return fileMap;
101105
}
102106

103-
public Map<AuthenticatedUser, List<DataFile>> getFileAccessRequestMap() {
107+
public TreeMap<AuthenticatedUser, List<DataFile>> getFileAccessRequestMap() {
104108
return fileAccessRequestMap;
105109
}
106-
107-
110+
111+
108112
public String init() {
109113
if (dataset.getId() != null) {
110114
dataset = datasetService.find(dataset.getId());
@@ -118,9 +122,7 @@ public String init() {
118122
if (!permissionService.on(dataset).has(Permission.ManageDatasetPermissions)) {
119123
return permissionsWrapper.notAuthorized();
120124
}
121-
122125
initMaps();
123-
124126
return "";
125127
}
126128

@@ -229,13 +231,15 @@ public void setSelectedRoleAssignmentRows(List<RoleAssignmentRow> selectedRoleAs
229231
}
230232

231233
public void initViewRemoveDialogByFile(DataFile file, List<RoleAssignmentRow> raRows) {
234+
setSelectedRoleAssignmentRows(new ArrayList());
232235
this.selectedFile = file;
233236
this.selectedRoleAssignee = null;
234237
this.roleAssignments = raRows;
235238
showFileMessages();
236239
}
237240

238241
public void initViewRemoveDialogByRoleAssignee(RoleAssignee ra, List<RoleAssignmentRow> raRows) {
242+
setSelectedRoleAssignmentRows(new ArrayList());
239243
this.selectedFile = null;
240244
this.selectedRoleAssignee = ra;
241245
this.roleAssignments = raRows;
@@ -311,7 +315,7 @@ public void initAssignDialogForFileRequester(AuthenticatedUser au) {
311315
fileRequester = au;
312316
selectedRoleAssignees = null;
313317
selectedFiles.clear();
314-
selectedFiles.addAll(fileAccessRequestMap.get(au));
318+
selectedFiles.addAll(fileAccessRequestMap.get(au));
315319
showUserGroupMessages();
316320
}
317321

@@ -369,7 +373,7 @@ private void grantAccessToRequests(AuthenticatedUser au, List<DataFile> files) {
369373
}
370374
if (actionPerformed) {
371375
JsfHelper.addSuccessMessage("File Access request by " + au.getDisplayInfo().getTitle() + " was granted.");
372-
userNotificationService.sendNotification(au, new Timestamp(new Date().getTime()), UserNotification.Type.GRANTFILEACCESS, dataset.getId());
376+
userNotificationService.sendNotification(au, new Timestamp(new Date().getTime()), UserNotification.Type.GRANTFILEACCESS, dataset.getId());
373377
initMaps();
374378
}
375379

@@ -408,7 +412,9 @@ private boolean assignRole(RoleAssignee ra, DataFile file, DataverseRole r) {
408412
JH.addMessage(FacesMessage.SEVERITY_ERROR, "The role was not able to be assigned.", "Permissions " + ex.getRequiredPermissions().toString() + " missing.");
409413
return false;
410414
} catch (CommandException ex) {
411-
JH.addMessage(FacesMessage.SEVERITY_FATAL, "The role was not able to be assigned.");
415+
//JH.addMessage(FacesMessage.SEVERITY_FATAL, "The role was not able to be assigned.");
416+
String message = r.getName() + " role could NOT be assigned to " + ra.getDisplayInfo().getTitle() + " for " + file.getDisplayName() + ".";
417+
JsfHelper.addErrorMessage(message);
412418
logger.log(Level.SEVERE, "Error assiging role: " + ex.getMessage(), ex);
413419
return false;
414420
}
@@ -449,7 +455,6 @@ public void setRenderFileMessages(boolean renderFileMessages) {
449455

450456

451457

452-
453458
// inner class used fordisplay of role assignments
454459
public static class RoleAssignmentRow {
455460

0 commit comments

Comments
 (0)