in media_remover/src/main/scala/MediaNotRequiredMessageProcessor.scala [234:274]
def getActionToPerformNearline(onlineOutputMessage: OnlineOutputMessage, maybeProject: Option[ProjectRecord], maybeForceDelete: Option[Boolean]): (Action.Value, Option[ProjectRecord]) =
maybeProject match {
case None =>
logger.debug(s"Action to perform: '${Action.DropMsg}' for ${getInformativeIdStringNoProject(onlineOutputMessage)}")
(Action.DropMsg, None)
case Some(project) =>
if (maybeForceDelete == Some(true)) {
return logAndSelectAction(Action.ClearAndDelete, onlineOutputMessage, project)
}
project.deletable match {
case Some(true) =>
project.status match {
case status if status == EntryStatus.Completed || status == EntryStatus.Killed =>
onlineOutputMessage.mediaCategory.toLowerCase match {
case "deliverables" => logAndSelectAction(Action.DropMsg, onlineOutputMessage, project)
case _ => logAndSelectAction(Action.ClearAndDelete, onlineOutputMessage, project)
}
case _ => logAndSelectAction(Action.DropMsg, onlineOutputMessage, project)
}
case _ =>
// not DELETABLE
if (project.deep_archive.getOrElse(false)) {
if (project.sensitive.getOrElse(false)) {
if (project.status == EntryStatus.Completed || project.status == EntryStatus.Killed) {
logAndSelectAction(Action.CheckInternalArchive, onlineOutputMessage, project)
} else {
logAndSelectAction(Action.DropMsg, onlineOutputMessage, project)
}
} else {
if (project.status == EntryStatus.Completed || project.status == EntryStatus.Killed) {
logAndSelectAction(Action.CheckDeepArchiveForNearline, onlineOutputMessage, project)
} else { // deep_archive + not sensitive + not killed and not completed (GP-785 row 8)
logAndSelectAction(Action.DropMsg, onlineOutputMessage, project)
}
}
} else {
// We cannot remove media when the project doesn't have deep_archive set
logAndSelectAction(Action.JustNo, onlineOutputMessage, project)
}
}
}