/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.plugin.report.model;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.OrderBy;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.codehaus.jackson.annotate.JsonIgnore;
import com.ewcms.plugin.externalds.model.BaseDS;
/**
* 报表对象
*
* <ul>
* <li>id:报表ID</li>
* <li>name:报表名</li>
* <li>type:报表类型</li>
* <li>textEntity:报表实体</li>
* <li>createDate:创建时间</li>
* <li>updateDate:更新时间</li>
* <li>hidden:隐藏</li>
* <li>remarks:备注</li>
* <li>parameters:参数列表(与Parameters对象一对多关联)</li>
* <li>alqcDataSource:连接数据源对象(与AlqcDataSource对象一对一关联)</li>
* <li>Category:分类列表(与Category对象多对多关联)</li>
* </ul>
*
* @author 吴智俊
*/
@Entity
@Table(name = "plugin_report_text")
@SequenceGenerator(name = "seq_plugin_report_text", sequenceName = "seq_plugin_report_text_id", allocationSize = 1)
public class TextReport implements Serializable {
private static final long serialVersionUID = 2289611908936617074L;
/**
* 文字报表类型枚举
* @author wuzhijun
*/
public enum Type {
HTML("HTML"), PDF("PDF"), XLS("XLS"), RTF("RTF"), XML("XML");
private String description;
private Type(String description) {
this.description = description;
}
/**
* 描述状态
*
* @return
*/
public String getDescription() {
return this.description;
}
}
@Id
@GeneratedValue(generator = "seq_plugin_report_text",strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private Long id;
@Column(name = "name", length = 50, nullable = false, unique = true)
private String name;
@Column(name = "textentity")
private byte[] textEntity;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "createdate")
private Date createDate;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "updatedate")
private Date updateDate;
@Column(name = "hidden", nullable = false)
private Boolean hidden;
@Column(name = "remarks",columnDefinition = "text")
private String remarks;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = Parameter.class)
@JoinColumn(name = "text_id")
@OrderBy("id")
private Set<Parameter> parameters = new LinkedHashSet<Parameter>();
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER, targetEntity = BaseDS.class)
@JoinColumn(name = "base_ds_id")
private BaseDS baseDS = new BaseDS();
public TextReport(){
createDate = new Date(Calendar.getInstance().getTime().getTime());
hidden = false;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@JsonIgnore
public byte[] getTextEntity() {
return textEntity;
}
public void setTextEntity(byte[] textEntity) {
this.textEntity = textEntity;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
public Boolean getHidden() {
return hidden;
}
public void setHidden(Boolean hidden) {
this.hidden = hidden;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
@JsonIgnore
public Set<Parameter> getParameters() {
return parameters;
}
public void setParameters(Set<Parameter> parameters) {
this.parameters = parameters;
}
public BaseDS getBaseDS() {
return baseDS;
}
public void setBaseDS(BaseDS baseDS) {
this.baseDS = baseDS;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.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;
}
final TextReport other = (TextReport) obj;
if (id == null) {
if (other.id != null) {
return false;
}
} else if (!id.equals(other.id)) {
return false;
}
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
return true;
}
}