package AIClientFacade.Implementation; import AIClientFacade.Interface.IAIClientFacade; import AIRunner.Interface.IAIRunner; import AIRunner.Interface.IAIRunnerEventHandler; import AIRunner.Interface.SessionRunningException; import AgentSystemManagement.Interface.IAgentSystemManagement; import AgentSystemPluginAPI.Contract.TAgentSystemDescription; import EnvironmentPluginAPI.Exceptions.TechnicalException; import NetworkAdapter.Interface.Exceptions.HostUnreachableException; import NetworkAdapter.Interface.Exceptions.NotConnectedException; import NetworkAdapter.Interface.IClientNetworkAdapter; import PluginLoader.Interface.Exceptions.PluginNotReadableException; import ZeroTypes.Settings.SettingException; import java.security.InvalidParameterException; import java.util.List; /** * This class implements the encapsulation of the AI Client's application core. */ public class AIClientFacade implements IAIClientFacade { private final IClientNetworkAdapter clientNetworkAdapter; private final IAIRunner aiRunner; private final IAgentSystemManagement agentSystemManagement; public AIClientFacade(IClientNetworkAdapter clientNetworkAdapter, IAIRunner aiRunner, IAgentSystemManagement agentSystemManagement) { this.clientNetworkAdapter = clientNetworkAdapter; this.aiRunner = aiRunner; this.agentSystemManagement = agentSystemManagement; } //region ClientNetworkAdapter @Override public boolean isConnected() { return clientNetworkAdapter.isConnected(); } @Override public int getClientId() throws NotConnectedException { return clientNetworkAdapter.getClientId(); } //endregion //region Description @Override public void connectToServer(TAgentSystemDescription agentSystemDescription, String hostname, int port) throws HostUnreachableException, InvalidParameterException, PluginNotReadableException, TechnicalException { aiRunner.connectToServer(agentSystemDescription, hostname, port); } @Override public void addListener(IAIRunnerEventHandler networkEventHandler) { aiRunner.addListener(networkEventHandler); } @Override public void disconnect() throws SessionRunningException { aiRunner.disconnect(); } @Override public List<TAgentSystemDescription> getAvailableAgentSystems() throws TechnicalException, SettingException, PluginNotReadableException { return agentSystemManagement.getAvailableAgentSystems(); } //endregion }