/*
 * Copyright (C), 2002-2015, 江苏三六五网络股份有限公司
 * FileName: BaseAttachment.java
 * Author:   duhui
 * Date:     2015年1月18日 下午1:59:11
 * Description:     
 * History: 
 * <author>      <time>      <version>    <desc>
 * 修改人姓名                          修改时间                        版本号                                 描述
 */
package com.house365.beans.vo;

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;
import org.hibernate.validator.constraints.Length;

/**
 * 上传文件类
 *
 * @author duhui
 * @version [v1.0.0, 2015年1月18日]
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public class BaseAttachment {

    /**
     *
     */
    private static final long serialVersionUID = 1L;


    private Integer id;
    /**
     * 表单id
     */
    private Integer resourceId;

    /**
     * 表单bean
     */
    @Length(max = 600)
    private String resourceType;

    /**
     * 业务类型字段
     */
    private Integer bizType;

    /**
     * 附件名称
     */
    @Length(max = 900)
    private String name;

    /**
     * 附件类型
     */
    private Integer attachmentTypeId;

    /**
     * 附件后缀
     */
    @Length(max = 30)
    private String suffix;

    /**
     * 文件大小
     */
    private Long size;

    /**
     * 文件路径
     */
    @Length(max = 500)
    private String remotePath;

    /**
     * 文件保存路径
     */
    private Integer remoteServerUrlid;

    /**
     * 备注
     */
    @Length(max = 100)
    private String remark;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 获取表单id
     *
     * @return 表单id
     */
    public Integer getResourceId() {
        return this.resourceId;
    }

    /**
     * 设置表单id
     *
     * @param resourceId 表单id
     */
    public void setResourceId(Integer resourceId) {
        this.resourceId = resourceId;
    }

    /**
     * 获取表单bean
     *
     * @return 表单bean
     */
    public String getResourceType() {
        return this.resourceType;
    }

    /**
     * 设置表单bean
     *
     * @param resourceType 表单bean
     */
    public void setResourceType(String resourceType) {
        this.resourceType = resourceType;
    }

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

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

    /**
     * 获取附件类型
     *
     * @return 附件类型
     */
    public Integer getAttachmentTypeId() {
        return this.attachmentTypeId;
    }

    /**
     * 设置附件类型
     *
     * @param attachmentTypeId 附件类型
     */
    public void setAttachmentTypeId(Integer attachmentTypeId) {
        this.attachmentTypeId = attachmentTypeId;
    }

    /**
     * 获取附件后缀
     *
     * @return 附件后缀
     */
    public String getSuffix() {
        return this.suffix;
    }

    /**
     * 设置附件后缀
     *
     * @param suffix 附件后缀
     */
    public void setSuffix(String suffix) {
        this.suffix = suffix;
    }

    /**
     * 获取文件大小
     *
     * @return 文件大小
     */
    public Long getSize() {
        return this.size;
    }

    /**
     * 设置文件大小
     *
     * @param size 文件大小
     */
    public void setSize(Long size) {
        this.size = size;
    }

    /**
     * 获取文件路径
     *
     * @return 文件路径
     */
    public String getRemotePath() {
        return this.remotePath;
    }

    /**
     * 设置文件路径
     *
     * @param remotePath 文件路径
     */
    public void setRemotePath(String remotePath) {
        this.remotePath = remotePath;
    }

    /**
     * 功能描述: <br>
     * 获取缩放路径
     *
     * @param zoomStr 缩放比例的字符串
     * @return
     * @author chengjianfang
     * @version [v1.0.0, 2015年2月4日]
     * @since [产品/模块版本](可选)
     */
    private String getZoomRemotePath(final String zoomStr) {
        final int lastPointIndex = this.remotePath.lastIndexOf('.');
        final String fileName = this.remotePath.substring(0, lastPointIndex);
        final String suffix = this.remotePath.substring(lastPointIndex);
        StringBuffer path = new StringBuffer(fileName);
        //注释以下代码修改后台图片不显示问题 update by jiangzhou 2015-06-16
        //path.append("_");
        //path.append(zoomStr);
        path.append(suffix);
        return path.toString();
    }

    /**
     * 获取文件保存路径
     *
     * @return 文件保存路径
     */
    public Integer getRemoteServerUrlid() {
        return this.remoteServerUrlid;
    }

    /**
     * 设置文件保存路径
     *
     * @param remoteServerUrlid 文件保存路径
     */
    public void setRemoteServerUrlid(Integer remoteServerUrlid) {
        this.remoteServerUrlid = remoteServerUrlid;
    }

    /**
     * 获取备注
     *
     * @return 备注
     */
    public String getRemark() {
        return this.remark;
    }

    /**
     * 设置备注
     *
     * @param remark 备注
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /**
     * @return the bizType
     */
    public Integer getBizType() {
        return bizType;
    }

    /**
     * @param bizType the bizType to set
     */
    public void setBizType(Integer bizType) {
        this.bizType = bizType;
    }

    /**
     * 实体的toString方法
     *
     * @return 实体字符串
     */
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("Id", getId())
                .append("ResourceId", getResourceId())
                .append("ResourceType", getResourceType())
                .append("BizType", getBizType())
                .append("Name", getName())
                .append("AttachmentTypeId", getAttachmentTypeId())
                .append("Suffix", getSuffix())
                .append("Size", getSize())
                .append("RemotePath", getRemotePath())
                .append("RemoteServerUrlid", getRemoteServerUrlid())
                .append("Remark", getRemark())
                .toString();
    }

    /**
     * 获取hash码
     *
     * @return HASH码
     */
    public int hashCode() {
        return new HashCodeBuilder()
                .append(getId())
                .toHashCode();
    }

    /**
     * 对象比较
     *
     * @param obj 待比较对象
     * @return 是否相同<li>true--相同<li>false--不相同
     */
    public boolean equals(Object obj) {
        if (obj instanceof BaseAttachment == false) return false;
        if (this == obj) return true;
        BaseAttachment other = (BaseAttachment) obj;
        return new EqualsBuilder()
                .append(getId(), other.getId())
                .isEquals();
    }

}
