in app/mxscopy/helpers/MetadataHelper.scala [77:108]
def getFileSize(obj:MxsObject) = {
val view = obj.getAttributeView
val metaValue = (safeReadLong(view, "__mxs__length"), safeReadLong(view, "DPSP_SIZE"), safeReadString(view, "DPSP_SIZE")) match {
case (Some(size), _, _) => //__mxs__length _should_ always be set
logger.debug(s"getting size of ${obj.getId} from __mxs__length")
Some(size)
case (_, Some(size), _) => //DPSP_SIZE is set by Dropspot and some GNM tools
logger.debug(s"getting size of ${obj.getId} from DPSP_SIZE (long)")
Some(size)
case (_, _, Some(sizeString)) => //one of our tools mischaracterised DPSP_SIZE as a string
logger.debug(s"getting size of ${obj.getId} from DPSP_SIZE (string)")
Try {
sizeString.toLong
} match {
case Success(size) => Some(size)
case Failure(err) =>
logger.error(s"Invalid DPSP_SIZE value '$sizeString' on ${obj.getId} could not be converted from string to number: ${err.getMessage}")
None
}
case (_, _, _) =>
None
}
metaValue match {
case Some(size)=>size
case None=>
logger.debug(s"Could not find any file size for ${obj.getId} in metadata, falling back to MXFSAttributeView")
val mxfsMeta = obj.getMXFSFileAttributeView
val attrs = mxfsMeta.readAttributes()
attrs.size()
}
}