package eu.dnetlib.goldoa.domain;

import com.google.gwt.user.client.rpc.IsSerializable;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;


/**
 * The persistent class for the journal database table.
 * 
 */
@Entity
@NamedQuery(name="Journal.findAll", query="SELECT j FROM Journal j")
public class Journal implements IsSerializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(columnDefinition = "text")
	private String id;
	@Column(columnDefinition = "text")
	private String alttitle;
	@Column(columnDefinition = "float NOT NULL")
	private double apc;
	@Column(columnDefinition = "float NOT NULL")
	private double discount;
	@Column(columnDefinition = "text")
	private String issn;
	
	@Column(columnDefinition = "text")
	private String licence;
	@Column(columnDefinition = "text")
	private String source;
	@Column(columnDefinition = "text")
	private String status;
	@Column(columnDefinition = "text")
	private String subjects;
	@Column(columnDefinition = "text")
	private String title;
	@Column(columnDefinition = "text")
	private String type;
	@Column(columnDefinition = "text")
	private String url;
	@Column(columnDefinition = "text")
	private String languages;

	@Column(columnDefinition = "text")
	private String country;

	@Basic
	@Convert( converter=CurrencyConverter.class )
	private Currency apccurrency = Currency.EUR;

	@OneToOne
    @JoinColumn(name = "publisher")
	private Publisher publisher;

	@OneToMany(mappedBy = "pk.journal",cascade=CascadeType.ALL)
	private List<JournalDiscount> discounts = new ArrayList<>();
	
	
	public Journal() {}

	public String getAlttitle() {
		return this.alttitle;
	}

	public void setAlttitle(String alttitle) {
		this.alttitle = alttitle;
	}

	public double getApc() {
		return this.apc;
	}

	public void setApc(double apc) {
		this.apc = apc;
	}

	public Currency getApccurrency() {
		return this.apccurrency;
	}

	public void setApccurrency(Currency apccurrency) {
		this.apccurrency = apccurrency;
	}

	public String getCountry() {
		return this.country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	public double getDiscount() {
		return this.discount;
	}

	public void setDiscount(double discount) {
		this.discount = discount;
	}

	public String getId() {
		return this.id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getIssn() {
		return this.issn;
	}

	public void setIssn(String issn) {
		this.issn = issn;
	}

	public String getLanguages() {
		return languages;
	}

	public void setLanguages(String languages) {
		this.languages = languages;
	}

	public String getLicence() {
		return this.licence;
	}

	public void setLicence(String licence) {
		this.licence = licence;
	}

	public Publisher getPublisher() {
		return this.publisher;
	}

	public void setPublisher(Publisher publisher) {
		this.publisher = publisher;
	}

	public String getSource() {
		return this.source;
	}

	public void setSource(String source) {
		this.source = source;
	}

	public String getStatus() {
		return this.status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getSubjects() {
		return this.subjects;
	}

	public void setSubjects(String subjects) {
		this.subjects = subjects;
	}

	public String getTitle() {
		return this.title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getType() {
		return this.type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getUrl() {
		return this.url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

    public void setAlternativeTitle(String alternativeTitle) {
        this.alttitle = alternativeTitle;
    }

}