package hudson.plugins.tuxdroid; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; import java.rmi.ConnectException; import java.util.logging.Logger; import com.tuxisalive.api.TuxAPI; import com.tuxisalive.api.TuxAPIConst; public class TuxDroid { private boolean connected = false; private TuxAPI tux = null; private static TuxDroid instance = null; private static Logger log = null; URL tuxUrl = null; TuxDroid(){ } public static TuxDroid getInstance(){ if (instance == null){ instance = new TuxDroid();; } return instance; } public boolean isConnected(){ return connected; } public static void setLog(Logger logger){ log = logger; } public static void onAllEvent(String name, String value, Double delay) { } public static void onSoundEvent( String value, Double delay) { } public void connect(String tuxDroidUrl) throws Exception{ if (isConnected()) return; this.tuxUrl = new URL(tuxDroidUrl); tux = new TuxAPI(tuxUrl.getHost(), tuxUrl.getPort()); if (!tux.server.getConnected().booleanValue()){ tux.server.autoConnect(TuxAPIConst.CLIENT_LEVEL_RESTRICTED, "hudsonPublisher", "0000"); tux.server.waitConnected(Double.valueOf("0.5")); tux.event.handler.register(TuxAPIConst.ST_NAME_TTS_SOUND_STATE, this, "onSoundEvent"); connected = true; } if (! tux.server.getConnected()){ throw new Exception("Unable to Connect"); } } public void disconnect() throws MalformedURLException{ if (!isConnected()) return; if (tux != null){ tux.server.disconnect(); connected = false; } } public TuxAPI getTuxAPI() throws ConnectException, URISyntaxException{ if (isConnected()) return tux; throw new ConnectException(tuxUrl.toURI().toString()); } }