package eu.dnetlib.goldoa.domain;

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

import java.util.Date;
import java.util.List;

/**
 * Created by antleb on 3/13/15.
 */
public class Publication extends GoldBean implements IsSerializable {
	public enum Type implements IsSerializable {
		ARTICLE("article"),
		MONOGRAPH("monograph");

		private String type;

		Type(String type) {
			this.type = type;
		}

		public String getType() {
			return type;
		}
	}

	private String title;
	private String languages;
	private String subjects;
	private String doi;
	private Date publicationDate;
    private Date acceptanceDate;
	private Type type;
	private Journal journal;
	private Publisher publisher;
	private List<Affiliation> authors;
	private List<PublicationIdentifier> identifiers;
    private String repository;
	private String source;

	public Publication() {
	}

    public Publication(String id, String title, String languages, String subjects, String doi, Date publicationDate, Date acceptanceDate, Type type, Journal journal, Publisher publisher, List<Affiliation> authors, List<PublicationIdentifier> identifiers, String repository, String source) {
        super(id);
        this.title = title;
        this.languages = languages;
        this.subjects = subjects;
        this.doi = doi;
        this.publicationDate = publicationDate;
        this.acceptanceDate = acceptanceDate;
        this.type = type;
        this.journal = journal;
        this.publisher = publisher;
        this.authors = authors;
        this.identifiers = identifiers;
        this.repository = repository;
        this.source = source;
    }

	public String getTitle() {
		return title;
	}

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

	public String getLanguages() {
		return languages;
	}

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

	public String getSubjects() {
		return subjects;
	}

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

	public String getDoi() {
		return doi;
	}

	public void setDoi(String doi) {
		this.doi = doi;
	}

	public Date getPublicationDate() {
		return publicationDate;
	}

	public void setPublicationDate(Date publicationDate) {
		this.publicationDate = publicationDate;
	}

	public Type getType() {
		return type;
	}

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

	public Journal getJournal() {
		return journal;
	}

	public void setJournal(Journal journal) {
		this.journal = journal;
	}

	public Publisher getPublisher() {
		return publisher;
	}

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

	public List<Affiliation> getAuthors() {
		return authors;
	}

	public void setAuthors(List<Affiliation> authors) {
		this.authors = authors;
	}

	public String getSource() {
		return source;
	}

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

	public List<PublicationIdentifier> getIdentifiers() {
		return identifiers;
	}

	public void setIdentifiers(List<PublicationIdentifier> identifiers) {
		this.identifiers = identifiers;
	}

    public String getRepository() {
        return repository;
    }

    public void setRepository(String repository) {
        this.repository = repository;
    }

    public Date getAcceptanceDate() {
        return acceptanceDate;
    }

    public void setAcceptanceDate(Date acceptanceDate) {
        this.acceptanceDate = acceptanceDate;
    }
}
