package cn.hmsoft.frame.data.model;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;

import cn.hmsoft.frame.constants.FrameSeqName;
import cn.hmsoft.helper.StringHelper;
import cn.hmsoft.jdbc.entity.Table;

/**********************************************
 * 系统表-系统模块表
 * 
 * @author: zxq
 * @date: 2018-05-10 11:20:45
 * @version: 5.0.0
 * @email: revisit@126.com
 * @Company: www.hmsoft.cn
 */
@Table(tableName = "FRAME_MODULE", keyColumn = "MODULE_ID", sequenceName = FrameSeqName.FrameModuleId)
public class FrameModule implements Serializable {
	private static final long serialVersionUID = -9051827884155643101L;
	// 模块启动属性
	private Integer load_order;
	// 模块中文名称
	private String module_alias;
	// 模块的启动路径
	private String module_class;
	// 内部编号
	private Integer module_id;
	// 模块名称
	private String module_name;
	// 启动模块的参数信息
	private String module_param;
	// 是否启用改模块
	private String module_status;
	// 模块当前版本
	private String module_version;
	// 哪个工程需要使用该模块
	private String project_name;

	/****
	 * 模块启动属性
	 */
	public Integer getLoad_order() {
		return this.load_order;
	}

	/****
	 * 模块启动属性
	 */
	public void setLoad_order(Integer load_order) {
		this.load_order = load_order;
	}

	/****
	 * 模块中文名称
	 */
	public String getModule_alias() {
		return this.module_alias;
	}

	/****
	 * 模块中文名称
	 */
	public void setModule_alias(String module_alias) {
		this.module_alias = module_alias;
	}

	/****
	 * 模块的启动路径
	 */
	public String getModule_class() {
		return this.module_class;
	}

	/****
	 * 模块的启动路径
	 */
	public void setModule_class(String module_class) {
		this.module_class = module_class;
	}

	/****
	 * 内部编号
	 */
	public Integer getModule_id() {
		return this.module_id;
	}

	/****
	 * 内部编号
	 */
	public void setModule_id(Integer module_id) {
		this.module_id = module_id;
	}

	/****
	 * 模块名称
	 */
	public String getModule_name() {
		return this.module_name;
	}

	/****
	 * 模块名称
	 */
	public void setModule_name(String module_name) {
		this.module_name = module_name;
	}

	/****
	 * 启动模块的参数信息
	 */
	public String getModule_param() {
		return this.module_param;
	}

	/****
	 * 启动模块的参数信息
	 */
	public void setModule_param(String module_param) {
		this.module_param = module_param;
	}

	/****
	 * 是否启用改模块
	 */
	public String getModule_status() {
		return this.module_status;
	}

	/****
	 * 是否启用改模块
	 */
	public void setModule_status(String module_status) {
		this.module_status = module_status;
	}

	/****
	 * 模块当前版本
	 */
	public String getModule_version() {
		return this.module_version;
	}

	/****
	 * 模块当前版本
	 */
	public void setModule_version(String module_version) {
		this.module_version = module_version;
	}

	/****
	 * 哪个工程需要使用该模块
	 */
	public String getProject_name() {
		return this.project_name;
	}

	/****
	 * 哪个工程需要使用该模块
	 */
	public void setProject_name(String project_name) {
		this.project_name = project_name;
	}

	/*******************
	 * 参数
	 */
	protected Map<String, String> paramMap;

	public Map<String, String> getParamMap() {
		return paramMap;
	}

	/*******************
	 * 准备参数信息
	 */
	public void prepareParamMap() {
		if (StringHelper.isNotEmpty(this.module_param))
			this.paramMap = StringHelper.toMap(this.module_param);
		else
			this.paramMap = new LinkedHashMap<String, String>();
	}

	public String getParamValue(String param_name) {
		return getParamValue(param_name, null);
	}

	public String getParamValue(String param_name, String default_value) {
		if (this.paramMap == null) {
			synchronized (this.getClass()) {
				this.prepareParamMap();
			}
		}
		if (!this.paramMap.containsKey(param_name))
			return default_value;
		else
			return this.paramMap.get(param_name);
	}
}