package com.tandbergtv.watchpoint.pmm.title.conf;

import java.util.Collection;
import java.util.Map;
import java.util.Set;

import com.tandbergtv.workflow.core.service.Service;

public interface ISpecificationManager extends Service {

	/**
	 * Gets all the specifications.
	 * 
	 * @return	the collection of specifications
	 */
	Collection<Specification> getAllSpecifications();

	/**
	 * Gets specification identified by the given name.
	 * 
	 * @param name	the name of the specification
	 * @return		the specification of the given name;
	 * 				null, if required specification not found
	 */
	Specification getSpecificationByName(String name);

	/**
	 * Gets the Job Rule Menu Options grouped by Specification.
	 * 
	 * @return	map of spec name to set of job rule menu options
	 */
	Map<String, Set<String>> getJobRuleMenuOptions();

	/**
	 * Gets the Job Parameter Menu Options grouped by Specification.
	 * 
	 * @return	map of spec name to set of job parameter menu options
	 */
	Map<String, Set<String>> getJobParameterMenuOptions();

	/**
	 * Adds the specified metadata specification
	 * 
	 * @param specification
	 */
	void addSpecification(Specification specification);
}