package de.uka.ipd.consensus.foundation;

import de.uka.ipd.consensus.foundation.evolution.EvolutionManager;
import de.uka.ipd.consensus.foundation.logging.LoggingManager;
import de.uka.ipd.consensus.foundation.ontology.OntologyManager;
import de.uka.ipd.consensus.foundation.rating.RatingManager;
import de.uka.ipd.consensus.foundation.rights.DynamicRightsManager;
import de.uka.ipd.consensus.foundation.scoring.IncentiveManager;
import de.uka.ipd.consensus.foundation.user.UserManager;

/**
 * A mixin interface that offers easy access to all seven managers of the ConsensusFoundation framework.
 * @author Thomas Much
 * @version 2006-06-14
 */
public interface ConsensusFoundationManager {

	/**
	 * Returns a reference to the LoggingManager.
	 * @return the LoggingManager instance, never <code>null</code> after successful startup
	 */
	public LoggingManager getLoggingManager();

	
	/**
	 * Returns a reference to the UserManager.
	 * @return the UserManager instance, never <code>null</code> after successful startup
	 */
	public UserManager getUserManager();

	
	/**
	 * Returns a reference to the OntologyManager.
	 * @return the OntologyManager instance, never <code>null</code> after successful startup
	 */
	public OntologyManager getOntologyManager();

	
	/**
	 * Returns a reference to the EvolutionManager.
	 * @return the EvolutionManager instance or <code>null</code> if an EvolutionManager is not available
	 */
	public EvolutionManager getEvolutionManager();

	
	/**
	 * Returns a reference to the IncentiveManager.
	 * @return the IncentiveManager instance or <code>null</code> if an IncentiveManager is not available
	 */
	public IncentiveManager getIncentiveManager();

	
	/**
	 * Returns a reference to the RatingManager.
	 * @return the RatingManager instance or <code>null</code> if a RatingManager is not available
	 */
	public RatingManager getRatingManager();
	
	
	/**
	 * Returns a reference to the DynamicRightsManager.
	 * @return the DynamicRightsManager instance or <code>null</code> if a DynamicRightsManager is not available
	 */
	public DynamicRightsManager getDynamicRightsManager();
	
	
	/**
	 * Returns a version string of the implementation of the ConsensusFoundation framework.
	 * @return the version of the framework's implementation
	 * @see ConsensusFoundation#getVersion()
	 */
	public String getVersion();
}
