package net.stsmedia.financemanager.domain; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Version; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import org.springframework.core.style.ToStringCreator; /** * A JPA entity for the product domain object. This is an abstract class. * Concrete implementations are Loan, ManagedFund and Cash. * * @author Stefan Schmidt * @since 0.2 * */ @Entity public abstract class Product implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private java.lang.Long id; @Version @Column(name = "version") private java.lang.Integer version; @NotNull @Size(min = 1, max = 30) @Pattern(regexp = ".+", message = "Name must not be empty!") private String name; private String description; @NotNull private Double managementFee; public java.lang.Long getId() { return id; } public void setId(java.lang.Long id) { this.id = id; } public java.lang.Integer getVersion() { return version; } public void setVersion(java.lang.Integer version) { this.version = version; } public java.lang.String getName() { return name; } public void setName(java.lang.String name) { this.name = name; } public java.lang.String getDescription() { return description; } public void setDescription(java.lang.String description) { this.description = description; } public java.lang.Double getManagementFee() { return managementFee; } public void setManagementFee(java.lang.Double managementFee) { this.managementFee = managementFee; } public java.lang.String toString() { ToStringCreator tsc = new ToStringCreator(this); tsc.append("Name: " + getName()); tsc.append("Description: " + getDescription()); tsc.append("ManagementFee: " + getManagementFee()); return tsc.toString(); } }