RFQStyle.java
package com.tradecloud.domain.model.requestforquote;
import com.tradecloud.domain.place.FinalDestination;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Entity
@Table(name = "RFQStyle")
@Access(AccessType.FIELD)
public class RFQStyle extends StockLevelRow implements Comparable {
private String productStyle;
private BigDecimal quantity;
@ManyToOne(fetch = FetchType.LAZY)
private RequestForQuote requestForQuote;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "RFQStyle_suppliedrqfProducts", joinColumns = {@JoinColumn(name = "RFQStyle_id")},
inverseJoinColumns = {@JoinColumn(name = "suppliedrqfProduct_id")})
private List<RFQProduct> suppliedRQFProducts = new ArrayList<>();
@OneToMany(mappedBy = "rfqStyle", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private List<RFQRegion> rfqRegions=new ArrayList<>();
public RFQStyle() {
}
public RFQStyle(String style, RequestForQuote forQuote) {
this.productStyle = style;
this.requestForQuote = forQuote;
}
public RFQStyle(String productStyle, BigDecimal quantity) {
this.productStyle = productStyle;
this.quantity = quantity;
}
@Override
public FinalDestination getFinalDestination(){
return null;
}
@Override
public boolean isProduct(){
return false;
}
public String getStyle(){
return productStyle;
}
public String getCode(){
return null;
}
public String getDescription(){
return null;
}
public String getProductStyle() {
return productStyle;
}
public void setProductStyle(String productStyle) {
this.productStyle = productStyle;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public RequestForQuote getRequestForQuote() {
return requestForQuote;
}
public void setRequestForQuote(RequestForQuote requestForQuote) {
this.requestForQuote = requestForQuote;
}
public List<RFQProduct> getSuppliedRQFProducts() {
return suppliedRQFProducts;
}
public void setSuppliedRQFProducts(List<RFQProduct> suppliedRQFProducts) {
this.suppliedRQFProducts = suppliedRQFProducts;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
RFQStyle rfqStyle = (RFQStyle) o;
return Objects.equals(productStyle, rfqStyle.productStyle) && Objects.equals(requestForQuote, rfqStyle.requestForQuote);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), productStyle, requestForQuote);
}
public boolean isProductLevel() {
return false;
}
@Override
public boolean isStyleLevel() {
return true;
}
@Override
public int compareTo(Object o) {
return 0;
}
public List<RFQProduct> getRfqProducts() {
return rfqRegions.stream().flatMap(rfqRegion -> rfqRegion.getRfqProducts().stream()).collect(Collectors.toList());
}
public List<RFQRegion> getRfqRegions() {
return rfqRegions;
}
public void setRfqRegions(List<RFQRegion> rfqRegions) {
this.rfqRegions = rfqRegions;
}
public void addRfqRegion(RFQRegion rfqRegion) {
rfqRegion.setRfqStyle(this);
rfqRegions.add(rfqRegion);
}
}