# -*- coding:utf-8 -*-

"""
注:私有变量和函数,前面加双下划线(不要在后面也加双下划线);
"""

import os
# 自动化sdk头;
from ssat_sdk.sat_environment import getMenuTree3SelectedProjectCfgPath
from ssat_sdk.sat_environment import getMenuTreeSelectedChannel
from BaseLog import CBaseLog


# 外部数据,禁止外部修改;
class CExtraData(CBaseLog):
    def __init__(self):
        CBaseLog.__init__(self)
        # 配置文件路径;
        self.__configPath = ""
        # menu tree资源目录(包含了Excel文件路径);
        self.__menuTreeDir = ""
        # 默认的excel路径;
        self.__defaultExcelPath = ""
        # tv excel路径;
        self.__tvExcelPath = ""
        # enter key excel路径;
        self.__enterKeyExcelPath = ""
        # menu tree低下的xls或xlsx文件集;
        self.__listExcelPath = []
        # 数据状态(只要menuTreeDir和defaultExcelPath有效即为True);
        self.__status = False
        # 加载数据;
        self.loadData()

    '''
    函数:装载所需要的额外数据。
    参数:无
    返回:无
    '''
    def loadData(self):
        # 1、加载menu tree 路径;
        self.menuTreeDir = getMenuTree3SelectedProjectCfgPath()
        if not os.path.isdir(self.menuTreeDir):
            self.error(u"menu tree路径(%s)无效,加载失败!" % self.menuTreeDir)
            return
        # endif

        self.log(u"menu tree路径存在:%s" % self.menuTreeDir)
        # 2、加载配置文件路径;
        self.configPath = os.path.join(self.menuTreeDir, "menutree.ini")
        if not os.path.exists(self.configPath):
            self.error(u"配置文件不存在:%s" % self.configPath)
        else:
            self.log(u"配置文件存在:%s" % self.configPath)

        # 3、加载默认excel文件路径;
        self.defaultExcelPath = os.path.join(self.menuTreeDir, "menutree.xls")
        if not os.path.exists(self.defaultExcelPath):
            self.info(u"默认menu tree excel文件不存在:%s" % self.defaultExcelPath)
            self.defaultExcelPath = os.path.join(self.menuTreeDir, "menutree.xlsx")

        # 二次判断是否存在;
        if os.path.exists(self.defaultExcelPath):
            self.status = True
            self.log(u"默认menu tree excel文件存在:%s" % self.defaultExcelPath)
        else:
            self.error(u"默认menu tree excel文件不存在:%s" % self.defaultExcelPath)

        # 4、加载tv excel文件;
        channel = getMenuTreeSelectedChannel()
        if not channel or str(channel) == "":
            self.tvExcelPath = self.defaultExcelPath
            self.warn(u"tv表格不存在,使用默认excel=%s" % self.tvExcelPath)
        else:
            self.tvExcelPath = os.path.join(self.menuTreeDir, "menuTree_" + channel + ".xls")
            if not os.path.exists(self.tvExcelPath):
                self.tvExcelPath = os.path.join(self.menuTreeDir, "menuTree_" + channel + ".xlsx")

            # 二次判断是否存在;
            if os.path.exists(self.tvExcelPath):
                self.log(u"默认menu tree excel文件存在:%s" % self.tvExcelPath)
            else:
                self.error(u"默认menu tree excel文件不存在:%s" % self.tvExcelPath)

        # 5、加载默认excel文件路径;
        self.enterKeyExcelPath = os.path.join(self.menuTreeDir, "eventkey_code.xls")
        if not os.path.exists(self.enterKeyExcelPath):
            self.info(u"eventkey_code文件不存在:%s" % self.enterKeyExcelPath)
            self.enterKeyExcelPath = os.path.join(self.menuTreeDir, "eventkey_code.xlsx")

        # 二次判断是否存在;
        if os.path.exists(self.enterKeyExcelPath):
            self.log(u"eventkey_code文件存在:%s" % self.enterKeyExcelPath)
        else:
            self.error(u"eventkey_code文件不存在:%s" % self.enterKeyExcelPath)

        # 6、加载UITree开头的所有xls或xlsx
        fileList = os.listdir(self.menuTreeDir)
        self.listExcelPath.append(self.defaultExcelPath)
        if self.defaultExcelPath != self.tvExcelPath:
            self.listExcelPath.append(self.tvExcelPath)
        for filePath in fileList:
            if filePath.lower().startswith("uitree") and (
                    filePath.lower().endswith(".xls") or filePath.lower().endswith(".xlsx")):
                self.listExcelPath.append(os.path.join(self.menuTreeDir, filePath))

    @property
    def configPath(self):
        return self.__configPath

    @property
    def menuTreeDir(self):
        return self.__menuTreeDir

    @property
    def defaultExcelPath(self):
        return self.__defaultExcelPath

    @property
    def tvExcelPath(self):
        return self.__tvExcelPath

    @property
    def enterKeyExcelPath(self):
        return self.__enterKeyExcelPath

    @property
    def listExcelPath(self):
        return self.__listExcelPath

    @property
    def status(self):
        return self.__status


if __name__ == "__main__":
    exdata = CExtraData()
    if exdata.status is False:
        print u"加载数据失败"
    print u"[==============================================]"
    print u"config配置文件路径             ", exdata.configPath
    print u"menutree路径                  ", exdata.menuTreeDir
    print u"默认excel路径                 ", exdata.defaultExcelPath
    print u"tv表格路径                    ", exdata.tvExcelPath
    print u"enterkey表格路径              ", exdata.enterKeyExcelPath
    print u"所有表格列表                  ", exdata.listExcelPath
    print u"加载状态                      ", exdata.status
    print u"[==============================================]"