def getActionToPerformNearline()

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)
          }
        }
    }