/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2014, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.adm.database;
import org.eclipse.persistence.annotations.CascadeOnDelete;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import java.util.Date;
/**
* @since 1.0.8
*/
@Entity
@Table(name = "field_buffer")
@IdClass(value = FieldBuffer.PK.class)
public class FieldBuffer {
@Id
@JoinColumn(name = "task")
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private FormBuffer formBuffer;
@Id
@Column(name = "field")
private String fieldId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created", nullable = false, updatable = false)
private Date createDate;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "updated", nullable = false)
private Date updateDate;
/**
* text, fileName
*/
@Column(name = "text_", columnDefinition = "text")
private String textValue;
/**
* MIME type
*/
@Column(name = "mime")
private String mime;
/**
* long, boolean, fileSize
*/
@Column(name = "long_")
private Long longValue;
/**
* bytes, fileContent
*/
@CascadeOnDelete
@ManyToOne(fetch = FetchType.LAZY, optional = true)
@JoinColumn(name = "bytes")
private BytesBuffer bytesValue;
protected FieldBuffer() {
}
public FieldBuffer(FormBuffer formBuffer, String fieldId, Date now) {
this.formBuffer = formBuffer;
this.fieldId = fieldId;
this.createDate = this.updateDate = now;
}
public FormBuffer getFormBuffer() {
return formBuffer;
}
public String getFieldId() {
return fieldId;
}
public Date getCreateDate() {
return createDate;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date _) {
this.updateDate = _;
}
public String getTextValue() {
return textValue;
}
public void setTextValue(String _) {
textValue = _;
}
public Long getLongValue() {
return longValue;
}
public void setLongValue(Long _) {
this.longValue = _;
}
public BytesBuffer getBytesValue() {
return bytesValue;
}
public void setBytesValue(BytesBuffer _) {
this.bytesValue = _;
}
public String getMime() {
return mime;
}
public void setMime(String _) {
this.mime = _;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
FieldBuffer that = (FieldBuffer) o;
if (fieldId != null ? !fieldId.equals(that.fieldId) : that.fieldId != null) return false;
if (formBuffer != null ? !formBuffer.equals(that.formBuffer) : that.formBuffer != null) return false;
return true;
}
@Override
public int hashCode() {
int result = formBuffer != null ? formBuffer.hashCode() : 0;
result = 31 * result + (fieldId != null ? fieldId.hashCode() : 0);
return result;
}
final public static class PK {
final public String formBuffer;
final public String fieldId;
public PK(String formBuffer, String fieldId) {
this.formBuffer = formBuffer;
this.fieldId = fieldId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PK pk = (PK) o;
if (fieldId != null ? !fieldId.equals(pk.fieldId) : pk.fieldId != null) return false;
if (formBuffer != null ? !formBuffer.equals(pk.formBuffer) : pk.formBuffer != null) return false;
return true;
}
@Override
public int hashCode() {
int result = formBuffer != null ? formBuffer.hashCode() : 0;
result = 31 * result + (fieldId != null ? fieldId.hashCode() : 0);
return result;
}
}
}