package eu.dnetlib.openaire.db.objects;

import java.io.Serializable;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity(name = "organizations")
@Table(name = "organizations")
public class Organization implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1582153692874035819L;

	@Id
	@Column(name = "organizationID")
	private String organizationID;
	
	@OneToMany(mappedBy="organization", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
	private Collection<AuthorShip>  authorShips;
	
	@ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE}, mappedBy="organizations")
	private Collection<Project> projects;
	
	@ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE}, mappedBy="organizations")
	private Collection<DataSource> dataSources;
	
	@Column(name = "legal_short_name")
	private String legalShortName;
	
	@Column(name = "legal_name")
	private String legalName;
	
	@Column(name = "legal_status")
	private String legalStatus;
	
	@Column(name = "cpf_participant_number")
	private String cpfParticipantNumber;
	
	@Column(name = "web_site_URL")
	private String webSiteURL;
	
	@Column(name = "logo_URL", nullable=true)
	private String logoURL;
							
	@Column(name = "country_of_origin")
	private String countryOfOrigin;

	public String getOrganizationID() {
		return organizationID;
	}

	public void setOrganizationID(String organizationID) {
		this.organizationID = organizationID;
	}

	public Collection<AuthorShip> getAuthorShips() {
		return authorShips;
	}

	public void setAuthorShips(Collection<AuthorShip> authorShips) {
		this.authorShips = authorShips;
	}

	public Collection<Project> getProjects() {
		return projects;
	}

	public void setProjects(Collection<Project> projects) {
		this.projects = projects;
	}

	public Collection<DataSource> getDataSources() {
		return dataSources;
	}

	public void setDataSources(Collection<DataSource> dataSources) {
		this.dataSources = dataSources;
	}

	public String getLegalShortName() {
		return legalShortName;
	}

	public void setLegalShortName(String legalShortName) {
		this.legalShortName = legalShortName;
	}

	public String getLegalName() {
		return legalName;
	}

	public void setLegalName(String legalName) {
		this.legalName = legalName;
	}

	public String getLegalStatus() {
		return legalStatus;
	}

	public void setLegalStatus(String legalStatus) {
		this.legalStatus = legalStatus;
	}

	public String getCpfParticipantNumber() {
		return cpfParticipantNumber;
	}

	public void setCpfParticipantNumber(String cpfParticipantNumber) {
		this.cpfParticipantNumber = cpfParticipantNumber;
	}

	public String getWebSiteURL() {
		return webSiteURL;
	}

	public void setWebSiteURL(String webSiteURL) {
		this.webSiteURL = webSiteURL;
	}

	public String getLogoURL() {
		return logoURL;
	}

	public void setLogoURL(String logoURL) {
		this.logoURL = logoURL;
	}

	public String getCountryOfOrigin() {
		return countryOfOrigin;
	}

	public void setCountryOfOrigin(String countryOfOrigin) {
		this.countryOfOrigin = countryOfOrigin;
	}

	
}
