package io.budgetapp.model;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
*
*/
@Entity
@Table(name = "transactions")
public class Transaction implements Serializable {
private static final long serialVersionUID = 2625666273036891436L;
private Long id;
private String name;
private double amount;
private String remark;
private boolean auto;
private Date transactionOn;
private Date createdAt;
private Budget budget;
private Recurring recurring;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(nullable = false, updatable = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(nullable = false, updatable = false)
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
@Column(updatable = false)
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public boolean isAuto() {
return auto;
}
public void setAuto(boolean auto) {
this.auto = auto;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "transaction_on", nullable = false, updatable = false)
public Date getTransactionOn() {
return transactionOn;
}
public void setTransactionOn(Date transactionOn) {
this.transactionOn = transactionOn;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_at", insertable = false, nullable = false, updatable = false)
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
@JoinColumn(updatable = false)
@ManyToOne(optional = false, fetch = FetchType.LAZY)
public Budget getBudget() {
return budget;
}
public void setBudget(Budget budget) {
this.budget = budget;
}
@JoinColumn(updatable = false)
@ManyToOne(fetch = FetchType.LAZY)
public Recurring getRecurring() {
return recurring;
}
public void setRecurring(Recurring recurring) {
this.recurring = recurring;
}
@PrePersist
void perPersist() {
if (transactionOn == null) {
transactionOn = new Date();
}
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Transaction{");
sb.append("id=").append(id);
sb.append(", amount=").append(amount);
sb.append(", remark='").append(remark).append('\'');
sb.append(", transactionOn=").append(transactionOn);
sb.append(", createdAt=").append(createdAt);
sb.append(", budget=").append(budget);
sb.append('}');
return sb.toString();
}
}