
prerna.reactor.frame.graph.r.NodeDetailsReactor Maven / Gradle / Ivy
The newest version!
package prerna.reactor.frame.graph.r;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.logging.log4j.Logger;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import prerna.algorithm.api.ITableDataFrame;
import prerna.ds.TinkerFrame;
import prerna.engine.impl.tinker.iGraphUtilities;
import prerna.reactor.frame.r.AbstractRFrameReactor;
import prerna.reactor.frame.r.util.AbstractRJavaTranslator;
import prerna.reactor.task.constant.ConstantTaskCreationHelper;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.PixelOperationType;
import prerna.sablecc2.om.ReactorKeysEnum;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.sablecc2.om.task.ConstantDataTask;
public class NodeDetailsReactor extends AbstractRFrameReactor {
private static final String CLASS_NAME = NodeDetailsReactor.class.getName();
public NodeDetailsReactor() {
this.keysToGet = new String[]{ReactorKeysEnum.FRAME.getKey(), ReactorKeysEnum.COLUMN.getKey(), ReactorKeysEnum.VALUE.getKey(), ReactorKeysEnum.PANEL.getKey()};
}
@Override
public NounMetadata execute() {
init();
organizeKeys();
String[] packages = new String[] { "igraph" };
this.rJavaTranslator.checkPackages(packages);
this.rJavaTranslator.executeEmptyR("library(igraph)");
Logger logger = getLogger(CLASS_NAME);
ITableDataFrame frame = getFrame();
if(!(frame instanceof TinkerFrame)) {
throw new IllegalArgumentException("Frame must be a graph frame type");
}
TinkerFrame graph = (TinkerFrame) frame;
if(!graph.isIGraphSynched()) {
AbstractRJavaTranslator rJavaTranslator = this.insight.getRJavaTranslator(CLASS_NAME);
String wd = this.insight.getInsightFolder();
iGraphUtilities.synchronizeGraphToR(graph, rJavaTranslator, graph.getName(), wd, logger);
}
String graphName = graph.getName();
String type = this.keyValue.get(this.keysToGet[1]);
String instance = this.keyValue.get(this.keysToGet[2]);
String panelId = this.keyValue.get(this.keysToGet[3]);
if(panelId == null) {
panelId = "Temp";
}
String uniqueNodeId = type + ":" + instance;
GraphTraversal it = graph.g.traversal().V().has(TinkerFrame.TINKER_ID, uniqueNodeId);
Vertex v = null;
if(it.hasNext()) {
v = it.next();
}
if(v == null) {
throw new IllegalArgumentException("Could not find vertex of type = " + type + " and value = " + instance);
}
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy