@@ -870,8 +870,23 @@ private String getBundleString(String msgName){
870870 public void deleteFilesCompleted (){
871871
872872 }
873+
874+ public void deleteFiles (){
875+ deleteFiles (this .selectedFiles );
876+ }
877+
878+ public void deleteDuplicateFiles (){
879+ List <FileMetadata > filesForDelete = new ArrayList ();
880+ for (DataFile df : newFiles ){
881+ if (df .isMarkedAsDuplicate ()){
882+ filesForDelete .add (df .getFileMetadata ());
883+ }
884+ }
885+ deleteFiles (filesForDelete );
886+ }
887+
873888
874- public void deleteFiles () {
889+ private void deleteFiles (List < FileMetadata > filesForDelete ) {
875890 logger .fine ("entering bulk file delete (EditDataFilesPage)" );
876891 if (isFileReplaceOperation ()) {
877892 try {
@@ -888,16 +903,9 @@ public void deleteFiles() {
888903 so we are adding the marked as dup files as selected
889904 and moving on accordingly.
890905 */
891- if (this .selectedFiles .isEmpty ()){
892- for (DataFile df : newFiles ){
893- if (df .isMarkedAsDuplicate ()){
894- this .selectedFiles .add (df .getFileMetadata ());
895- }
896- }
897- }
898906
899907 String fileNames = null ;
900- for (FileMetadata fmd : this . getSelectedFiles () ) {
908+ for (FileMetadata fmd : filesForDelete ) {
901909 // collect the names of the files,
902910 // to show in the success message:
903911 if (fileNames == null ) {
@@ -907,7 +915,7 @@ public void deleteFiles() {
907915 }
908916 }
909917
910- for (FileMetadata markedForDelete : this . getSelectedFiles () ) {
918+ for (FileMetadata markedForDelete : filesForDelete ) {
911919 logger .fine ("delete requested on file " + markedForDelete .getLabel ());
912920 logger .fine ("file metadata id: " + markedForDelete .getId ());
913921 logger .fine ("datafile id: " + markedForDelete .getDataFile ().getId ());
@@ -955,7 +963,8 @@ public void deleteFiles() {
955963 // Also remove checksum from the list of newly uploaded checksums (perhaps odd
956964 // to delete and then try uploading the same file again, but it seems like it
957965 // should be allowed/the checksum list is part of the state to clean-up
958- checksumMapNew .remove (markedForDelete .getDataFile ().getChecksumValue ());
966+ if (checksumMapNew != null && markedForDelete .getDataFile ().getChecksumValue () != null )
967+ checksumMapNew .remove (markedForDelete .getDataFile ().getChecksumValue ());
959968
960969 }
961970 }
0 commit comments