package src.fr.api;
import java.util.Set;
public interface CompatibilityManager extends CompatibilityChecker {

    /*
     * add a incompatibles PartType to a PartType
     * @param reference : the PartType that we wish to add incompatibilities
     * @param target : Set list of incompatibilities PartType to add
     */
    void addIncompatibilities(PartType reference,Set<PartType> target);

    /*
     * remove a PartType of the incompatibilities of a PartType, warning,
     * warning : we must also remove the incompatibility from all the other PartTypes which the @param reference in their incompatibility
     * @param reference : the PartType that we wish to remove a incompatible PartType
     * @param target : PartType to remove of incompatibility
     */
    void removeIncompatibility(PartType reference, PartType target);


    /*
     * add requirements PartType to a PartType
     * @param reference : the PartType that we wish to add requirements
     * @param target : Set list of requirement PartType to add
     */    
    void addRequirements(PartType reference, Set<PartType> target);

    /*
     * remove a PartType of the incompatibilities of a PartType 
     * @param reference : the PartType that we wish to remove a requirement PartType
     * @param target : PartType to remove of requirement
     */
    void removeRequirement(PartType reference, PartType target);
}