in project_restorer/src/main/scala/PlutoCoreMessageProcessor.scala [272:297]
def crosslinkFilter(onlineResultsE: Either[String, Seq[OnlineOutputMessage]], nearlineResultsE: Either[String, Seq[OnlineOutputMessage]], crosslinkStatusItemTuplesE: Either[String, Seq[(PlutoCoreMessageProcessor.SendRemoveActionTarget.Value, OnlineOutputMessage)]]): Seq[Either[String, Seq[OnlineOutputMessage]]] =
(onlineResultsE, nearlineResultsE, crosslinkStatusItemTuplesE) match {
case (Right(onlineResults), Right(nearlineResults), Right(crosslinkStatusItemTuples)) =>
val neitherItemTuples = crosslinkStatusItemTuples.collect({ case t if SendRemoveActionTarget.Neither == t._1 => t })
val onlyOnlineItemTuples = crosslinkStatusItemTuples.collect({ case t if SendRemoveActionTarget.OnlyOnline == t._1 => t })
val neitherNearlineIds = neitherItemTuples.map(_._2.nearlineId).collect({ case Some(x) => x })
val onlyOnlineNearlineIds = onlyOnlineItemTuples.map(_._2.nearlineId).collect({ case Some(x) => x })
val filteredNearline = nearlineResults
.filterNot(item => neitherNearlineIds.contains(item.nearlineId.getOrElse("<missing nearline ID>")))
.filterNot(item => onlyOnlineNearlineIds.contains(item.nearlineId.getOrElse("<missing nearline ID>")))
val neitherOnlineIds = neitherItemTuples.map(_._2.vidispineItemId).collect({ case Some(x) => x })
val filteredOnline = crosslinkStatusItemTuples
.filterNot(item => neitherOnlineIds.contains(item._2.vidispineItemId.getOrElse("<missing vsItem ID>"))).map(_._2)
logPreAndPostCrosslinkFiltering(onlineResults, nearlineResults, filteredNearline, filteredOnline)
Seq(Right(filteredOnline), Right(filteredNearline), Right(crosslinkStatusItemTuples.map(_._2)))
case (onlineE, nearlineE, Right(_)) =>
Seq(onlineE, nearlineE, Right(Seq()))
case (onlineE, nearlineE, Left(err)) =>
Seq(onlineE, nearlineE, Left(err))
}