package org.jboss.seam.example.quartz;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.jboss.seam.async.QuartzTriggerHandle;
@Entity
public class Payment
implements Serializable
{
@Id @GeneratedValue
private Long id;
@NotNull
@Digits(integerDigits=8,fractionalDigits=2)
private BigDecimal amount;
@NotNull @Length(min=1)
private String payee;
@NotNull @ManyToOne
private Account account;
@NotNull
private Date paymentDate;
@NotNull
private Date createdDate;
private Date lastPaid;
private boolean active = true;
private String paymentCron;
private Date paymentEndDate;
private Frequency paymentFrequency = Frequency.DAILY;
@Lob
private QuartzTriggerHandle quartzTriggerHandle;
public Long getId() {
return id;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public String getPayee()
{
return payee;
}
public void setPayee(String payee) {
this.payee = payee;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
account.getPayments().add(this);
}
public Date getPaymentDate() {
return paymentDate;
}
public void setPaymentDate(Date paymentDate) {
this.paymentDate = paymentDate;
}
public Date getPaymentEndDate() {
return paymentEndDate;
}
public void setPaymentEndDate(Date paymentEndDate) {
this.paymentEndDate = paymentEndDate;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public Date getLastPaid() {
return lastPaid;
}
public void setLastPaid(Date lastPaid) {
this.lastPaid = lastPaid;
}
public boolean getActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public Frequency getPaymentFrequency() {
return paymentFrequency;
}
public void setPaymentFrequency(Frequency paymentFrequency) {
this.paymentFrequency = paymentFrequency;
}
public String getPaymentCron() {
return paymentCron;
}
public void setPaymentCron(String paymentCron) {
this.paymentCron = paymentCron;
}
public QuartzTriggerHandle getQuartzTriggerHandle() {
return quartzTriggerHandle;
}
public void setQuartzTriggerHandle(QuartzTriggerHandle quartzTriggerHandle) {
this.quartzTriggerHandle = quartzTriggerHandle;
}
public enum Frequency {
ONCE(null),
EVERY_SECOND(1000l), // Just for testing
EVERY_MINUTE(60*1000l),
HOURLY(60*60*1000l),
DAILY(24*60*60*1000l),
WEEKLY(7*24*60*60*1000l);
Long interval;
Frequency(Long interval) {
this.interval = interval;
}
public Long getInterval() {
return interval;
}
}
}