package org.appfuse.model;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

/**
 * @hibernate.class table="category"
 */
public class Category extends BaseObject {
    private Long categoryId;
    private String name;
    private String description;

    /**
     * @hibernate.id column="category_id" generator-class="native"
     *  unsaved-value="null"
     */
    public Long getCategoryId() {
        return categoryId;
    }

    public void setCategoryId(Long categoryId) {
        this.categoryId = categoryId;
    }

    /**
     * @hibernate.property column="name" not-null="true"
     */
    public String getName() {
        return name;
    }

    public void setName(String categoryName) {
        this.name = categoryName;
    }

    /**
     * @hibernate.property column="description"

     */
    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public boolean equals(Object object) {
        if (!(object instanceof Category)) {
            return false;
        }
        Category rhs = (Category) object;
        return new EqualsBuilder().append(this.description, rhs.description)
                .append(this.name, rhs.name).isEquals();
    }

    public int hashCode() {
        return new HashCodeBuilder(565232597, 1589224137).append(
                this.description).append(this.name).toHashCode();
    }

    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("categoryId", this.categoryId)
                .append("name", this.name).append("description",
                        this.description).toString();
    }
}
