def getFileSize()

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