package net.stsmedia.financemanager.domain; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.OneToMany; import javax.validation.constraints.NotNull; import org.springframework.core.style.ToStringCreator; /** * A JPA entity for the loan domain object. * * @author Stefan Schmidt * @since 0.2 * */ @Entity public class Loan extends Product { @NotNull() private Float interest; @NotNull private Double principal; @NotNull @OneToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH }) private Set<Person> lenders = new HashSet<Person>(); public Float getInterest() { return interest; } public void setInterest(Float interest) { this.interest = interest; } public Double getPrincipal() { return principal; } public void setPrincipal(Double principal) { this.principal = principal; } public Set<Person> getLenders() { return lenders; } public void setLenders(Set<Person> lenders) { this.lenders = lenders; } public String toString() { ToStringCreator tsc = new ToStringCreator(this); tsc.append("Name: " + getName()); tsc.append("Description: " + getDescription()); tsc.append("ManagementFee: " + getManagementFee()); tsc.append("Interest: " + getInterest()); tsc.append("Principal: " + getPrincipal()); tsc.append("Lenders: " + lenders.size()); return tsc.toString(); } }