
prerna.reactor.frame.r.util.TCPRTranslator Maven / Gradle / Ivy
The newest version!
package prerna.reactor.frame.r.util;
import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.Logger;
import org.rosuda.REngine.Rserve.RConnection;
import prerna.algorithm.api.SemossDataType;
import prerna.ds.r.RDataTable;
import prerna.om.Insight;
import prerna.tcp.PayloadStruct;
import prerna.tcp.client.SocketClient;
import prerna.util.Utility;
public class TCPRTranslator extends AbstractRJavaTranslator {
private SocketClient nc = null;
private Logger logger = null;
private Insight insight = null;
private boolean started = false;
private boolean insightSet = false;
/**
*
* @param nc
*/
public void setClient(SocketClient nc) {
this.nc = nc;
}
@Override
public void initREnv(String env) {
// need to create the netty client here ?
this.env = env;
if(nc != null && !started)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, env);
ps.payloadClasses = new Class[] {String.class};
ps.hasReturn = false;
//if(rScript.equalsIgnoreCase("yo"))
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex!= null)
{
logger.info(ps.ex);
}
}
}
@Override
public void startR() {
if(nc != null && !started) {
// initialize the environment
initREnv(this.env);
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName);
//ps.payload = new Object[] {"2+2"};
//if(rScript.equalsIgnoreCase("yo"))
ps.hasReturn = false;
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex!= null) {
logger.info(ps.ex);
} else if(ps != null) {
started = true;
}
}
}
@Override
public Object executeR(String rScript) {
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
if(nc != null)
{
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
return ps.payload[0];
}
else if(ps != null)
logger.info(ps.ex);
}
return null;
}
@Override
public void executeEmptyR(String rScript) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
logger.info(" >>> Running Script " + rScript);
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
ps.hasReturn = false;
ps = (PayloadStruct) nc.executeCommand(ps);
if(ps != null && ps.ex!= null) {
logger.info(Utility.cleanLogString(ps.ex));
}
}
}
@Override
public boolean cancelExecution() {
return false;
}
@Override
public void runR(String rScript) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
ps.longRunning = true;
ps.hasReturn = false;
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex!= null)
logger.info(Utility.cleanLogString(ps.ex));
}
}
@Override
public String runRAndReturnOutput(String rScript) {
if(nc != null)
{
// TODO Auto-generated method stub
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.longRunning = true;
ps.payloadClasses = new Class[] {String.class};
PayloadStruct retPS = (PayloadStruct)nc.executeCommand(ps);
//System.err.println("Output is " + output);
if(retPS.processed)
return retPS.payload[0] + "";
else
return " Script " + ps.payload[0] + " Failed with " + retPS.ex;
}
return null;
}
@Override
public String getString(String script) {
// TODO Auto-generated method stub
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, script);
ps.payloadClasses = new Class[] {String.class};
//ps.payload = new Object[] {"2+2"};
//if(rScript.equalsIgnoreCase("yo"))
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
//System.err.println("Output is " + ps.payload[0]);
return ps.payload[0] + "";
}
else if(ps != null) return ps.ex+ "";
}
return null;
}
@Override
public String[] getStringArray(String script) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, script);
ps.payloadClasses = new Class[] {String.class};
//ps.payload = new Object[] {"2+2"};
//if(rScript.equalsIgnoreCase("yo"))
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
//System.err.println("Output is " + ps.payload[0]);
return (String [])ps.payload[0];
}
if(ps != null)
logger.info(Utility.cleanLogString(ps.ex));
}
return null;
}
@Override
public int getInt(String script) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, script);
ps.payloadClasses = new Class[] {String.class};
//ps.payload = new Object[] {"2+2"};
//if(rScript.equalsIgnoreCase("yo"))
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
//System.err.println("Output is " + ps.payload[0]);
return (Integer)ps.payload[0];
}
logger.info(ps.ex);
}
return 0;
}
@Override
public int[] getIntArray(String rScript) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
//ps.payload = new Object[] {"2+2"};
//if(rScript.equalsIgnoreCase("yo"))
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
//System.err.println("Output is " + ps.payload[0]);
return (int [])ps.payload[0];
}
logger.info(ps.ex);
}
return null;
}
@Override
public double getDouble(String rScript) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
//ps.payload = new Object[] {"2+2"};
//if(rScript.equalsIgnoreCase("yo"))
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
//System.err.println("Output is " + ps.payload[0]);
return (Double)ps.payload[0];
}
logger.info(ps.ex);
}
return 0;
}
@Override
public double[] getDoubleArray(String rScript) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
//ps.payload = new Object[] {"2+2"};
//if(rScript.equalsIgnoreCase("yo"))
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
//System.err.println("Output is " + ps.payload[0]);
return (double[])ps.payload[0];
}
logger.info(ps.ex);
}
return null;
}
@Override
public double[][] getDoubleMatrix(String rScript)
{
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
//ps.payload = new Object[] {"2+2"};
//if(rScript.equalsIgnoreCase("yo"))
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
//System.err.println("Output is " + ps.payload[0]);
return (double[][])ps.payload[0];
}
logger.info(ps.ex);
}
return null;
}
@Override
public boolean getBoolean(String rScript) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
logger.info("Set the insight");
return (Boolean)ps.payload[0];
}
else if(ps != null)
{
// need a way to throw exception
}
}
return false;
}
@Override
public Object getFactor(String rScript) {
// TODO Auto-generated method stub
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {Insight.class};
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
logger.info("Set the insight");
return ps.payload[0];
}
else if(ps != null)
{
// need a way to throw exception
}
}
return null;
}
@Override
public void setInsight(Insight insight) {
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
if(nc != null && !insightSet)
{
PayloadStruct ps = constructPayload(methodName, insight);
ps.payloadClasses = new Class[] {Insight.class};
ps.hasReturn = false;
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex== null)
{
logger.info("Set the insight");
insightSet = true;
}
}
this.insight = insight;
}
@Override
public Insight getInsight() {
return this.insight;
}
@Override
public void setLogger(Logger logger) {
this.logger = logger;
}
@Override
public void setConnection(RConnection connection) {
// no use
}
@Override
public void setPort(String port) {
// no use
}
@Override
public void endR() {
// dont know what I need to do here but..
}
@Override
public void stopRProcess() {
}
@Override
public void executeEmptyRDirect(String rScript) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
ps.hasReturn = false;
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex!= null)
{
logger.info("Exception " + Utility.cleanLogString(ps.ex));
}
}
}
@Override
Object executeRDirect(String rScript) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript);
ps.payloadClasses = new Class[] {String.class};
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex!= null)
{
logger.info("Exception " + ps.ex);
}
else if(ps != null)
return ps.payload[0];
}
return null;
}
@Override
public Map getHistogramBreaksAndCounts(String script) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, script);
ps.payloadClasses = new Class[] {String.class};
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex!= null)
{
logger.info("Exception " + ps.ex);
}
else if(ps != null)
return (Map)ps.payload[0];
}
return null;
}
@Override
public Map flushFrameAsTable(String framename, String[] colNames) {
if(nc != null)
{
// TODO Auto-generated method stub
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, framename, colNames);
ps.payloadClasses = new Class[] {String.class, String[].class};
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex!= null)
{
logger.info("Exception " + ps.ex);
}
else if(ps != null)
return (Map)ps.payload[0];
}
return null;
}
@Override
public Object[] getDataRow(String rScript, String[] headerOrdering) {
if(nc != null)
{
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
PayloadStruct ps = constructPayload(methodName, rScript, headerOrdering);
ps.payloadClasses = new Class[] {String.class, String[].class};
ps = (PayloadStruct)nc.executeCommand(ps);
if(ps != null && ps.ex!= null)
{
logger.info("Exception " + Utility.cleanLogString(ps.ex));
}
else if(ps != null)
return (Object[])ps.payload[0];
}
return null;
}
@Override
public List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy