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 implements IsSerializable {
	public enum Type implements IsSerializable {
		ARTICLE("article"),
		MONOGRAPH("monograph"),
		BOOK_CHAPTER("book chapter"),
		CONFERENCE_PROCS("Conference Procs");

		private String type;

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

		public String getType() {
			return type;
		}
	}

	private String id;
	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;
	private String alternativeTitle;
	private String alternativeDoi;
	private String license;
	private String eventDetails;

	public Publication() {
	}

	public Publication(String id) {
		this.id = id;
	}

	public String getId() {
		return id;
	}

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

	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;
	}

	public String getAlternativeTitle() {
		return alternativeTitle;
	}

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

	public String getAlternativeDoi() {
		return alternativeDoi;
	}

	public void setAlternativeDoi(String alternativeDoi) {
		this.alternativeDoi = alternativeDoi;
	}

	public String getLicense() {
		return license;
	}

	public void setLicense(String license) {
		this.license = license;
	}

	public String getEventDetails() {
		return eventDetails;
	}

	public void setEventDetails(String eventDetails) {
		this.eventDetails = eventDetails;
	}
}
