package net.stsmedia.financemanager.domain; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Version; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import org.springframework.core.style.ToStringCreator; /** * A JPA entity for the account domain object. * * @author Stefan Schmidt * @since 0.2 * */ @Entity public class Account implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private Long id; @Version @Column(name = "version") private Integer version; @NotNull @Pattern(regexp = ".+", message = "Name must not be empty!") private String name; @NotNull @OneToMany private Set<Person> owners = new HashSet<Person>(); @NotNull @ManyToOne @JoinColumn private Person manager; @OneToMany(cascade = CascadeType.ALL) private Set<Investment> investments = new HashSet<Investment>(); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Integer getVersion() { return version; } public void setVersion(Integer version) { this.version = version; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Person> getOwners() { return owners; } public void setOwners(Set<Person> owners) { this.owners = owners; } public void addOwner(Person person) { this.owners.add(person); } public Person getManager() { return manager; } public void setManager(Person manager) { this.manager = manager; } public Set<Investment> getInvestments() { return investments; } public void setInvestments(Set<Investment> investments) { this.investments = investments; } public void addInvestment(Investment investment) { this.investments.add(investment); } public String toString() { ToStringCreator tsc = new ToStringCreator(this); tsc.append("Name: " + getName()); tsc.append("Owners: " + owners.size()); tsc.append("Manager: " + getManager()); tsc.append("Investments: " + investments.size()); return tsc.toString(); } }