/**
*
*/
package org.goko.core.feature;
import java.util.List;
import org.goko.core.common.exception.GkException;
/**
* Manager for feature set handling. A IFeatureSet represents features related to a specific controller
*
* @author PsyKo
*
*/
public interface IFeatureSetManager {
public static final String TOPIC_TARGET_BOARD_PROPERTY = "topic/featureSet/property/targetboard";
/**
* Register the given {@link IFeatureSet}
* @param featureSet the feature set to register
* @throws GkException GkException
*/
void addFeatureSet(IFeatureSet featureSet) throws GkException;
/**
* Check if the given target board id is supported by a registered {@link IFeatureSet}
* @param targetBoardId the ID of the target board
* @return <code>true</code> if a {@link IFeatureSet} matches the board, <code>false</code> otherwise
*/
boolean existTargetBoard(String targetBoardId);
/**
* Returns the list of supported board
* @return the list of supported boards
*/
List<TargetBoard> getSupportedBoards();
/**
* Set the given id as the current target board
* @param id the id of the target board to use
* @throws GkException GkException
*/
void setTargetBoard(String id) throws GkException;
/**
* Starts the feature set registered for the current target board
* @throws GkException GkException
*/
void startFeatureSet() throws GkException;
/**
* Returns the currently active target board
* @return the currently active target board
* @throws GkException
*/
TargetBoard getCurrentTargetBoard() throws GkException;
}