def getActionToPerformOnline()

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