#ifndef __GT_CORE_SYSTEM_H__
#define __GT_CORE_SYSTEM_H__
#include <jni.h>

class GtFileTransfer;
class GtSystem
{
    public:
        virtual ~GtSystem();
        static GtSystem *instance();

        /************************************************************
        *功能：保存终端配置文件，同时更新终端配置内存数据
        *输入：terminal=终端配置数据
        *输出：无
        *返回：!=0错误
        */
        int saveTerminalConfig(stTerminal *terminal);

        /************************************************************
        *功能：初始化系统
        *输入：无
        *输出：无
        *返回：!=0错误
        */
        int initSystem();

        /************************************************************
        *功能：登录流程
        *输入：无
        *输出：无
        *返回：!=0错误
        */
        int loginProcess(JNIEnv *env, int lineNo, int userName, char *password);

        /************************************************************
        *功能：是否首次启动应用
        *输入：无
        *输出：无
        *返回：true首次启动，false非首次启动
        */
        bool isFirstLoad();

        /************************************************************
        *功能：首次启动应用，生成配置文件
        *输入：无
        *输出：无
        *返回：!=0错误
        */
        int firstLoad();

    private:
        GtSystem();
        static GtSystem *_instance;
        /************************************************************
        *功能：创建默认的终端配置数据
        *输入：无
        *输出：terminal=终端配置数据
        *返回：无
        */
        void defaultTerminalConfig(stTerminal *terminal);

        /************************************************************
        *功能：读取终端配置文件，如果文件不存在则创建默认终端配置文件
        *输入：无
        *输出：terminal=终端配置数据
        *返回：!=0错误
        */
        int readTerminalConfig(stTerminal *terminal);

        /************************************************************
        *功能：写入终端配置文件
        *输入：terminal=终端配置数据
        *输出：无
        *返回：!=0错误
        */
        int writeTerminalConfig(stTerminal *terminal);

        /************************************************************
        *功能：比较服务器与本地APP版本
        *输入：localVer=本地APP版本号
        *输出：serverVer=服务器APP版本号
        *返回：=0服务器版本更高，!=0本地版本更高
        */
        int compareAppVersion(char *localVer, char *serverVer);

        /************************************************************
        *功能：下载APP升级程序，并自动安装
        *输入：env=JVM环境
        *输入：terminal=终端配置数据
        *输入：ver=本地版本
        *输出：无
        *返回：!=0错误
        */
        int downloadApp(JNIEnv *env, GtFileTransfer *fileTrans, char *ver);

        /************************************************************
        *功能：登录过程强制下载升级
        *输入：无
        *输出：无
        *返回：!=0错误
        */
        int autoDownload(JNIEnv *env, char *localVer);
};

#endif
