@@ -6211,6 +6211,7 @@ public boolean isArchivable() {
62116211 return archivable ;
62126212 }
62136213
6214+ /** Method to decide if a 'Submit' button should be enabled for archiving a dataset version. */
62146215 public boolean isVersionArchivable (Long id ) {
62156216 Boolean thisVersionArchivable = versionArchivable .get (id );
62166217 if (thisVersionArchivable == null ) {
@@ -6225,11 +6226,29 @@ public boolean isVersionArchivable(Long id) {
62256226 DatasetVersion targetVersion = dataset .getVersions ().stream ()
62266227 .filter (v -> v .getId ().equals (id )).findFirst ().orElse (null );
62276228 if (requiresEarlierVersionsToBeArchived ) {// Find the specific version by id
6228- DatasetVersion priorVersion = DatasetUtil .getPriorVersion (targetVersion );
6229+ // Check all prior versions to ensure they are successfully archived
6230+ boolean allPriorVersionsArchived = true ;
6231+ boolean foundTarget = false ;
6232+ List <DatasetVersion > versions = dataset .getVersions ();
6233+
6234+ for (DatasetVersion versionInLoop : versions ) {
6235+ // Once we find the target version, start checking subsequent versions (which are prior versions)
6236+ if (foundTarget ) {
6237+ // Check if this prior version has been successfully archived
6238+ String archivalStatus = versionInLoop .getArchivalCopyLocationStatus ();
6239+ if (archivalStatus == null || !archivalStatus .equals (DatasetVersion .ARCHIVAL_STATUS_SUCCESS )) {
6240+ allPriorVersionsArchived = false ;
6241+ break ;
6242+ }
6243+ }
6244+ if (versionInLoop .equals (targetVersion )) {
6245+ foundTarget = true ;
6246+ }
6247+ }
62296248
6230- if (priorVersion == null || (isVersionArchivable (priorVersion .getId ())
6231- && ArchiverUtil .isVersionArchived (priorVersion ))) {
6249+ if (allPriorVersionsArchived ) {
62326250 thisVersionArchivable = true ;
6251+ // This check has been passed, so we go on to check other conditions
62336252 } else {
62346253 // Store the false value and skip further checks
62356254 versionArchivable .put (id , thisVersionArchivable );
0 commit comments