package org.multibit.mbm.core.model; import com.google.common.collect.Sets; import org.multibit.mbm.utils.ObjectUtils; import javax.persistence.*; import java.io.Serializable; import java.util.Set; /** * <p>DTO to provide the following to the application</p> * <ul> * <li>Provision of persistent state</li> * </ul> * <p>A Supplier describes the minimum information required to describe an entity capable of providing stock</p> * <p>A Supplier works with a Buyer to receive PurchaseOrders</p> */ @Entity @Table(name = "suppliers") public class Supplier implements Serializable { private static final long serialVersionUID = 32324950734295L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) private Long id = null; /** * A Supplier has many Deliveries */ @OneToOne(mappedBy = "supplier") private User user = null; @OneToMany( targetEntity = Delivery.class, cascade = {CascadeType.ALL}, mappedBy = "supplier", orphanRemoval = true ) private Set<Delivery> deliveries = Sets.newLinkedHashSet(); @OneToMany( targetEntity = PurchaseOrder.class, cascade = {CascadeType.ALL}, mappedBy = "supplier", orphanRemoval = true ) private Set<PurchaseOrder> purchaseOrders = Sets.newLinkedHashSet(); /* * Default constructor required for Hibernate */ public Supplier() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Set<Delivery> getDeliveries() { return deliveries; } public void setDeliveries(Set<Delivery> deliveries) { this.deliveries = deliveries; } public Set<PurchaseOrder> getPurchaseOrders() { return purchaseOrders; } public void setPurchaseOrders(Set<PurchaseOrder> purchaseOrders) { this.purchaseOrders = purchaseOrders; } /** * @return The User associated with this Customer */ public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Supplier other = (Supplier) obj; return ObjectUtils.isEqual( id, other.id ); } @Override public int hashCode() { return ObjectUtils.getHashCode(id); } @Override public String toString() { return String.format("Supplier[id=%s]]", id); } }