@@ -33,6 +33,9 @@ public class PermissionsWrapper implements java.io.Serializable {
3333 @ EJB
3434 PermissionServiceBean permissionService ;
3535
36+ @ EJB
37+ DatasetVersionServiceBean datasetVersionService ;
38+
3639 @ Inject
3740 DataverseSession session ;
3841
@@ -257,15 +260,17 @@ public boolean canIssueDeleteDatasetCommand(DvObject dvo){
257260 // PUBLISH DATASET
258261 public boolean canIssuePublishDatasetCommand (DvObject dvo ){
259262 User u = session .getUser ();
260- if (u != null && u .isSuperuser ()) {
263+ if (u == null ) {
264+ return false ; // guests can not publish
265+ }
266+ if (u .isSuperuser ()) {
261267 return true ;
262268 }
263269 // Return false if dataset has 0 files and user want to 'publish' or 'submit for review' and 'publish dataset requires files' flag is set
264270 if (dvo .isInstanceofDataset ()) {
265271 Dataverse dv =((Dataset )dvo ).getOwner ();
266272 if (dv != null ) {
267- List <FileMetadata > metadataList = ((Dataset ) dvo ).getLatestVersion ().getFileMetadatas ();
268- if (metadataList .size () == 0 && dv .getEffectiveRequiresFilesToPublishDataset ()) {
273+ if (!datasetVersionService .hasFiles (((Dataset ) dvo ).getLatestVersion ().getId ()) && dv .getEffectiveRequiresFilesToPublishDataset ()) {
269274 return false ;
270275 }
271276 }
@@ -275,12 +280,15 @@ public boolean canIssuePublishDatasetCommand(DvObject dvo){
275280
276281 // SUBMIT DATASET FOR REVIEW
277282 public boolean canIssueSubmitDatasetForReviewCommand (DvObject dvo ){
283+ User u = session .getUser ();
284+ if (u == null ) {
285+ return false ; // guests can not submit for review
286+ }
278287 // Return false if dataset has 0 files and user want to 'publish' or 'submit for review' and 'publish dataset requires files' flag is set
279288 if (dvo .isInstanceofDataset ()) {
280289 Dataverse dv =((Dataset )dvo ).getOwner ();
281290 if (dv != null ) {
282- List <FileMetadata > metadataList = ((Dataset ) dvo ).getLatestVersion ().getFileMetadatas ();
283- if (metadataList .size () == 0 && dv .getEffectiveRequiresFilesToPublishDataset ()) {
291+ if (!datasetVersionService .hasFiles (((Dataset ) dvo ).getLatestVersion ().getId ()) && dv .getEffectiveRequiresFilesToPublishDataset ()) {
284292 return false ;
285293 }
286294 }
0 commit comments