package edu.harvard.iq.dataverse;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
*
* @author Leonid Andreev
*/
@Table( uniqueConstraints = @UniqueConstraint(columnNames={"foreignMetadataFormatMapping_id","foreignFieldXpath"})
, indexes = {@Index(columnList="foreignmetadataformatmapping_id")
, @Index(columnList="foreignfieldxpath")
, @Index(columnList="parentfieldmapping_id")})
@NamedQueries({
@NamedQuery( name="ForeignMetadataFieldMapping.findByPath",
query="SELECT fmfm FROM ForeignMetadataFieldMapping fmfm WHERE fmfm.foreignMetadataFormatMapping.name=:formatName AND fmfm.foreignFieldXPath=:xPath")
})
@Entity
public class ForeignMetadataFieldMapping implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@ManyToOne(cascade = CascadeType.MERGE)
private ForeignMetadataFormatMapping foreignMetadataFormatMapping;
@Column(name = "foreignFieldXPath", columnDefinition = "TEXT")
private String foreignFieldXPath;
@Column(name = "datasetfieldName", columnDefinition = "TEXT")
private String datasetfieldName;
@OneToMany(mappedBy = "parentFieldMapping", cascade = {CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST})
private Collection<ForeignMetadataFieldMapping> childFieldMappings;
@ManyToOne(cascade = CascadeType.MERGE)
private ForeignMetadataFieldMapping parentFieldMapping;
private boolean isAttribute;
/* getters/setters: */
public ForeignMetadataFormatMapping getForeignMetadataFormatMapping() {
return foreignMetadataFormatMapping;
}
public void setForeignMetadataFormatMapping(ForeignMetadataFormatMapping foreignMetadataFormatMapping) {
this.foreignMetadataFormatMapping = foreignMetadataFormatMapping;
}
public String getForeignFieldXPath() {
return foreignFieldXPath;
}
public void setForeignFieldXPath(String foreignFieldXPath) {
this.foreignFieldXPath = foreignFieldXPath;
}
public String getDatasetfieldName() {
return datasetfieldName;
}
public void setDatasetfieldName(String datasetfieldName) {
this.datasetfieldName = datasetfieldName;
}
public Collection<ForeignMetadataFieldMapping> getChildFieldMappings() {
return this.childFieldMappings;
}
public void setChildFieldMappings(Collection<ForeignMetadataFieldMapping> childFieldMappings) {
this.childFieldMappings = childFieldMappings;
}
/*
public Collection<ForeignMetadataFieldMapping> getAttributeMappings() {
return this.attributeMappings;
}
public void setAttributeMappings(Collection<ForeignMetadataFieldMapping> attributeMappings) {
this.attributeMappings = attributeMappings;
}
*/
public ForeignMetadataFieldMapping getParentFieldMapping() {
return parentFieldMapping;
}
public void setParentFieldMapping(ForeignMetadataFieldMapping parentFieldMapping) {
this.parentFieldMapping = parentFieldMapping;
}
public boolean isAttribute() {
return isAttribute;
}
public void setIsAttribute(boolean isAttribute) {
this.isAttribute = isAttribute;
}
/* logical: */
public boolean isChild() {
return this.parentFieldMapping != null;
}
public boolean HasChildren() {
return !this.childFieldMappings.isEmpty();
}
/*
public boolean HasAttributes() {
return !this.attributeMappings.isEmpty();
}
*/
public boolean HasParent() {
return this.parentFieldMapping != null;
}
/* overrides: */
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof ForeignMetadataFieldMapping)) {
return false;
}
ForeignMetadataFieldMapping other = (ForeignMetadataFieldMapping) object;
return !((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id)));
}
@Override
public String toString() {
return "edu.harvard.iq.dataverse.ForeignMetadataFieldMapping[ id=" + id + " ]";
}
}