package com.github.ryoasai.springmvc.example.flashmap;
import java.math.BigDecimal;
import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style;
public class Account {
private Long id;
@NotNull
@Size(min=1, max=25)
private String name;
@NotNull
@NumberFormat(style=Style.CURRENCY)
private BigDecimal balance = new BigDecimal("1000");
@NotNull
@NumberFormat(style=Style.PERCENT)
private BigDecimal equityAllocation = new BigDecimal(".60");
@DateTimeFormat(style="S-")
@Future
private Date renewalDate = new Date(new Date().getTime() + 31536000000L);
public Long getId() {
return id;
}
void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigDecimal getBalance() {
return balance;
}
public void setBalance(BigDecimal balance) {
this.balance = balance;
}
public BigDecimal getEquityAllocation() {
return equityAllocation;
}
public void setEquityAllocation(BigDecimal equityAllocation) {
this.equityAllocation = equityAllocation;
}
public Date getRenewalDate() {
return renewalDate;
}
public void setRenewalDate(Date renewalDate) {
this.renewalDate = renewalDate;
}
Long assignId() {
this.id = idSequence.incrementAndGet();
return id;
}
private static final AtomicLong idSequence = new AtomicLong();
}