/*
 * Created on Jul 28, 2008 (C) Copyright TANDBERG Television Ltd.
 */

package com.tandbergtv.watchpoint.pmm.title.provider;

import java.util.Collection;

/**
 * Maintains the basic state required when constructing a Title Provider.
 * 
 * @author Vijay Silva
 */
public interface ITitleProviderProperties {

	/**
	 * Returns the title provider id. This is equivalent to the concept of a systemId that is also
	 * currently used by resource types.
	 * 
	 * @return The Title Provider System ID
	 */
	String getSystemID();

	/**
	 * Set the System ID for this title provider
	 * 
	 * @param systemId The System Id
	 */
	void setSystemID(String systemId);

	/**
	 * Returns the name of the title provider
	 * 
	 * @return The title provider name
	 */
	String getName();

	/**
	 * Set the name for the title provider
	 * 
	 * @param name The title provider name
	 */
	void setName(String name);

	/**
	 * Returns the list of metadata specification formats that the provider supports
	 * 
	 * @return A collection of the specification names supported by this provider
	 */
	Collection<String> getSupportedSpecifications();

	/**
	 * Set the specifications supported by this Title Provider
	 * 
	 * @param specifications The specifications supported by this provider
	 */
	void setSupportedSpecifications(Collection<String> specifications);

	/**
	 * Returns the class that performs a search of titles using arbitrary criteria
	 * 
	 * @return
	 */
	ITitleSearchStrategy getSearchStrategy();

	/**
	 * Set the Search Strategy for the Title Provider
	 * 
	 * @param strategy The Title Search Strategy
	 */
	void setSearchStrategy(ITitleSearchStrategy strategy);
}
