package eu.dnetlib.domain.functionality;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import eu.dnetlib.domain.DriverResource;

/**
 * 
 * The domain object for the Collection resource data structure
 * 
 */
public class Collection extends DriverResource {
	private static final long serialVersionUID = 6325631170397780724L;

	private String Name = null;  // +
	private String Owner = null; // +
	private String Father = null;  // -
	private List<String> description = new ArrayList<String>(); // +
	private String Subject = null; // -
	private boolean Private = true;
	private boolean Visible = false;
	private boolean Container = false;
	private Set<String> Children = new HashSet<String>(); // -
	private String Query = null;  // + (timi an container = false)
	private int DocumentCount = 0; 
	private Date LastUpdateDate = null; // -
	private boolean Frozen = false;
	private String iconUrl = null;  // -
//	private String requester = null;	// TODO remove it if not needed. Shouldn't be...
	private String retrievalCondition = null;
	
	public String getRetrievalCondition() {
		return retrievalCondition;
	}

	public void setRetrievalCondition(String retrievalCondition) {
		this.retrievalCondition = retrievalCondition;
	}

	/**
	 * The default constructor sets the resourceKind to <b>CollectionDSResources</b>, 
	 * resourceType to <b>CollectionDSResourceType</b> and dateOfCreation to the current system date.
	 */
	public Collection() {
		this.setResourceKind("CollectionDSResources");
		this.setResourceType("CollectionDSResourceType");
		this.setDateOfCreation(new Date());
	}
	
	@Deprecated
	public String getId() {
		return this.getResourceId();
	}
	@Deprecated
	public void setId(String id) {
		this.setResourceId(id);
	}
	public String getIconUrl() {
		return iconUrl;
	}
	public void setIconUrl(String iconUrl) {
		this.iconUrl = iconUrl;
	}
	public Set<String> getChildren() {
		return Children;
	}
	public void setChildren(Set<String> children) {
		Children = children;
	}
	public boolean isContainer() {
		return Container;
	}
	public void setContainer(boolean container) {
		Container = container;
	}
	public int getDocumentCount() {
		return DocumentCount;
	}
	public void setDocumentCount(int documentCount) {
		DocumentCount = documentCount;
	}
	public String getFather() {
		return Father;
	}
	public void setFather(String father) {
		Father = father;
	}
	public boolean isFrozen() {
		return Frozen;
	}
	public void setFrozen(boolean frozen) {
		Frozen = frozen;
	}
	public Date getLastUpdateDate() {
		return LastUpdateDate;
	}
	public void setLastUpdateDate(Date lastUpdateDate) {
		LastUpdateDate = lastUpdateDate;
	}
	public String getName() {
		return Name;
	}
	public void setName(String name) {
		Name = name;
	}
	public String getOwner() {
		return Owner;
	}
	public void setOwner(String owner) {
		Owner = owner;
	}
	public boolean isPrivate() {
		return Private;
	}
	public void setPrivate(boolean private1) {
		Private = private1;
	}
	public String getQuery() {
		return Query;
	}
	public void setQuery(String query) {
		Query = query;
	}
	public String getSubject() {
		return Subject;
	}
	public void setSubject(String subject) {
		Subject = subject;
	}
	public boolean isVisible() {
		return Visible;
	}
	public void setVisible(boolean visible) {
		Visible = visible;
	}
	public List<String> getDescription() {
		return description;
	}
	public void setDescription(List<String> description) {
		this.description = description;
	}
//	public String getRequester() {
//		return requester;
//	}
//	public void setRequester(String requester) {
//		this.requester = requester;
//	}
}