package eu.dnetlib.rmi.objects.is;

import java.util.Date;
import java.util.Map;
import java.util.Set;

import javax.xml.bind.annotation.XmlRootElement;

import com.google.common.collect.Maps;
import com.google.common.collect.Sets;

@XmlRootElement
public class DnetService extends DnetResource {

	private String name;
	private Map<String, String> protocols = Maps.newHashMap();
	private Map<String, String> properties = Maps.newHashMap();
	private Set<BlackboardMessageContainer> blackboard = Sets.newLinkedHashSet();
	private Set<Subscription> subscriptions = Sets.newLinkedHashSet();

	public DnetService() {}

	public DnetService(final String id, final String name, final Date date, final boolean valid, final Map<String, String> protocols,
			final Map<String, String> properties,
			final Set<BlackboardMessageContainer> blackboard, final Set<Subscription> subscriptions) {
		super(id, date, valid);
		this.name = name;
		this.protocols = protocols;
		this.properties = properties;
		this.blackboard = blackboard;
		this.subscriptions = subscriptions;
	}

	public String getName() {
		return name;
	}

	public void setName(final String name) {
		this.name = name;
	}

	public Map<String, String> getProtocols() {
		return protocols;
	}

	public void setProtocols(final Map<String, String> protocols) {
		this.protocols = protocols;
	}

	public Map<String, String> getProperties() {
		return properties;
	}

	public void setProperties(final Map<String, String> properties) {
		this.properties = properties;
	}

	public Set<BlackboardMessageContainer> getBlackboard() {
		return blackboard;
	}

	public void setBlackboard(final Set<BlackboardMessageContainer> blackboard) {
		this.blackboard = blackboard;
	}

	public Set<Subscription> getSubscriptions() {
		return subscriptions;
	}

	public void setSubscriptions(final Set<Subscription> subscriptions) {
		this.subscriptions = subscriptions;
	}

	@Override
	public String toString() {
		return String.format("[ id = %s, type = %s ]", getId(), name);
	}

}
