package com.pivotalservices.java2r; import org.rosuda.REngine.REngine; import org.rosuda.REngine.REngineStdOutput; class RStdOutputListner extends REngineStdOutput { private final R r; private RLogger logger; RStdOutputListner(R r) { this.r = r; } @Override public void RWriteConsole(REngine engine, String text, int oType) { if (r.getLogger().isDebugEnabled()) { super.RWriteConsole(engine, text, oType); } if (logger != null) { logger.append(oType, text); } } void registerLogger(RLogger logger) { this.logger = logger; } void unregisterLogger(RLogger logger) { if (this.logger == logger) { if (this.logger != null) { this.logger.flush(); } this.logger = null; } } }