#!/usr/bin/env python

import os
import stat
from dm.common.utility.dmSubprocess import DmSubprocess
from dm.common.utility.timeUtility import TimeUtility

class FileUtility:

    @classmethod
    def getMd5Sum(cls, filePath, fileInfo={}):
        p = DmSubprocess.getSubprocess('md5sum %s' % filePath)
        p.run()
        md5Sum = p.getStdOut().split()[0]
        fileInfo['md5Sum'] = md5Sum
        fileInfo['filePath'] = filePath
        return fileInfo

    @classmethod
    def statFile(cls, filePath, fileInfo={}):
        statResult = os.stat(filePath)
        fileInfo['filePath'] = filePath
        fileInfo['fileSize'] = statResult[stat.ST_SIZE]
        fileInfo['fileCreationTime'] = statResult[stat.ST_CTIME]
        fileInfo['fileCreationTimeStamp'] = TimeUtility.formatLocalTimeStamp(statResult[stat.ST_CTIME])
        fileInfo['fileAccessTime'] = statResult[stat.ST_ATIME]
        fileInfo['fileAccessTimeStamp'] = TimeUtility.formatLocalTimeStamp(statResult[stat.ST_ATIME])
        fileInfo['fileModificationTime'] = statResult[stat.ST_MTIME]
        fileInfo['fileModificationTimeStamp'] = TimeUtility.formatLocalTimeStamp(statResult[stat.ST_MTIME])
        return fileInfo

#######################################################################
# Testing.
if __name__ == '__main__':
    print FileUtility.getMd5Sum('/tmp/file')
    print FileUtility.statFile('/tmp/file')