/**
* 文件：MenuEntity.java
* 版本：1.0.0
* 日期：
* Copyright &reg; 
* All right reserved.
*/

package com.mortals.xhx.base.system.menu.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.mortals.framework.model.BaseEntityLong;

/**
 * <p>Title: 菜单信息</p>
 * <p>Description: MenuEntity  </p>
 * <p>Copyright: Copyright &reg;  </p>
 * <p>Company: </p>
 * @author 
 * @version 1.0.0
 */
public class MenuEntity extends BaseEntityLong{
	private static final long serialVersionUID = 1547777703328L;

	/** 菜单名称 */
	private String name;

	/** 连接地址 */
	private String url;

	/** 父菜单ID，一级菜单的该字段值为-1 */
	private Long parentId;

	/** 排序编号 */
	private Integer orderId;

	/** 菜单状态，0：禁用，1：启用，默认1 */
	private Integer status;

	/** 链接方式，0：普通，1：弹出，2：脚本（JavaScript），默认0 */
	private Integer linkType;

	/** 分组编号，使用菜单分隔符按该值分隔，默认1 */
	private Integer groupId;

	/** 分组名称 */
	private Integer groupName;

	/** 主菜单图标，主菜单图标的css样式名 */
	private String imgPath;

	/** 按钮图标，按钮图标的css样式名 */
	private String buttonImgPath;

	/** 常用菜单图标，常用菜单图标的css样式名 */
	private String imgCommPath;

	/** 是否常用菜单，0：非常用，1：常用，默认0 */
	private Integer commMenu;

	/** 菜单类型，0：主菜单，1：非主菜单(功能操作组)，默认0 */
	private Integer menuType;

	/** 权限类型，0：无限制，1：无需登录查看，2：需要登录查看，3：需要角色权限查看，默认3 */
	private Integer authType;

	/** 创建时间 */
	private Date createTime;

	/** 创建用户 */
	private String createUser;

	/** 创建用户名称 */
	private String createUserName;

	private Integer type;


	private List<MenuEntity> childList = new ArrayList<MenuEntity>();


	public MenuEntity() {

	}

	public Integer getType() {
		return type;
	}

	public void setType(Integer type) {
		this.type = type;
	}

	/**
	 * 获取 菜单名称
	 * @return name
	 */
	public String getName() {
		return this.name;
	}

	/**
	 * 设置 菜单名称
	 * @param name
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * 获取 连接地址
	 * @return url
	 */
	public String getUrl() {
		return this.url;
	}

	/**
	 * 设置 连接地址
	 * @param url
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * 获取 父菜单ID，一级菜单的该字段值为-1
	 * @return parentId
	 */
	public Long getParentId() {
		return this.parentId;
	}

	/**
	 * 设置 父菜单ID，一级菜单的该字段值为-1
	 * @param parentId
	 */
	public void setParentId(Long parentId) {
		this.parentId = parentId;
	}

	/**
	 * 获取 排序编号
	 * @return orderId
	 */
	public Integer getOrderId() {
		return this.orderId;
	}

	/**
	 * 设置 排序编号
	 * @param orderId
	 */
	public void setOrderId(Integer orderId) {
		this.orderId = orderId;
	}

	/**
	 * 获取 菜单状态，0：禁用，1：启用，默认1
	 * @return status
	 */
	public Integer getStatus() {
		return this.status;
	}

	/**
	 * 设置 菜单状态，0：禁用，1：启用，默认1
	 * @param status
	 */
	public void setStatus(Integer status) {
		this.status = status;
	}

	/**
	 * 获取 链接方式，0：普通，1：弹出，2：脚本（JavaScript），默认0
	 * @return linkType
	 */
	public Integer getLinkType() {
		return this.linkType;
	}

	/**
	 * 设置 链接方式，0：普通，1：弹出，2：脚本（JavaScript），默认0
	 * @param linkType
	 */
	public void setLinkType(Integer linkType) {
		this.linkType = linkType;
	}

	/**
	 * 获取 分组编号，使用菜单分隔符按该值分隔，默认1
	 * @return groupId
	 */
	public Integer getGroupId() {
		return this.groupId;
	}

	/**
	 * 设置 分组编号，使用菜单分隔符按该值分隔，默认1
	 * @param groupId
	 */
	public void setGroupId(Integer groupId) {
		this.groupId = groupId;
	}


	public Integer getGroupName() {
		return groupName;
	}

	public void setGroupName(Integer groupName) {
		this.groupName = groupName;
	}

	/**
	 * 获取 主菜单图标，主菜单图标的css样式名
	 * @return imgPath
	 */
	public String getImgPath() {
		return this.imgPath;
	}

	/**
	 * 设置 主菜单图标，主菜单图标的css样式名
	 * @param imgPath
	 */
	public void setImgPath(String imgPath) {
		this.imgPath = imgPath;
	}

