/**
* =============================================================================
*
* ORCID (R) Open Source
* http://orcid.org
*
* Copyright (c) 2012-2014 ORCID, Inc.
* Licensed under an MIT-Style License (MIT)
* http://orcid.org/open-source-license
*
* This copyright and license information (including a link to the full license)
* shall be included in its entirety in all copies or substantial portion of
* the software.
*
* =============================================================================
*/
package org.orcid.persistence.jpa.entities;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import org.orcid.jaxb.model.message.Iso3166Country;
/**
*
* @author Will Simpson
*
*/
@Entity
@Table(name = "org")
public class OrgEntity extends BaseEntity<Long> implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String name;
private String city;
private String region;
private Iso3166Country country;
private String url;
private SourceEntity source;
private OrgDisambiguatedEntity orgDisambiguated;
@Override
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "org_seq")
@SequenceGenerator(name = "org_seq", sequenceName = "org_seq")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public String resolveName() {
if (orgDisambiguated == null) {
return name;
}
return orgDisambiguated.getName();
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public String resolveCity() {
if (orgDisambiguated == null) {
return city;
}
return orgDisambiguated.getCity();
}
public void setCity(String city) {
this.city = city;
}
public String getRegion() {
return region;
}
public String resolveRegion() {
if (orgDisambiguated == null) {
return region;
}
return orgDisambiguated.getRegion();
}
public void setRegion(String region) {
this.region = region;
}
@Basic
@Enumerated(EnumType.STRING)
public Iso3166Country getCountry() {
return country;
}
public Iso3166Country resolveCountry() {
if (orgDisambiguated == null) {
return country;
}
return orgDisambiguated.getCountry();
}
public void setCountry(Iso3166Country country) {
this.country = country;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public SourceEntity getSource() {
return source;
}
public void setSource(SourceEntity source) {
this.source = source;
}
@ManyToOne
@JoinColumn(name = "org_disambiguated_id")
public OrgDisambiguatedEntity getOrgDisambiguated() {
return orgDisambiguated;
}
public void setOrgDisambiguated(OrgDisambiguatedEntity orgDisambiguated) {
this.orgDisambiguated = orgDisambiguated;
}
}