package open.dolphin.infomodel;
import javax.persistence.*;
import javax.swing.ImageIcon;
/**
* SchemaModel
*
* @author Kazushi Minagawa, Digital Globe, Inc.
*
*/
@Entity
@Table(name = "d_image")
public class SchemaModel extends KarteEntryBean
implements java.io.Serializable, java.lang.Cloneable {
// ExtRef
@Embedded
private ExtRefModel extRef;
// Byte data
@Lob
@Column(nullable=false)
private byte[] jpegByte;
// Document
@ManyToOne
@JoinColumn(name="doc_id", nullable=false)
private DocumentModel document;
// Comaptible props
@Transient
private String fileName;
@Transient
private ImageIcon icon;
@Transient
private int imageNumber;
@Transient
private ModuleModel imageStamp; // ModuleInfoBean + model
/** Creates new Schema */
public SchemaModel() {
}
public ExtRefModel getExtRefModel() {
return extRef;
}
public void setExtRefModel(ExtRefModel val) {
extRef = val;
}
public DocumentModel getDocumentModel() {
return document;
}
public void setDocumentModel(DocumentModel document) {
this.document = document;
}
public byte[] getJpegByte() {
return jpegByte;
}
public void setJpegByte(byte[] jpegByte) {
this.jpegByte = jpegByte;
}
public ImageIcon getIcon() {
return icon;
}
public void setIcon(ImageIcon val) {
icon = val;
}
public int getImageNumber() {
return imageNumber;
}
public void setImageNumber(int imageNumber) {
this.imageNumber = imageNumber;
}
public String getFileName() {
return fileName;
}
public void setFileName(String val) {
fileName = val;
}
public IInfoModel getModel() {
return (IInfoModel)getExtRefModel();
}
public void setModel(IInfoModel val) {
setExtRefModel((ExtRefModel)val);
}
/**
* 確定日及びイメージ番号で比較する。
* @param other
* @return
*/
@Override
public int compareTo(Object other) {
int result = super.compareTo(other);
if (result == 0) {
// primittive なので比較はOK
int no1 = getImageNumber();
int no2 = ((SchemaModel) other).getImageNumber();
result = no1 - no2;
}
return result;
}
@Override
protected Object clone() throws CloneNotSupportedException {
SchemaModel ret = new SchemaModel();
ret.setConfirmed(this.getConfirmed());
ret.setEnded(this.getEnded());
ret.setExtRefModel((ExtRefModel)this.getExtRefModel().clone());
ret.setFileName(this.getFileName());
ret.setFirstConfirmed(this.getConfirmed());
ret.setImageNumber(this.getImageNumber());
ret.setLinkId(this.getLinkId());
ret.setLinkRelation(this.getLinkRelation());
ret.setRecorded(this.getRecorded());
ret.setStarted(this.getStarted());
ret.setStatus(this.getStatus());
if (this.getIcon()!=null) {
ret.setIcon(new ImageIcon(this.getIcon().getImage()));
}
if (this.getJpegByte()!=null) {
byte[] dest = new byte[this.getJpegByte().length];
System.arraycopy(this.getJpegByte(), 0, dest, 0, this.getJpegByte().length);
ret.setJpegByte(dest);
}
return ret;
}
public ModuleModel getImageStamp() {
return imageStamp;
}
public void setImageStamp(ModuleModel imageStamp) {
this.imageStamp = imageStamp;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("confirmed=").append(this.getConfirmed()).append("\n");
sb.append("started=").append(this.getStarted()).append("\n");
sb.append("recorded=").append(this.getRecorded()).append("\n");
sb.append("status=").append(this.getStatus()).append("\n");
sb.append("userModel PK=").append(this.getUserModel().getId()).append("\n");
sb.append("karteBean PK=").append(this.getKarteBean().getId()).append("\n");
sb.append("contentType=").append(this.getExtRefModel().getContentType()).append("\n");
sb.append("medicalRole=").append(this.getExtRefModel().getMedicalRole()).append("\n");
sb.append("title=").append(this.getExtRefModel().getTitle()).append("\n");
sb.append("href=").append(this.getExtRefModel().getHref()).append("\n");
sb.append("byte length=").append(this.getJpegByte().length).append("\n");
return sb.toString();
}
}