From 129e08b7f1cc149823f0438ea70534957019fadb Mon Sep 17 00:00:00 2001 From: Jan van Mansum Date: Wed, 8 Jan 2020 15:53:31 +0100 Subject: [PATCH] EASY-2507 StreamWriteException in ingest flow bij deposit zonder datafiles --- .../nl.knaw.dans.easy.stage/EasyStageDataset.scala | 11 ++++++----- .../main/scala/nl.knaw.dans.easy.stage/lib/JSON.scala | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/src/main/scala/nl.knaw.dans.easy.stage/EasyStageDataset.scala b/lib/src/main/scala/nl.knaw.dans.easy.stage/EasyStageDataset.scala index 7a2d0b8..56b1835 100644 --- a/lib/src/main/scala/nl.knaw.dans.easy.stage/EasyStageDataset.scala +++ b/lib/src/main/scala/nl.knaw.dans.easy.stage/EasyStageDataset.scala @@ -98,24 +98,25 @@ object EasyStageDataset extends DebugEnhancedLogging { foxmlContent = getDatasetFOXML(s.ownerId, emdContent) additionalLicenseFilenameAndMimeType <- AdditionalLicense.createOptionally(sdoDir) audiences <- readAudiences() - manifestSha1Exists = new File(s.bagitDir, "manifest-sha1.txt").exists() + sha1ManifestFile = new File(s.bagitDir, "manifest-sha1.txt") + manifestSha1ExistsAndNonEmpty = sha1ManifestFile.exists() && sha1ManifestFile.length() > 0 agreementsXmlExists = new File(s.bagitDir, "metadata/depositor-info/agreements.xml").exists() messageFromDepositorExists = new File(s.bagitDir, "metadata/depositor-info/message-from-depositor.txt").exists() - jsonCfgContent <- JSON.createDatasetCfg(additionalLicenseFilenameAndMimeType, audiences, manifestSha1Exists, agreementsXmlExists, messageFromDepositorExists) + jsonCfgContent <- JSON.createDatasetCfg(additionalLicenseFilenameAndMimeType, audiences, manifestSha1ExistsAndNonEmpty, agreementsXmlExists, messageFromDepositorExists) _ <- writeAMD(sdoDir, amdContent.toString()) _ <- writeFoxml(sdoDir, foxmlContent) _ <- writePrsql(sdoDir, PRSQL.create()) - _ <- if (s.includeBagMetadata) writeBagMetadata(sdoDir, manifestSha1Exists, agreementsXmlExists, messageFromDepositorExists) + _ <- if (s.includeBagMetadata) writeBagMetadata(sdoDir, manifestSha1ExistsAndNonEmpty, agreementsXmlExists, messageFromDepositorExists) else Success(()) _ <- writeJsonCfg(sdoDir, jsonCfgContent) } yield (emdContent, amdContent) // easy-ingest-flow hands these over to easy-ingest } - private def writeBagMetadata(sdoDir: File, manifestSha1Exists: Boolean, agreementsXmlExists: Boolean, messageFromDepositorExists: Boolean)(implicit s: Settings): Try[Unit] = { + private def writeBagMetadata(sdoDir: File, manifestSha1ExistsAndNonEmpty: Boolean, agreementsXmlExists: Boolean, messageFromDepositorExists: Boolean)(implicit s: Settings): Try[Unit] = { for { _ <- readFile("metadata/dataset.xml").flatMap(writeDatasetXML(sdoDir, _)) _ <- readFile("metadata/files.xml").flatMap(writeFilesXML(sdoDir, _)) - _ <- if (manifestSha1Exists) readFile("manifest-sha1.txt").flatMap(writeSha1Manifest(sdoDir, _)) + _ <- if (manifestSha1ExistsAndNonEmpty) readFile("manifest-sha1.txt").flatMap(writeSha1Manifest(sdoDir, _)) else Success(()) _ <- if (agreementsXmlExists) readFile("metadata/depositor-info/agreements.xml").flatMap(writeAgreementsXML(sdoDir, _)) else Success(()) diff --git a/lib/src/main/scala/nl.knaw.dans.easy.stage/lib/JSON.scala b/lib/src/main/scala/nl.knaw.dans.easy.stage/lib/JSON.scala index 35b119b..4e2d9c4 100644 --- a/lib/src/main/scala/nl.knaw.dans.easy.stage/lib/JSON.scala +++ b/lib/src/main/scala/nl.knaw.dans.easy.stage/lib/JSON.scala @@ -37,7 +37,7 @@ object JSON extends DebugEnhancedLogging { def createDatasetCfg(additionalLicenseFilenameAndMimetype: Option[(String, String)], audiences: Seq[String], - manifestSha1Exists: Boolean, + manifestSha1ExistsAndNonEmpty: Boolean, agreementsXmlExists: Boolean, messageFromDepositorExists: Boolean, )(implicit s: Settings): Try[String] = Try { @@ -66,7 +66,7 @@ object JSON extends DebugEnhancedLogging { ("mimeType" -> "text/xml"), ) - val maybeManifestSha1Entry = manifestSha1Exists + val maybeManifestSha1Entry = manifestSha1ExistsAndNonEmpty .map(_ => { ("contentFile" -> "manifest-sha1.txt") ~ ("dsId" -> "manifest-sha1.txt") ~