package com.cr.models

/**
 * 操作系统：MAC系统
 * 创建者：王成
 * 创建日期：2023/4/3 09:37
 * 描述：IP COM 模型
 */
class IPAndComModel(ip: String, com: String){
    var ip:String = ip  // define: 2023/4/3 IP地址
    var com:String = com  // define: 2023/4/3 端口
    var serverName:String = ""  // define: 2023/4/3 服务名称
    var isSelect:Boolean = false  // define: 2023/4/3 是否选中

    /**
     * 初始化 可以有多个init函数 依次顺序执行
     */
    init {
        this.ip = ip
        this.com = com
    }

    /**
     * 构造方法
     * @param ip String Ip地址
     * @param com String 端口号
     * @param serverName String 服务名
     * @constructor
     */
    constructor(ip: String, com: String,serverName: String) : this(ip,com) {
        this.ip = ip
        this.com = com
        this.serverName = serverName
    }

    /**
     * 构造方法
     * @param ip String Ip地址
     * @param com String 端口号
     * @param serverName String 服务名
     * @param isSelect Boolean 是否选中
     * @constructor
     */
    constructor(ip: String, com: String,serverName: String,isSelect:Boolean = false) :this(ip,com){
        this.ip = ip
        this.com = com
        this.serverName = serverName
        this.isSelect = isSelect
    }

    /**
     * 静态方法
     */
    companion object:iModelStaticInterface<IPAndComModel>{
        /**
         * 通过map初始化
         * @param map HashMap<String, String>
         * @return IPAndComModel
         */
        override fun initByMap(map: HashMap<String, String>): IPAndComModel {
            map.let{
                var isChecked = it["checked"].equals("1")
                return IPAndComModel(it["ip"]!!,it["com"]!!,it["server"]!!,isChecked)
            }
        }
    }



    /**
     * 覆写方法
     * @return String
     */
    override fun toString(): String {
        return String.format("%s:%s[%s]", ip, com, serverName)
    }
}