Java tutorial
/* * The MIT License * * Copyright 2014 Richard Casar <caricsvk@gmail.com>. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package milo.jersey.entities; import com.fasterxml.jackson.annotation.JsonView; import java.io.Serializable; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; 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.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.PrePersist; import javax.persistence.PreUpdate; import javax.persistence.Temporal; import utils.jpa.JsonViews; /** * * @author Richard Casar */ @Entity public class Order implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(scale = 2, precision = 36) private BigDecimal fee; @OneToMany private Collection<Product> products = new ArrayList<>(); @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Calendar created; @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Calendar modified; @ManyToOne(cascade = CascadeType.DETACH) @JsonView(JsonViews.Classic.class) private Client client; @PrePersist private void prePersist() { setCreated(Calendar.getInstance()); setModified(Calendar.getInstance()); } @PreUpdate private void preUpdate() { setModified(Calendar.getInstance()); } public BigDecimal getTotalAmount() { BigDecimal totalAmount = fee; for (Product product : products) { totalAmount = totalAmount.add(product.getPrice()); } return totalAmount; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Collection<Product> getProducts() { return products; } public void setProducts(Collection<Product> products) { this.products = products; } public Calendar getCreated() { return created; } public void setCreated(Calendar created) { this.created = created; } public Calendar getModified() { return modified; } public void setModified(Calendar modified) { this.modified = modified; } public Client getClient() { return client; } public void setClient(Client client) { this.client = client; } public BigDecimal getFee() { return fee; } public void setFee(BigDecimal fee) { this.fee = fee; } @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Order)) { return false; } Order other = (Order) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "milo.jersey.entities.Order[ id=" + id + " ]"; } }