package de.uka.ipd.consensus.foundation.evolution;

import java.util.EventListener;

/**
 * The listener interface for receiving events that signal major or destructive changes in the ontology.
 * @author Thomas Much
 * @version 2006-06-14
 * @see de.uka.ipd.consensus.foundation.ontology.OntologyListener
 * @see de.uka.ipd.consensus.foundation.evolution.EvolutionManager#addEvolutionListener(EvolutionListener)
 */
public interface EvolutionListener extends EventListener {

	/**
	 * Called by the EvolutionManager when a topic is deleted.
	 * <p><code>EvolutionEvent.getConcept()</code> contains the deleted topic.</p>
	 * @param event the EvolutionEvent object containing the user and the deleted topic
	 * @see de.uka.ipd.consensus.foundation.evolution.EvolutionManager#deleteTopic(User, Topic)
	 * @see de.uka.ipd.consensus.foundation.evolution.EvolutionManager#deleteTopicAndSubtopics(User, Topic)
	 */
	public void topicDeleted(EvolutionEvent event);
	
	
	/**
	 * Called by the EvolutionManager when an association is deleted.
	 * <p><code>EvolutionEvent.getConcept()</code> contains the deleted association.</p>
	 * @param event the EvolutionEvent object containing the user and the deleted association
	 * @see de.uka.ipd.consensus.foundation.evolution.EvolutionManager#deleteAssociation(User, Association)
	 */
	public void associationDeleted(EvolutionEvent event);
	
	
	/**
	 * Called by the EvolutionManager when two topics are merged.
	 * <p><code>EvolutionEvent.getConcept()</code> contains one of the merged topics, <code>EvolutionEvent.getTopic()</code> the other.</p>
	 * @param event the EvolutionEvent object containing the user and the two merged topics
	 * @see de.uka.ipd.consensus.foundation.evolution.EvolutionManager#mergeTopics(User, Topic, Topic)
	 */
	public void topicsMerged(EvolutionEvent event);

}