	/**
	 * 获取 按钮图标，按钮图标的css样式名
	 * @return buttonImgPath
	 */
	public String getButtonImgPath() {
		return this.buttonImgPath;
	}

	/**
	 * 设置 按钮图标，按钮图标的css样式名
	 * @param buttonImgPath
	 */
	public void setButtonImgPath(String buttonImgPath) {
		this.buttonImgPath = buttonImgPath;
	}

	/**
	 * 获取 常用菜单图标，常用菜单图标的css样式名
	 * @return imgCommPath
	 */
	public String getImgCommPath() {
		return this.imgCommPath;
	}

	/**
	 * 设置 常用菜单图标，常用菜单图标的css样式名
	 * @param imgCommPath
	 */
	public void setImgCommPath(String imgCommPath) {
		this.imgCommPath = imgCommPath;
	}

	/**
	 * 获取 是否常用菜单，0：非常用，1：常用，默认0
	 * @return commMenu
	 */
	public Integer getCommMenu() {
		return this.commMenu;
	}

	/**
	 * 设置 是否常用菜单，0：非常用，1：常用，默认0
	 * @param commMenu
	 */
	public void setCommMenu(Integer commMenu) {
		this.commMenu = commMenu;
	}

	/**
	 * 获取 菜单类型，0：主菜单，1：非主菜单(功能操作组)，默认0
	 * @return menuType
	 */
	public Integer getMenuType() {
		return this.menuType;
	}

	/**
	 * 设置 菜单类型，0：主菜单，1：非主菜单(功能操作组)，默认0
	 * @param menuType
	 */
	public void setMenuType(Integer menuType) {
		this.menuType = menuType;
	}

	/**
	 * 获取 权限类型，0：无限制，1：无需登录查看，2：需要登录查看，3：需要角色权限查看，默认3
	 * @return authType
	 */
	public Integer getAuthType() {
		return this.authType;
	}

	/**
	 * 设置 权限类型，0：无限制，1：无需登录查看，2：需要登录查看，3：需要角色权限查看，默认3
	 * @param authType
	 */
	public void setAuthType(Integer authType) {
		this.authType = authType;
	}

	/**
	 * 获取 创建时间
	 * @return createTime
	 */
	@Override
	public Date getCreateTime() {
		return this.createTime;
	}

	/**
	 * 设置 创建时间
	 * @param createTime
	 */
	@Override
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	/**
	 * 获取 创建用户
	 * @return createUser
	 */
	@Override
	public String getCreateUser() {
		return this.createUser;
	}

	/**
	 * 设置 创建用户
	 * @param createUser
	 */
	@Override
	public void setCreateUser(String createUser) {
		this.createUser = createUser;
	}

	/**
	 * 获取 创建用户名称
	 * @return createUserName
	 */
	@Override
	public String getCreateUserName() {
		return this.createUserName;
	}

	/**
	 * 设置 创建用户名称
	 * @param createUserName
	 */
	@Override
	public void setCreateUserName(String createUserName) {
		this.createUserName = createUserName;
	}

	public List<MenuEntity> getChildList() {
		return childList;
	}

	public void setChildList(List<MenuEntity> childList) {
		this.childList = childList;
	}

	@Override
	public int hashCode() {
		return this.getId().hashCode();
	}

	@Override
	public boolean equals(Object obj) {
		if (obj == null) {
			return false;
		}
		if (obj instanceof MenuEntity) {
			MenuEntity tmp = (MenuEntity) obj;
			if (this.getId().longValue() == tmp.getId().longValue()) {
				return true;
			}
		}
		return false;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder("");
		sb.append("id:").append(getId())
				.append(",name:").append(getName())
				.append(",url:").append(getUrl())
				.append(",parentId:").append(getParentId())
				.append(",orderId:").append(getOrderId())
				.append(",status:").append(getStatus())
				.append(",linkType:").append(getLinkType())
				.append(",groupId:").append(getGroupId())
				.append(",groupName:").append(getGroupName())
				.append(",imgPath:").append(getImgPath())
				.append(",buttonImgPath:").append(getButtonImgPath())
				.append(",imgCommPath:").append(getImgCommPath())
				.append(",commMenu:").append(getCommMenu())
				.append(",menuType:").append(getMenuType())
				.append(",authType:").append(getAuthType())
				.append(",createTime:").append(getCreateTime())
				.append(",createUser:").append(getCreateUser())
				.append(",createUserName:").append(getCreateUserName());
		return sb.toString();
	}

	@Override
	public void initAttrValue() {
		this.name = null;
		this.url = null;
		this.parentId = null;
		this.orderId = 0;
		this.status = 1;
		this.linkType = 0;
		this.groupId = 1;
		this.imgPath = null;
		this.buttonImgPath = null;
		this.imgCommPath = null;
		this.commMenu = 0;
		this.menuType = 0;
		this.authType = 3;
		this.createTime = null;
		this.createUser = null;
		this.createUserName = null;
	}
}