All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.reactor.utils.ValidateRReactor Maven / Gradle / Ivy

The newest version!
package prerna.reactor.utils;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import prerna.reactor.AbstractReactor;
import prerna.reactor.frame.r.util.AbstractRJavaTranslator;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.util.Constants;
import prerna.util.DIHelper;

public class ValidateRReactor extends AbstractReactor {
	
	private static final Logger classLogger = LogManager.getLogger(ValidateRReactor.class);
	
	public ValidateRReactor() {
		this.keysToGet = new String[]{"script"};
		this.keyRequired = new int[]{1};
	}

	@Override
	public NounMetadata execute() {

		organizeKeys();

		String result = "";
		
		AbstractRJavaTranslator rJavaTranslator = this.insight.getRJavaTranslator(getLogger(this.getClass() + ""));
		rJavaTranslator.startR();
		
        String baseFolder = DIHelper.getInstance().getProperty("BaseFolder");
        String rFolder = baseFolder + "/R/util/smssutil.r";
        rFolder = rFolder.replaceAll("\\\\", "/");
		
        rJavaTranslator.runR("source('" + rFolder + "');" );

		try {
				String rScript = insight.getInsightFolder() + "/" +keyValue.get(keysToGet[0]);
				rScript = rScript.replaceAll("\\\\", "/");
				Object outObject = rJavaTranslator.executeR("canLoad('" + rScript + "')");
				
				String output = "";
				if(outObject instanceof org.rosuda.REngine.REXPString)
					output = ((org.rosuda.REngine.REXPString)outObject).asString();
				
				else if(outObject instanceof org.rosuda.JRI.REXP)
					output = ((org.rosuda.JRI.REXP)outObject).asString();

				output = output.replaceAll("\\\"", "");
					
				if(output.length() == 0)
					result = keyValue.get(keysToGet[0]) + " : All Libraries available";
				
				
				else
				{
					StringBuilder library = new StringBuilder(keyValue.get(keysToGet[0])).append(":  Missing Libraries [").append(output).append("]");
					result = library.toString();					
				}			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			classLogger.error(Constants.STACKTRACE, e);
		}
		return new NounMetadata(result, PixelDataType.CONST_STRING);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy