IntegratedPersistenceBase.java
package com.tradecloud.domain.common;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.common.externalreference.ExternalReference;
import com.tradecloud.common.externalreference.IntegratedSystem;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;
import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @author ronan
*/
@MappedSuperclass
@XmlTransient
@XmlAccessorType(XmlAccessType.FIELD)
public class IntegratedPersistenceBase extends PersistenceBase {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
@Fetch(value = FetchMode.SELECT)
@XmlElementWrapper(name = "ExternalReferneces")
@XmlElement(name = "ExternalRefernece")
@JsonIgnore
private Set<ExternalReference> externalReferences = new HashSet<>();
public IntegratedPersistenceBase() {
}
public Set<ExternalReference> getExternalReferences() {
if (externalReferences == null) {
externalReferences = new HashSet<ExternalReference>();
}
return externalReferences;
}
public void setExternalReferences(Set<ExternalReference> externalReferences) {
getExternalReferences().clear();
getExternalReferences().addAll(externalReferences);
}
public List<ExternalReference> getExternalReferenceList() {
if (externalReferences == null) {
externalReferences = new HashSet<ExternalReference>();
}
return new ArrayList<ExternalReference>(externalReferences);
}
public void addExternalReference(ExternalReference externalReference) {
getExternalReferences().add(externalReference);
}
// @Transient
public boolean matchExternalReference(String externalReferenceValue, IntegratedSystem integratedSystem) {
if (externalReferences != null && getActive()) {
for (ExternalReference externalReference : externalReferences) {
if (externalReference.getReferenceValue().equals(externalReferenceValue)
&& externalReference.getIntegratedSystem().equals(integratedSystem)) {
return true;
}
}
}
return false;
}
// @Transient
public String getExternalReferenceValue(IntegratedSystem integratedSystem) {
if (externalReferences != null && getActive()) {
for (ExternalReference externalReference : externalReferences) {
if (externalReference.getIntegratedSystem().equals(integratedSystem)) {
return externalReference.getReferenceValue();
}
}
}
return null;
}
}