TradeAgreements.java
package com.tradecloud.domain.configuration;
/**
* Created by ds on 2015/07/16.
*/
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.duties.TradeAgreement;
import com.tradecloud.domain.place.Country;
import org.hibernate.annotations.ForeignKey;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "tradeagreements")
@XmlRootElement(name = "TradeAgreements")
public class TradeAgreements extends PersistenceBase {
private static final long serialVersionUID = 1L;
/**
* The applicable trade agreement.
*/
@XmlAttribute
@Enumerated(value = EnumType.STRING)
@NotNull
private TradeAgreement tradeAgreement;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "tradeagreements_countries",
joinColumns = @JoinColumn(name = "tradeagreement_id"),
inverseJoinColumns = @JoinColumn(name = "country_code"))
@ForeignKey(name = "fk_tradeagreements", inverseName = "fk_country_code")
@XmlElementWrapper(name = "Countries")
@XmlElement(name = "Country")
private Set<Country> countries = new HashSet<Country>();
@XmlAttribute
@NotNull
private boolean active;
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public Set<Country> getCountries() {
return countries;
}
public void setCountries(Set<Country> countries) {
this.countries = countries;
}
public TradeAgreement getTradeAgreement() {
return tradeAgreement;
}
public void setTradeAgreement(TradeAgreement tradeAgreement) {
this.tradeAgreement = tradeAgreement;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof TradeAgreements)) return false;
if (!super.equals(o)) return false;
TradeAgreements that = (TradeAgreements) o;
if (isActive() != that.isActive()) return false;
if (getTradeAgreement() != that.getTradeAgreement()) return false;
return getCountries().equals(that.getCountries());
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + getTradeAgreement().hashCode();
result = 31 * result + getCountries().hashCode();
result = 31 * result + (isActive() ? 1 : 0);
return result;
}
}