Skip to content

Commit c10cbd9

Browse files
committed
Issue #1257: Added the DataverseRequest object, wrapping the dataverse user and some request metadata.
1 parent 06bb98e commit c10cbd9

File tree

118 files changed

+911
-742
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+911
-742
lines changed

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

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -133,16 +133,18 @@ public enum DisplayMode {
133133
@EJB
134134
DatasetLinkingServiceBean dsLinkingService;
135135
@Inject
136+
DataverseRequestServiceBean dvRequestService;
137+
@Inject
136138
DatasetVersionUI datasetVersionUI;
137139

138-
private static final DateFormat displayDateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
140+
private final DateFormat displayDateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
139141

140142
private Dataset dataset = new Dataset();
141143
private EditMode editMode;
142144
private Long ownerId;
143145
private Long versionId;
144146
private int selectedTabIndex;
145-
private List<DataFile> newFiles = new ArrayList();
147+
private final List<DataFile> newFiles = new ArrayList();
146148
private DatasetVersion workingVersion;
147149
private int releaseRadio = 1;
148150
private int deaccessionRadio = 0;
@@ -179,8 +181,8 @@ public enum DisplayMode {
179181

180182

181183
// Used to store results of permissions checks
182-
private Map<String, Boolean> datasetPermissionMap = new HashMap<>(); // { Permission human_name : Boolean }
183-
private Map<Long, Boolean> fileDownloadPermissionMap = new HashMap<>(); // { FileMetadata.id : Boolean }
184+
private final Map<String, Boolean> datasetPermissionMap = new HashMap<>(); // { Permission human_name : Boolean }
185+
private final Map<Long, Boolean> fileDownloadPermissionMap = new HashMap<>(); // { FileMetadata.id : Boolean }
184186

185187
private DataFile selectedDownloadFile;
186188

@@ -1151,14 +1153,14 @@ public String saveGuestbookResponse(String type) {
11511153
try {
11521154
if (this.guestbookResponse != null) {
11531155
if (!type.equals("multiple")) {
1154-
cmd = new CreateGuestbookResponseCommand(session.getUser(), this.guestbookResponse, dataset);
1156+
cmd = new CreateGuestbookResponseCommand(dvRequestService.getDataverseRequest(), this.guestbookResponse, dataset);
11551157
commandEngine.submit(cmd);
11561158
} else {
11571159
for (FileMetadata fmd : this.selectedFiles) {
11581160
DataFile df = fmd.getDataFile();
11591161
if (df != null) {
11601162
this.guestbookResponse.setDataFile(df);
1161-
cmd = new CreateGuestbookResponseCommand(session.getUser(), this.guestbookResponse, dataset);
1163+
cmd = new CreateGuestbookResponseCommand(dvRequestService.getDataverseRequest(), this.guestbookResponse, dataset);
11621164
commandEngine.submit(cmd);
11631165
}
11641166
}
@@ -1235,7 +1237,7 @@ private void callDownloadServlet( String downloadType, Long fileId){
12351237
if (downloadType != null && downloadType.equals("tab")){
12361238
fileDownloadUrl = "/api/access/datafile/" + this.selectedDownloadFile.getId()+ "?format=tab";
12371239
}
1238-
logger.fine("Returning file download url: " + fileDownloadUrl);
1240+
logger.fine("Returning file download url: " + fileDownloadUrl);
12391241
try {
12401242
FacesContext.getCurrentInstance().getExternalContext().redirect(fileDownloadUrl);
12411243
} catch (IOException ex) {
@@ -1353,7 +1355,7 @@ public String sendBackToContributor() {
13531355
workingVersion = dataset.getEditVersion();
13541356
workingVersion.setInReview(false);
13551357
try {
1356-
cmd = new UpdateDatasetCommand(dataset, session.getUser());
1358+
cmd = new UpdateDatasetCommand(dataset, dvRequestService.getDataverseRequest());
13571359
dataset = commandEngine.submit(cmd);
13581360
} catch (CommandException ex) {
13591361
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Dataset Submission Failed", " - " + ex.toString()));
@@ -1379,7 +1381,7 @@ public String submitDataset() {
13791381
workingVersion = dataset.getEditVersion();
13801382
workingVersion.setInReview(true);
13811383
try {
1382-
cmd = new UpdateDatasetCommand(dataset, session.getUser());
1384+
cmd = new UpdateDatasetCommand(dataset, dvRequestService.getDataverseRequest());
13831385
dataset = commandEngine.submit(cmd);
13841386
} catch (CommandException ex) {
13851387
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Dataset Submission Failed", " - " + ex.toString()));
@@ -1407,7 +1409,7 @@ public String releaseDataset() {
14071409

14081410
private void releaseParentDV(){
14091411
if (session.getUser() instanceof AuthenticatedUser) {
1410-
PublishDataverseCommand cmd = new PublishDataverseCommand((AuthenticatedUser) session.getUser(), dataset.getOwner());
1412+
PublishDataverseCommand cmd = new PublishDataverseCommand(dvRequestService.getDataverseRequest(), dataset.getOwner());
14111413
try {
14121414
commandEngine.submit(cmd);
14131415
JsfHelper.addSuccessMessage(JH.localize("dataverse.publish.success"));
@@ -1430,13 +1432,13 @@ public String deaccessionVersions() {
14301432
if (selectedDeaccessionVersions == null) {
14311433
for (DatasetVersion dv : this.dataset.getVersions()) {
14321434
if (dv.isReleased()) {
1433-
cmd = new DeaccessionDatasetVersionCommand(session.getUser(), setDatasetVersionDeaccessionReasonAndURL(dv), true);
1435+
cmd = new DeaccessionDatasetVersionCommand(dvRequestService.getDataverseRequest(), setDatasetVersionDeaccessionReasonAndURL(dv), true);
14341436
DatasetVersion datasetv = commandEngine.submit(cmd);
14351437
}
14361438
}
14371439
} else {
14381440
for (DatasetVersion dv : selectedDeaccessionVersions) {
1439-
cmd = new DeaccessionDatasetVersionCommand(session.getUser(), setDatasetVersionDeaccessionReasonAndURL(dv), false);
1441+
cmd = new DeaccessionDatasetVersionCommand(dvRequestService.getDataverseRequest(), setDatasetVersionDeaccessionReasonAndURL(dv), false);
14401442
DatasetVersion datasetv = commandEngine.submit(cmd);
14411443
}
14421444
}
@@ -1490,9 +1492,9 @@ private String releaseDataset(boolean minor) {
14901492
if (session.getUser() instanceof AuthenticatedUser) {
14911493
try {
14921494
if (editMode == EditMode.CREATE) {
1493-
cmd = new PublishDatasetCommand(dataset, (AuthenticatedUser) session.getUser(), minor);
1495+
cmd = new PublishDatasetCommand(dataset, dvRequestService.getDataverseRequest(), minor);
14941496
} else {
1495-
cmd = new PublishDatasetCommand(dataset, (AuthenticatedUser) session.getUser(), minor);
1497+
cmd = new PublishDatasetCommand(dataset, dvRequestService.getDataverseRequest(), minor);
14961498
}
14971499
dataset = commandEngine.submit(cmd);
14981500
JsfHelper.addSuccessMessage(JH.localize("dataset.message.publishSuccess"));
@@ -1519,7 +1521,7 @@ private String releaseDataset(boolean minor) {
15191521
public String registerDataset() {
15201522
Command<Dataset> cmd;
15211523
try {
1522-
cmd = new UpdateDatasetCommand(dataset, session.getUser());
1524+
cmd = new UpdateDatasetCommand(dataset, dvRequestService.getDataverseRequest());
15231525
dataset = commandEngine.submit(cmd);
15241526
} catch (CommandException ex) {
15251527
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Dataset Registration Failed", " - " + ex.toString()));
@@ -1569,7 +1571,7 @@ public String deleteDataset() {
15691571

15701572
Command cmd;
15711573
try {
1572-
cmd = new DestroyDatasetCommand(dataset, session.getUser());
1574+
cmd = new DestroyDatasetCommand(dataset, dvRequestService.getDataverseRequest());
15731575
commandEngine.submit(cmd);
15741576
/* - need to figure out what to do
15751577
Update notification in Delete Dataset Method
@@ -1587,7 +1589,7 @@ public String deleteDataset() {
15871589
public String deleteDatasetVersion() {
15881590
Command cmd;
15891591
try {
1590-
cmd = new DeleteDatasetVersionCommand(session.getUser(), dataset);
1592+
cmd = new DeleteDatasetVersionCommand(dvRequestService.getDataverseRequest(), dataset);
15911593
commandEngine.submit(cmd);
15921594
JsfHelper.addSuccessMessage(JH.localize("datasetVersion.message.deleteSuccess"));
15931595
} catch (CommandException ex) {
@@ -1627,7 +1629,7 @@ public String saveLinkedDataset() {
16271629
return "";
16281630
}
16291631
linkingDataverse = dataverseService.find(linkingDataverseId);
1630-
LinkDatasetCommand cmd = new LinkDatasetCommand(session.getUser(), linkingDataverse, dataset);
1632+
LinkDatasetCommand cmd = new LinkDatasetCommand(dvRequestService.getDataverseRequest(), linkingDataverse, dataset);
16311633
try {
16321634
commandEngine.submit(cmd);
16331635
//JsfHelper.addFlashMessage(JH.localize("dataset.message.linkSuccess") + linkingDataverse.getDisplayName());
@@ -1829,17 +1831,17 @@ public String save() {
18291831
workingVersion.setLicense(DatasetVersion.License.CC0);
18301832
if ( selectedTemplate != null ) {
18311833
if ( session.getUser().isAuthenticated() ) {
1832-
cmd = new CreateDatasetCommand(dataset, (AuthenticatedUser) session.getUser(), false, null, selectedTemplate);
1834+
cmd = new CreateDatasetCommand(dataset, dvRequestService.getDataverseRequest(), false, null, selectedTemplate);
18331835
} else {
18341836
JH.addMessage(FacesMessage.SEVERITY_FATAL, JH.localize("dataset.create.authenticatedUsersOnly"));
18351837
return null;
18361838
}
18371839
} else {
1838-
cmd = new CreateDatasetCommand(dataset, session.getUser());
1840+
cmd = new CreateDatasetCommand(dataset, dvRequestService.getDataverseRequest());
18391841
}
18401842

18411843
} else {
1842-
cmd = new UpdateDatasetCommand(dataset, session.getUser(), filesToBeDeleted);
1844+
cmd = new UpdateDatasetCommand(dataset, dvRequestService.getDataverseRequest(), filesToBeDeleted);
18431845
}
18441846
dataset = commandEngine.submit(cmd);
18451847
if (editMode == EditMode.CREATE) {
@@ -2361,7 +2363,7 @@ private void createSilentGuestbookEntry(FileMetadata fileMetadata, String format
23612363
Command cmd;
23622364
try {
23632365
if (this.guestbookResponse != null) {
2364-
cmd = new CreateGuestbookResponseCommand(session.getUser(), guestbookResponse, dataset);
2366+
cmd = new CreateGuestbookResponseCommand(dvRequestService.getDataverseRequest(), guestbookResponse, dataset);
23652367
commandEngine.submit(cmd);
23662368
}
23672369
} catch (CommandException ex) {

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

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package edu.harvard.iq.dataverse;
22

33
import edu.harvard.iq.dataverse.UserNotification.Type;
4-
import edu.harvard.iq.dataverse.authorization.DataverseRole;
54
import edu.harvard.iq.dataverse.authorization.Permission;
65
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
76
import edu.harvard.iq.dataverse.authorization.users.User;
@@ -35,7 +34,6 @@
3534
import javax.inject.Named;
3635
import java.util.ArrayList;
3736
import java.util.Arrays;
38-
import java.util.LinkedList;
3937
import java.util.logging.Level;
4038
import java.util.logging.Logger;
4139
import javax.faces.component.UIComponent;
@@ -98,7 +96,8 @@ public enum LinkMode {
9896
@EJB DataverseRoleServiceBean dataverseRoleServiceBean;
9997
@Inject
10098
SearchIncludeFragment searchIncludeFragment;
101-
99+
@Inject
100+
DataverseRequestServiceBean dvRequestService;
102101
@EJB
103102
DataverseLinkingServiceBean linkingService;
104103

@@ -614,17 +613,17 @@ public String save() {
614613
if (session.getUser().isAuthenticated()) {
615614
dataverse.setOwner(ownerId != null ? dataverseService.find(ownerId) : null);
616615
create = Boolean.TRUE;
617-
cmd = new CreateDataverseCommand(dataverse, (AuthenticatedUser) session.getUser(), facets.getTarget(), listDFTIL);
616+
cmd = new CreateDataverseCommand(dataverse, dvRequestService.getDataverseRequest(), facets.getTarget(), listDFTIL);
618617
} else {
619618
JH.addMessage(FacesMessage.SEVERITY_FATAL, BundleUtil.getStringFromBundle("dataverse.create.authenticatedUsersOnly"));
620619
return null;
621620
}
622621
} else {
623622
create = Boolean.FALSE;
624-
if (editMode != null && editMode.equals(editMode.FEATURED)) {
625-
cmd = new UpdateDataverseCommand(dataverse, null, featuredDataverses.getTarget(), session.getUser(), null);
623+
if (editMode != null && editMode.equals(EditMode.FEATURED)) {
624+
cmd = new UpdateDataverseCommand(dataverse, null, featuredDataverses.getTarget(), dvRequestService.getDataverseRequest(), null);
626625
} else {
627-
cmd = new UpdateDataverseCommand(dataverse, facets.getTarget(), null, session.getUser(), listDFTIL);
626+
cmd = new UpdateDataverseCommand(dataverse, facets.getTarget(), null, dvRequestService.getDataverseRequest(), listDFTIL);
628627
}
629628
}
630629

@@ -636,8 +635,8 @@ public String save() {
636635
}
637636
}
638637

639-
String message = "";
640-
if (editMode != null && editMode.equals(editMode.FEATURED)) {
638+
String message;
639+
if (editMode != null && editMode.equals(EditMode.FEATURED)) {
641640
message = "The featured dataverses for this dataverse have been updated.";
642641
} else {
643642
message = (create) ? BundleUtil.getStringFromBundle("dataverse.create.success", Arrays.asList(systemConfig.getGuidesBaseUrl(), systemConfig.getVersion())) : BundleUtil.getStringFromBundle("dataverse.update.success");
@@ -743,13 +742,13 @@ public String saveLinkedDataverse() {
743742

744743
linkingDataverse = dataverseService.find(linkingDataverseId);
745744

746-
LinkDataverseCommand cmd = new LinkDataverseCommand(session.getUser(), linkingDataverse, dataverse);
745+
LinkDataverseCommand cmd = new LinkDataverseCommand(dvRequestService.getDataverseRequest(), linkingDataverse, dataverse);
747746
//LinkDvObjectCommand cmd = new LinkDvObjectCommand (session.getUser(), linkingDataverse, dataverse);
748747
try {
749748
commandEngine.submit(cmd);
750749
} catch (CommandException ex) {
751750
String msg = "Unable to link " + dataverse.getDisplayName() + " to " + linkingDataverse.getDisplayName() + ". An internal error occurred.";
752-
logger.severe(msg + " " + ex);
751+
logger.log(Level.SEVERE, "{0} {1}", new Object[]{msg, ex});
753752
JsfHelper.addErrorMessage(msg);
754753
return "/dataverse.xhtml?alias=" + dataverse.getAlias() + "&faces-redirect=true";
755754
}
@@ -779,7 +778,7 @@ public String saveLinkedDataverse() {
779778
arguments.add(linkingDataverse.getDisplayName());
780779
JsfHelper.addErrorMessage(BundleUtil.getStringFromBundle("dataverse.linked.internalerror", arguments));
781780
String msg = dataverse.getDisplayName() + " has been successfully linked to " + linkingDataverse.getDisplayName() + " but contents will not appear until an internal error has been fixed.";
782-
logger.severe(msg + " " + ex);
781+
logger.log(Level.SEVERE, "{0} {1}", new Object[]{msg, ex});
783782
//JsfHelper.addErrorMessage(msg);
784783
return "/dataverse.xhtml?alias=" + dataverse.getAlias() + "&faces-redirect=true";
785784
}
@@ -849,7 +848,7 @@ public String saveSavedSearch() {
849848
savedSearch.getSavedSearchFilterQueries().add(ssfq);
850849
}
851850
}
852-
CreateSavedSearchCommand cmd = new CreateSavedSearchCommand(session.getUser(), linkingDataverse, savedSearch);
851+
CreateSavedSearchCommand cmd = new CreateSavedSearchCommand(dvRequestService.getDataverseRequest(), linkingDataverse, savedSearch);
853852
try {
854853
commandEngine.submit(cmd);
855854

@@ -878,7 +877,7 @@ private AuthenticatedUser getAuthenticatedUser() {
878877

879878
public String releaseDataverse() {
880879
if (session.getUser() instanceof AuthenticatedUser) {
881-
PublishDataverseCommand cmd = new PublishDataverseCommand((AuthenticatedUser) session.getUser(), dataverse);
880+
PublishDataverseCommand cmd = new PublishDataverseCommand(dvRequestService.getDataverseRequest(), dataverse);
882881
try {
883882
commandEngine.submit(cmd);
884883
JsfHelper.addSuccessMessage(BundleUtil.getStringFromBundle("dataverse.publish.success"));
@@ -896,7 +895,7 @@ public String releaseDataverse() {
896895
}
897896

898897
public String deleteDataverse() {
899-
DeleteDataverseCommand cmd = new DeleteDataverseCommand(session.getUser(), dataverse);
898+
DeleteDataverseCommand cmd = new DeleteDataverseCommand(dvRequestService.getDataverseRequest(), dataverse);
900899
try {
901900
commandEngine.submit(cmd);
902901
JsfHelper.addSuccessMessage(BundleUtil.getStringFromBundle("dataverse.delete.success"));
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package edu.harvard.iq.dataverse;
2+
3+
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
4+
import javax.annotation.PostConstruct;
5+
import javax.enterprise.context.RequestScoped;
6+
import javax.inject.Inject;
7+
import javax.inject.Named;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.ws.rs.core.Context;
10+
11+
/**
12+
* The service bean to go to when one needs the current {@link DataverseRequest}.
13+
* @author michael
14+
*/
15+
@Named
16+
@RequestScoped
17+
public class DataverseRequestServiceBean {
18+
19+
@Inject
20+
DataverseSession dataverseSessionSvc;
21+
22+
@Context
23+
HttpServletRequest httpRequest;
24+
25+
private DataverseRequest dataverseRequest;
26+
27+
@PostConstruct
28+
protected void setup() {
29+
dataverseRequest = new DataverseRequest(dataverseSessionSvc.getUser(), httpRequest);
30+
}
31+
32+
public DataverseRequest getDataverseRequest() {
33+
return dataverseRequest;
34+
}
35+
36+
}

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

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
package edu.harvard.iq.dataverse;
22

33
import edu.harvard.iq.dataverse.authorization.providers.builtin.BuiltinUserServiceBean;
4-
import edu.harvard.iq.dataverse.PermissionServiceBean.PermissionQuery;
4+
import edu.harvard.iq.dataverse.PermissionServiceBean.StaticPermissionQuery;
55
import edu.harvard.iq.dataverse.actionlogging.ActionLogRecord;
66
import edu.harvard.iq.dataverse.actionlogging.ActionLogServiceBean;
77
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
88
import edu.harvard.iq.dataverse.authorization.users.GuestUser;
99
import edu.harvard.iq.dataverse.authorization.users.User;
10-
import edu.harvard.iq.dataverse.authorization.users.UserRequestMetadata;
1110
import java.io.Serializable;
1211
import javax.ejb.EJB;
1312
import javax.enterprise.context.SessionScoped;
14-
import javax.faces.context.FacesContext;
1513
import javax.inject.Named;
16-
import javax.servlet.http.HttpServletRequest;
1714

1815
/**
1916
*
@@ -36,12 +33,9 @@ public class DataverseSession implements Serializable{
3633

3734
public User getUser() {
3835
if ( user == null ) {
39-
user = new GuestUser();
40-
}
41-
42-
if (FacesContext.getCurrentInstance() != null) {
43-
user.setRequestMetadata( new UserRequestMetadata((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()) );
36+
user = GuestUser.get();
4437
}
38+
4539
return user;
4640
}
4741

@@ -53,7 +47,7 @@ public void setUser(AuthenticatedUser aUser) {
5347
this.user = aUser;
5448
}
5549

56-
public PermissionQuery on( Dataverse d ) {
50+
public StaticPermissionQuery on( Dataverse d ) {
5751
return permissionsService.userOn(user, d);
5852
}
5953

0 commit comments

Comments
 (0)