in ratatool-sampling/src/main/scala/com/spotify/ratatool/io/FileStorage.scala [40:74]
def exists: Boolean = !FileSystems.`match`(path).metadata.isEmpty
def listFiles: Seq[Metadata] = FileSystems.`match`(path).metadata().asScala.toList
def isDone: Boolean = {
val partPattern = "([0-9]{5})-of-([0-9]{5})".r
val metadata =
try {
listFiles
} catch {
case e: FileNotFoundException => Seq.empty
}
val nums = metadata.flatMap { meta =>
val m = partPattern.findAllIn(meta.resourceId().toString)
if (m.hasNext) {
Some(m.group(1).toInt, m.group(2).toInt)
} else {
None
}
}
if (metadata.isEmpty) {
// empty list
false
} else if (nums.nonEmpty) {
// found xxxxx-of-yyyyy pattern
val parts = nums.map(_._1).sorted
val total = nums.map(_._2).toSet
metadata.size == nums.size && // all paths matched
total.size == 1 && total.head == parts.size && // yyyyy part
parts.head == 0 && parts.last + 1 == parts.size // xxxxx part
} else {
true
}
}