package com.hdl.sdk.link.core.config; 
 | 
  
 | 
import com.hdl.sdk.link.common.utils.LogUtils; 
 | 
import com.hdl.sdk.link.common.utils.SPUtils; 
 | 
import com.hdl.sdk.link.core.bean.request.AuthenticateRequest; 
 | 
import com.hdl.sdk.link.core.bean.response.GatewaySearchBean; 
 | 
  
 | 
import androidx.annotation.NonNull; 
 | 
  
 | 
  
 | 
/** 
 | 
 * Created by jlchen on 11/11/21. 
 | 
 * 
 | 
 * @Description : HDLLinkConfig 
 | 
 */ 
 | 
public class HDLLinkConfig { 
 | 
    private static final String AUTHENTICATE_LS_KEY = "auth_ls_key"; 
 | 
    private static final String AUTHENTICATE_GATEWAYID_KEY = "auth_gatewayid_key"; 
 | 
    private static final String AUTHENTICATE_IPADDRESS_KEY = "auth_ipaddress_key"; 
 | 
    private static final String AUTHENTICATE_IS_LS_KEY = "auth_isls_key"; 
 | 
    private static final String AUTHENTICATE_IS_CLOUD_ENCRYPT_KEY = "cloud_isencrypt_key"; 
 | 
    private static final String AUTHENTICATE_CLOUD_ENCRYPT_KEY = "cloud_encrypt_key"; 
 | 
    private static final String HOME_ID="home_id"; 
 | 
  
 | 
    private String localSecret;//本地加密密钥 
 | 
    private String gatewayId; 
 | 
    private String ipAddress; 
 | 
    private boolean isLocalEncrypt;//网关是否需要加密通讯 
 | 
    private String  homeId; 
 | 
    private GatewaySearchBean currentGateway;//当前网关 
 | 
    private String  aesKey; 
 | 
    //云端网关是否加密 
 | 
    private boolean isCloudEncrypt = true; 
 | 
  
 | 
    private AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean;//当前设备基本信息 
 | 
  
 | 
    /** 
 | 
     * instance 
 | 
     */ 
 | 
    private volatile static HDLLinkConfig instance; 
 | 
  
