in media_remover/src/main/scala/MediaNotRequiredMessageProcessor.scala [179:226]
def getActionToPerformOnline(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.status match {
case status if status == EntryStatus.Held =>
logAndSelectAction(Action.CheckExistsOnNearline, onlineOutputMessage, project)
case _ =>
project.deletable match {
case Some(true) =>
project.status match {
case status if status == EntryStatus.Completed || status == EntryStatus.Killed =>
// deletable + Completed/Killed
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) {
// not deletable + deep_archive + sensitive + Completed/Killed
logAndSelectAction(Action.CheckInternalArchive, onlineOutputMessage, project)
} else {
logAndSelectAction(Action.DropMsg, onlineOutputMessage, project)
}
} else {
if (project.status == EntryStatus.Completed || project.status == EntryStatus.Killed) {
// not deletable + deep_archive + not sensitive + Completed/Killed
logAndSelectAction(Action.CheckDeepArchiveForOnline, onlineOutputMessage, project)
} else {
logAndSelectAction(Action.DropMsg, onlineOutputMessage, project)
}
}
} else {
// not deletable + not deep_archive
logAndSelectAction(Action.JustNo, onlineOutputMessage, project)
}
}
}
}
}