11package org .ihtsdo .rvf .core .service ;
22
3+ import jakarta .annotation .PostConstruct ;
34import org .apache .commons .io .FileUtils ;
45import org .apache .commons .io .IOUtils ;
56import org .ihtsdo .otf .resourcemanager .ManualResourceConfiguration ;
1011import org .ihtsdo .otf .snomedboot .ReleaseImporter ;
1112import org .ihtsdo .rvf .core .service .config .MysqlExecutionConfig ;
1213import org .ihtsdo .rvf .core .service .config .ValidationJobResourceConfig ;
14+ import org .ihtsdo .rvf .core .service .config .ValidationReleaseStorageConfig ;
1315import org .ihtsdo .rvf .core .service .config .ValidationRunConfig ;
1416import org .ihtsdo .rvf .core .service .pojo .ValidationStatusReport ;
1517import org .ihtsdo .rvf .core .service .util .RvfReleaseDbSchemaNameGenerator ;
@@ -64,11 +66,20 @@ public class ValidationVersionLoader {
6466 @ Autowired
6567 private ResourceDataLoader resourceLoader ;
6668
69+ @ Autowired
70+ private ValidationReleaseStorageConfig releaseStorageConfig ;
71+ private ResourceManager releaseSourceManager ;
72+
6773 @ Value ("${rvf.generate.mysql.binary.archive}" )
6874 private boolean generateBinaryArchive ;
6975
7076 private final Logger logger = LoggerFactory .getLogger (ValidationVersionLoader .class );
7177
78+ @ PostConstruct
79+ public void init () {
80+ releaseSourceManager = new ResourceManager (releaseStorageConfig , cloudResourceLoader );
81+ }
82+
7283 public void loadPreviousVersion (MysqlExecutionConfig executionConfig ) throws BusinessServiceException , IOException {
7384 if (executionConfig .getPreviousVersion ().endsWith (ZIP_FILE_EXTENSION )) {
7485 String rvfDbSchema = loadRelease (executionConfig .getPreviousVersion (), executionConfig .getExcludedRF2Files ());
@@ -360,6 +371,10 @@ public void downloadPreviousReleaseAndDependencyFiles(ValidationRunConfig valida
360371 File tempFile = File .createTempFile (validationConfig .getRunId () + "_DEPENDENCY_RF2" , ZIP_FILE_EXTENSION );
361372 Files .copy (dependencyFile .toPath (), tempFile .toPath (), StandardCopyOption .REPLACE_EXISTING );
362373 validationConfig .setLocalDependencyReleaseFile (tempFile );
374+ validationConfig .setExtensionDependency (dependency .getFilename ());
375+ logger .info ("Dependency {} found from Module Storage Coordinator" , dependency .getFilename ());
376+ } else {
377+ logger .info ("Other dependency {} found from Module Storage Coordinator" , dependency .getFilename ());
363378 }
364379 Files .delete (dependencyFile .toPath ());
365380 }
@@ -382,6 +397,18 @@ public void downloadPreviousReleaseAndDependencyFiles(ValidationRunConfig valida
382397 Files .delete (releaseFile .toPath ());
383398 } else {
384399 logger .info ("Previous release {} not found from Module Storage Coordinator" , validationConfig .getPreviousRelease ());
400+
401+ // Fallback to the old versioned content bucket
402+ InputStream previousStream = releaseSourceManager .readResourceStreamOrNullIfNotExists (validationConfig .getPreviousRelease ());
403+ if (previousStream != null ) {
404+ File previousFile = File .createTempFile (validationConfig .getRunId () + "_PREVIOUS_RF2" , ZIP_FILE_EXTENSION );
405+ try (OutputStream out = new FileOutputStream (previousFile )) {
406+ IOUtils .copy (previousStream , out );
407+ } finally {
408+ IOUtils .closeQuietly (previousStream , null );
409+ }
410+ validationConfig .setLocalPreviousReleaseFile (previousFile );
411+ }
385412 }
386413 }
387414 }
0 commit comments