package pwc.taxtech.atms.dto.permission;

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

import com.fasterxml.jackson.annotation.JsonProperty;

public class PermissionDto {

    private String ID;

    private String name;

    private String code;

    private String parentID;

    private Short isActive;

    private Short PLevel;

    private String serviceTypeID;

    private String relyOnCodes;

    private String menuID;

    private Date createTime;

    private Date updateTime;

    private List<PermissionDto> children;

    private Boolean expanded;

    public String getID() {
        return ID;
    }

    public void setID(String iD) {
        ID = iD;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getParentID() {
        return parentID;
    }

    public void setParentID(String parentID) {
        this.parentID = parentID;
    }

    public Short getIsActive() {
        return isActive;
    }

    public void setIsActive(Short isActive) {
        this.isActive = isActive;
    }

    @JsonProperty("pLevel")
    public Short getPLevel() {
        return PLevel;
    }

    public void setPLevel(Short pLevel) {
        PLevel = pLevel;
    }

    public String getServiceTypeID() {
        return serviceTypeID;
    }

    public void setServiceTypeID(String serviceTypeID) {
        this.serviceTypeID = serviceTypeID;
    }

    public String getRelyOnCodes() {
        return relyOnCodes;
    }

    public void setRelyOnCodes(String relyOnCodes) {
        this.relyOnCodes = relyOnCodes;
    }

    public String getMenuID() {
        return menuID;
    }

    public void setMenuID(String menuID) {
        this.menuID = menuID;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public List<PermissionDto> getChildren() {
        return children;
    }

    public void setChildren(List<PermissionDto> children) {
        this.children = children;
    }

    public Boolean getExpanded() {
        return expanded;
    }

    public void setExpanded(Boolean expanded) {
        this.expanded = expanded;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((ID == null) ? 0 : ID.hashCode());
        result = prime * result + ((PLevel == null) ? 0 : PLevel.hashCode());
        result = prime * result + ((children == null) ? 0 : children.hashCode());
        result = prime * result + ((code == null) ? 0 : code.hashCode());
        result = prime * result + ((createTime == null) ? 0 : createTime.hashCode());
        result = prime * result + ((expanded == null) ? 0 : expanded.hashCode());
        result = prime * result + ((isActive == null) ? 0 : isActive.hashCode());
        result = prime * result + ((menuID == null) ? 0 : menuID.hashCode());
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + ((parentID == null) ? 0 : parentID.hashCode());
        result = prime * result + ((relyOnCodes == null) ? 0 : relyOnCodes.hashCode());
        result = prime * result + ((serviceTypeID == null) ? 0 : serviceTypeID.hashCode());
        result = prime * result + ((updateTime == null) ? 0 : updateTime.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        PermissionDto other = (PermissionDto) obj;
        if (ID == null) {
            if (other.ID != null)
                return false;
        } else if (!ID.equals(other.ID))
            return false;
        if (PLevel == null) {
            if (other.PLevel != null)
                return false;
        } else if (!PLevel.equals(other.PLevel))
            return false;
        if (children == null) {
            if (other.children != null)
                return false;
        } else if (!children.equals(other.children))
            return false;
        if (code == null) {
            if (other.code != null)
                return false;
        } else if (!code.equals(other.code))
            return false;
        if (createTime == null) {
            if (other.createTime != null)
                return false;
        } else if (!createTime.equals(other.createTime))
            return false;
        if (expanded == null) {
            if (other.expanded != null)
                return false;
        } else if (!expanded.equals(other.expanded))
            return false;
        if (isActive == null) {
            if (other.isActive != null)
                return false;
        } else if (!isActive.equals(other.isActive))
            return false;
        if (menuID == null) {
            if (other.menuID != null)
                return false;
        } else if (!menuID.equals(other.menuID))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (parentID == null) {
            if (other.parentID != null)
                return false;
        } else if (!parentID.equals(other.parentID))
            return false;
        if (relyOnCodes == null) {
            if (other.relyOnCodes != null)
                return false;
        } else if (!relyOnCodes.equals(other.relyOnCodes))
            return false;
        if (serviceTypeID == null) {
            if (other.serviceTypeID != null)
                return false;
        } else if (!serviceTypeID.equals(other.serviceTypeID))
            return false;
        if (updateTime == null) {
            if (other.updateTime != null)
                return false;
        } else if (!updateTime.equals(other.updateTime))
            return false;
        return true;
    }

}