def __init__(self):
     """
     Constructor
     """
     self.__tools = Tools()
     self.__androidPackage = AndroidPackage()
     self.__operators = (
         self.__installOperation,
         self.__startOperation,
         self.__stopOperation,
         self.__uninstallOperation,
     )
class Execution(object):
    """
    This is a operation execution class.
    """

    def __init__(self):
        """
        Constructor
        """
        self.__tools = Tools()
        self.__androidPackage = AndroidPackage()
        self.__operators = (
            self.__installOperation,
            self.__startOperation,
            self.__stopOperation,
            self.__uninstallOperation,
        )

    def operation(self, serialNumber, args):
        """
        execute some operation.
        """
        if DEBUG:
            print "[EXEC] %s.%s" % (self.__class__.__name__, self.__tools.getCurrentFunctionName())

        print "[EXEC] %s" % args[APK_FILE_NAME][VALUE]

        tempList = args
        for i in range(len(self.__operators)):
            tempStr = self.__operators[i](args, serialNumber)
            if tempStr.upper().find(SUCCESS_IDENTIFIER) >= 0:
                tempSubList = [tempStr, SUCCESS_STATUS]
            else:
                tempSubList = [tempStr, FAILURE_STATUS]
            tempList.append(tempSubList)

        return tempList

    def __installOperation(self, args, serialNumber):
        """
        execute the installing apk operation.
        """
        if DEBUG:
            print "[EXEC] %s.%s" % (self.__class__.__name__, self.__tools.getCurrentFunctionName())

        return self.__androidPackage.install(
            serialNumber, os.path.join(args[APK_FILE_PATH][VALUE], args[APK_FILE_NAME][VALUE])
        )

    def __startOperation(self, args, serialNumber):
        """
        execute the starting apk operation.
        """
        if DEBUG:
            print "[EXEC] %s.%s" % (self.__class__.__name__, self.__tools.getCurrentFunctionName())

        return self.__androidPackage.start(serialNumber, args[APK_PACKAGE_NAME][VALUE], args[APK_ACTIVITY_NAME][VALUE])

    def __stopOperation(self, args, serialNumber):
        """
        execute the stopping apk operation.
        """
        if DEBUG:
            print "[EXEC] %s.%s" % (self.__class__.__name__, self.__tools.getCurrentFunctionName())

        return self.__androidPackage.stop(serialNumber, args[APK_PACKAGE_NAME][VALUE])

    def __uninstallOperation(self, args, serialNumber):
        """
        execute the uninstalling apk operation.
        """
        if DEBUG:
            print "[EXEC] %s.%s" % (self.__class__.__name__, self.__tools.getCurrentFunctionName())

        return self.__androidPackage.uninstall(serialNumber, args[APK_PACKAGE_NAME][VALUE])