 | 
    /** 
 | 
     * getInstance 
 | 
     * 
 | 
     * @return AuthenticateConfig 
 | 
     */ 
 | 
    public static synchronized HDLLinkConfig getInstance() { 
 | 
        if (instance == null) { 
 | 
            synchronized (HDLLinkConfig.class) { 
 | 
                if (instance == null) { 
 | 
                    instance = new HDLLinkConfig(); 
 | 
                    instance.loadConfig(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return instance; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 清空缓存 
 | 
     */ 
 | 
    public void clearConfig() { 
 | 
        this.gatewayId = ""; 
 | 
        this.ipAddress = ""; 
 | 
        this.localSecret = ""; 
 | 
        this.isLocalEncrypt = false; 
 | 
        this.homeId=""; 
 | 
        SPUtils.remove(AUTHENTICATE_LS_KEY); 
 | 
        SPUtils.remove(AUTHENTICATE_GATEWAYID_KEY); 
 | 
        SPUtils.remove(AUTHENTICATE_IPADDRESS_KEY); 
 | 
        SPUtils.remove(AUTHENTICATE_IS_LS_KEY); 
 | 
        SPUtils.remove(HOME_ID); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 加载缓存 
 | 
     */ 
 | 
    void loadConfig() { 
 | 
        localSecret = SPUtils.getString(AUTHENTICATE_LS_KEY, ""); 
 | 
//        gatewayId = SPUtils.getString(AUTHENTICATE_GATEWAYID_KEY, ""); 
 | 
//        ipAddress = SPUtils.getString(AUTHENTICATE_IPADDRESS_KEY, ""); 
 | 
        isLocalEncrypt = SPUtils.getBoolean(AUTHENTICATE_IS_LS_KEY, false); 
 | 
        isCloudEncrypt = SPUtils.getBoolean(AUTHENTICATE_IS_CLOUD_ENCRYPT_KEY, false); 
 | 
        aesKey = SPUtils.getString(AUTHENTICATE_CLOUD_ENCRYPT_KEY, ""); 
 | 
        homeId=SPUtils.getString(HOME_ID, ""); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 保存配置 
 | 
     * 
 | 
     * @param localSecret 
 | 
     * @param gatewayId 
 | 
     * @param ipAddress 
 | 
     */ 
 | 
    public void saveConfig(String localSecret, String gatewayId, String ipAddress) { 
 | 
        this.localSecret = localSecret; 
 | 
        this.gatewayId = gatewayId; 
 | 
        this.ipAddress = ipAddress; 
 | 
        SPUtils.put(AUTHENTICATE_LS_KEY, localSecret); 
 | 
        SPUtils.put(AUTHENTICATE_GATEWAYID_KEY, gatewayId); 
 | 
        SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 重新保存 
 | 
     */ 
 | 
    public void reSaveConfig() { 
 | 
        this.saveConfig(this.localSecret, this.gatewayId, this.ipAddress); 
 | 
    } 
 | 
  
 | 
    public String getAesKey() { 
 | 
        return aesKey == null ? "" : aesKey; 
 | 
    } 
 | 
  
 | 
    public void setAesKey(@NonNull String aesKey) { 
 | 
        this.aesKey = aesKey; 
 | 
        SPUtils.put(AUTHENTICATE_CLOUD_ENCRYPT_KEY, aesKey); 
 | 
    } 
 | 
  
 | 
  
 | 
    public boolean isCloudEncrypt() { 
 | 
        return isCloudEncrypt; 
 | 
    } 
 | 
  
 | 
    public void setCloudEncrypt(@NonNull boolean cloudEncrypt) { 
 | 
        isCloudEncrypt = cloudEncrypt; 
 | 
        SPUtils.put(AUTHENTICATE_IS_CLOUD_ENCRYPT_KEY, cloudEncrypt); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 检测是否已经认证过 
 | 
     * 
 | 
     * @return 
 | 
     */ 
 | 
    public boolean checkIfCertified() { 
 | 
        //localSecret不为空并且长度等于16 网关id不能为空 
 | 
        return true;//!TextUtils.isEmpty(localSecret) 
 | 
                //&& localSecret.length() == 16 
 | 
                //&& !TextUtils.isEmpty(gatewayId); 
 | 
    } 
 | 
  
 | 
    public void setLocalSecret(String localSecret) { 
 | 
        this.localSecret = localSecret; 
 | 
        SPUtils.put(AUTHENTICATE_LS_KEY, localSecret); 
 | 
    } 
 | 
  
 | 
    public String getLocalSecret() { 
 | 
        return localSecret; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 当前住宅网关Id,oid,mac 
 | 
     * @return 
 | 
     */ 
 | 
    public String getGatewayId() { 
 | 
        return gatewayId; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 当前住宅网关Id 
 | 
     * @param gatewayId 
 | 
     */ 
 | 
    public void setGatewayId(String gatewayId) { 
 | 
        this.gatewayId= gatewayId; 
 | 
    } 
 | 
  
 | 
    public String getHomeId() { 
 | 
        return homeId; 
 | 
    } 
 | 
  
 | 
    public void setHomeId(String homeId) { 
 | 
        this.homeId = homeId; 
 | 
    } 
 | 
  
 | 
    public String getIpAddress() { 
 | 
        return ipAddress; 
 | 
    } 
 | 
    public void setIpAddress(String ipAddress){ 
 | 
        this.ipAddress = ipAddress; 
 | 
    } 
 | 
  
 | 
    public boolean isLocalEncrypt() { 
 | 
        return isLocalEncrypt; 
 | 
    } 
 | 
  
 | 
    public void setLocalEncrypt(boolean localEncrypt) { 
 | 
        isLocalEncrypt = localEncrypt; 
 | 
        SPUtils.put(AUTHENTICATE_IS_LS_KEY, isLocalEncrypt); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 拼接网关ID获取完整的主题 
 | 
     * 
 | 
     * @param topicStr 
 | 
     * @return 
 | 
     */ 
 | 
    public String getFullTopic(String topicStr) { 
 | 
        return String.format(topicStr, gatewayId); 
 | 
    } 
 | 
  
 | 
    public AuthenticateRequest.AuthenticateDeviceInfoBean getDeviceInfoBean() { 
 | 
        return deviceInfoBean; 
 | 
    } 
 | 
  
 | 
    public void setDeviceInfoBean(AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean) { 
 | 
        this.deviceInfoBean = deviceInfoBean; 
 | 
    } 
 | 
} 
 |