/** * */ package org.squidy.nodes; import java.io.IOException; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlType; import org.squidy.manager.bridge.BridgeCallback; import org.squidy.manager.bridge.CSharpBridge; import org.squidy.manager.controls.FileChooser; import org.squidy.manager.controls.TextField; import org.squidy.manager.data.IDataContainer; import org.squidy.manager.data.Processor; import org.squidy.manager.data.Property; import org.squidy.manager.data.Processor.Status; import org.squidy.manager.model.AbstractNode; /** * <code>ZOIL</code>. * * <pre> * Date: 12.05.2010 * Time: 10:23:36 * </pre> * * @author Roman Rädle, <a * href="mailto:Roman.Raedle@uni-konstanz.de">Roman.Raedle@uni-konstanz.de</a>, * University of Konstanz * @version $Id: ZOIL.java 772 2011-09-16 15:39:44Z raedle $ * @since 1.5.0 */ @XmlType(name = "ZOIL") @Processor( name = "ZOIL", types = { Processor.Type.OUTPUT }, tags = { "zoil" }, status = Status.UNSTABLE ) public class ZOIL extends AbstractNode { // ################################################################################ // BEGIN OF ADJUSTABLES // ################################################################################ @XmlAttribute(name = "executable-path") @Property( name = "Executable path" ) @FileChooser private String executablePath = null; /** * @return the executablePath */ public final String getExecutablePath() { return executablePath; } /** * @param executablePath the executablePath to set */ public final void setExecutablePath(String executablePath) { this.executablePath = executablePath; } @XmlAttribute(name = "bridge-host") @Property( name = "Bridge host" ) @TextField private String bridgeHost = "127.0.0.1"; /** * @return the bridgeHost */ public final String getBridgeHost() { return bridgeHost; } /** * @param bridgeHost the bridgeHost to set */ public final void setBridgeHost(String bridgeHost) { this.bridgeHost = bridgeHost; } @XmlAttribute(name = "bridge-port") @Property( name = "Bridge port" ) @TextField private int bridgePort = 3537; /** * @return the bridgePort */ public final int getBridgePort() { return bridgePort; } /** * @param bridgePort the bridgePort to set */ public final void setBridgePort(int bridgePort) { this.bridgePort = bridgePort; } // ################################################################################ // END OF ADJUSTABLES // ################################################################################ private CSharpBridge bridge; public ZOIL() { bridge = new CSharpBridge(); bridge.setCallback(new BridgeCallback() { public void opened() { if (!isProcessing()) { start(); } } public void closed() { if (isProcessing()) { stop(); } } }); } /* (non-Javadoc) * @see org.squidy.manager.model.AbstractNode#onStart() */ @Override public void onStart() { super.onStart(); try { bridge.setExecutablePath(executablePath); bridge.setHost(bridgeHost); bridge.setPort(bridgePort); bridge.open(); } catch (IOException e) { e.printStackTrace(); } } /* (non-Javadoc) * @see org.squidy.manager.model.AbstractNode#onStop() */ @Override public void onStop() { try { bridge.close(); } catch (IOException e) { e.printStackTrace(); } super.onStop(); } /* (non-Javadoc) * @see org.squidy.manager.model.AbstractNode#preProcess(org.squidy.manager.data.IDataContainer) */ @Override public IDataContainer preProcess(IDataContainer dataContainer) { try { bridge.publish(dataContainer); } catch (IOException e) { e.printStackTrace(); } return super.preProcess(dataContainer); } }