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

prerna.reactor.planner.graph.RunGraphTaxPlannerReactor Maven / Gradle / Ivy

The newest version!
package prerna.reactor.planner.graph;
//package prerna.sablecc2.reactor.planner.graph;
//
//import java.io.File;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//import java.util.Vector;
//
//import org.apache.log4j.LogManager;
//import org.apache.log4j.Logger;
//import org.apache.tinkerpop.gremlin.structure.Edge;
//import org.apache.tinkerpop.gremlin.structure.Vertex;
//import org.apache.tinkerpop.gremlin.structure.io.Io.Builder;
//import org.apache.tinkerpop.gremlin.structure.io.IoCore;
//import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
//import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
//
//import prerna.engine.api.IHeadersDataRow;
//import prerna.sablecc2.GreedyTranslation;
//import prerna.sablecc2.LazyTranslation;
//import prerna.sablecc2.PkslUtility;
//import prerna.sablecc2.om.GenRowStruct;
//import prerna.sablecc2.om.InMemStore;
//import prerna.sablecc2.om.Job;
//import prerna.sablecc2.om.NounMetadata;
//import prerna.sablecc2.om.PkslDataTypes;
//import prerna.sablecc2.om.TaxMapStore;
//import prerna.sablecc2.reactor.PKSLPlanner;
//import prerna.util.ArrayUtilityMethods;
//import prerna.util.MyGraphIoRegistry;
//
//public class RunGraphTaxPlannerReactor extends AbstractPlannerReactor {
//
//	private static final Logger LOGGER = LogManager.getLogger(RunGraphTaxPlannerReactor.class.getName());
//	
//	private static int fileCount = 0;
//	
//	private static final String PROPOSAL_NOUN = "PROPOSALS";
//	private String scenarioHeader;
//	private String aliasHeader;
//	private String valueHeader;
//	private String typeHeader;
//
//	private PKSLPlanner originalPlan = null;
//	private String fileName;
//	
//	public RunGraphTaxPlannerReactor() {
//		setDefaults();
//	}
//	
//	private void setDefaults() {
//		scenarioHeader = "ProposalName"; //header of column containing Trump, House, etc
////		aliasHeader = "Alias_1"; //header for value containing our column name
//		aliasHeader = "Hashcode"; //header for value containing our column name
//		valueHeader = "Value_1"; //header for value containing the value assigned to column name
//		typeHeader = "Type_1";
//	}
//	
//	@Override
//	public NounMetadata execute()
//	{
//		long start = System.currentTimeMillis();
//
//		// get the original version of the plan we want to save
//		this.originalPlan = getPlanner();
//		// remove this stupid thing!!!
//		this.originalPlan.g.traversal().V().has(PKSLPlanner.TINKER_ID, "OP:FRAME").drop().iterate();
//		// save the location
//		this.fileName = getFileName();
//		saveGraph(this.originalPlan, this.fileName);
//
//		// now loop through and store all the necessary information
//		// around each proposal
//		Iterator scenarioIterator = getIterator();
//		// iterate through the scenario information
//		// and generate a pksl planner for each scenario
//		Map scenarioMap = getScenarioMap(scenarioIterator);
//		
//		// create the master return store
//		// this will contain each scenario
//		// pointing to another map
//		// for that maps specific information
//		InMemStore returnStore = new TaxMapStore();
//
//		List planners = new ArrayList<>();
//		for(String scenario : scenarioMap.keySet()) {
//			LOGGER.info("Start execution for scenario = " + scenario);
//
//			// create a new translation to run through
//			GreedyTranslation translation = new GreedyTranslation();
//			// get the planner for the scenario
//			PKSLPlanner nextScenario = scenarioMap.get(scenario);
//			nextScenario.addVariable("$SCENARIO", new NounMetadata(scenario, PkslDataTypes.CONST_STRING));
//			translation.planner = nextScenario;
//			
//			// iterate through to determine execution order for
//			// the scenario
//			List pkslList = getPksls(nextScenario);
//			PkslUtility.addPkslToTranslation(translation, pkslList);
//			
//			LOGGER.info("End execution for scenario = " + scenario);
//			// after execution
//			// we need to	 store the information
//			LOGGER.info("Start storing data inside store");
//			
//			planners.add(translation.planner);
//			
//		}
//		
//		long end = System.currentTimeMillis();
//		LOGGER.info("****************    END RUN TAX PLANNER "+(end - start)+"ms      *************************");
//
//		File file = new File(this.fileName);
//		file.delete();
//		return new NounMetadata(planners, PkslDataTypes.PLANNER);
////		return new NounMetadata(returnStore, PkslDataTypes.IN_MEM_STORE);
//	}
//
//	private List getPksls(PKSLPlanner planner) {
//		// keep track of all the pksls to execute
//		List pksls = new Vector();
//
//		// using the root vertices
//		// iterate down all the other vertices and add the signatures
//		// for the desired travels in the appropriate order
//		// note: this is adding to the list of undefined variables
//		// calculated at beginning of class 
//		traverseDownstreamVertsProcessor(planner, pksls);
//		return pksls;
//	}
//
//	private String getFileName() {
//		return "planner"+fileCount++ +".gio";
//	}
//
//	/**
//	 * Save the original planner's graph g
//	 * @param originalPlanner
//	 * @param fileName
//	 */
//	private void saveGraph(PKSLPlanner originalPlanner, String fileName) {
//		// try the default
//		long start = System.currentTimeMillis();
//		Builder builder = IoCore.gryo();
//		builder.graph(originalPlanner.g);
//		IoRegistry kryo = new MyGraphIoRegistry();
//		builder.registry(kryo);
//		GryoIo yes = builder.create();
//		try {
//			yes.writeGraph(fileName);
//		} catch (IOException e) {
//			classLogger.error(Constants.STACKTRACE, e);
//		} 
//		
//		long end = System.currentTimeMillis();
//		System.out.println("FINISHED WRITING GRAPH : " + (end-start));
//	}
//
//	/**
//	 * Read the cached version of the planner 
//	 * into a new planner for use within a scenario
//	 * @return
//	 */
//	private PKSLPlanner getNewPlannerCopy() {
//		long start = System.currentTimeMillis();
//
//		PKSLPlanner newPlanner = new PKSLPlanner();
//		// using the flushed out original planner
//		// read it back into a new graph
//		Builder builder = IoCore.gryo();
//		builder.graph(newPlanner.g);
//		IoRegistry kryo = new MyGraphIoRegistry();
//		builder.registry(kryo);
//		GryoIo yes = builder.create();
//		try {
//			yes.readGraph(this.fileName);
//		} catch (IOException e) {
//			classLogger.error(Constants.STACKTRACE, e);
//		}
//		
//		long end = System.currentTimeMillis();
//		System.out.println("FINISHED READING GRAPH : " + (end-start));
//		
//		newPlanner.g.createIndex(PKSLPlanner.TINKER_TYPE, Vertex.class);
//		newPlanner.g.createIndex(PKSLPlanner.TINKER_ID, Vertex.class);
//		newPlanner.g.createIndex(PKSLPlanner.TINKER_ID, Edge.class);
//
//		// now loop through the original planner
//		// and set all the variables that are defined
//		// into the new planner
//		Set variables = this.originalPlan.getVariables();
//		for(String varName : variables) {
//			NounMetadata varNoun = this.originalPlan.getVariable(varName);
//			if(varNoun.isScalar()) {
////				System.out.println("Orig values ::: " + varName + " > " + this.originalPlan.getVariable(varName));
//				newPlanner.addVariable(varName, varNoun);
//			}
//		}
//		
//		return newPlanner;
//	}
//
//	private Map getScenarioMap(Iterator iterator) {
//		// key is scenario, value is the map store for that scenario
//		Map plannerMap = new HashMap<>();
//		// define a central translation
//		// to execute everything with
//		// but substituting with the correct scenario planner
//		LazyTranslation translation = new LazyTranslation();
//		while(iterator.hasNext()) {
//			IHeadersDataRow nextData = iterator.next();
//
//			//TODO: move this outside so we don't calculate every time
//			String[] headers = nextData.getHeaders();
//			int scenarioHeaderIndex = ArrayUtilityMethods.arrayContainsValueAtIndexIgnoreCase(headers, scenarioHeader);
//			int aliasHeaderIndex = ArrayUtilityMethods.arrayContainsValueAtIndexIgnoreCase(headers, aliasHeader);
//			int valueHeaderIndex = ArrayUtilityMethods.arrayContainsValueAtIndexIgnoreCase(headers, valueHeader);
//			int typeHeaderIndex = ArrayUtilityMethods.arrayContainsValueAtIndexIgnoreCase(headers, typeHeader);
//
//			//grab each row
//			Object[] values = nextData.getValues();
//
//			//identify which scenario this is
//			String scenario = values[scenarioHeaderIndex].toString();
//
//			//grab alias and value (value should be literal, number, or column?)
//			String alias = values[aliasHeaderIndex].toString();
//			Object value = values[valueHeaderIndex];
//
//			String type = values[typeHeaderIndex].toString();
//			boolean isFormula = "formula".equalsIgnoreCase(type);
//
//			//add to its specific scenario map store
//			PKSLPlanner scenarioPlanner = null;
//			if(plannerMap.containsKey(scenario)) {
//				scenarioPlanner = plannerMap.get(scenario);
//			} else {
//				scenarioPlanner = getNewPlannerCopy();
//				plannerMap.put(scenario, scenarioPlanner);
//			}
//			translation.planner = scenarioPlanner;
//			// if it is a formula
//			// parse and add to the scenario plan
//			// else, add it as a variable
//			if(isFormula) {
//				String pkslString = PkslUtility.generatePKSLString(alias, value);
//				// skip adding self reflection pksls
//				// i.e. x = (x);
//				if(!isSimpleAssignment(pkslString)) {
//					PkslUtility.addPkslToTranslation(translation, pkslString);
//				}
//			} else {
//				scenarioPlanner.addVariable(alias, PkslUtility.getNoun(value));
//			}
//		}
//		return plannerMap;
//	}
//
//	/****************************************************
//	 * METHODS TO GRAB VALUES FROM REACTOR
//	 ***************************************************/
//
//	private Iterator getIterator() {
//		GenRowStruct allNouns = getNounStore().getNoun("PROPOSALS");
//		Iterator iterator = null;
//
//		if(allNouns != null) {
//			Job job = (Job)allNouns.get(0);
//			iterator = job.getIterator();
//		}
//		return iterator;
//	}
//
//	private PKSLPlanner getPlanner() {
//		GenRowStruct allNouns = getNounStore().getNoun(PkslDataTypes.PLANNER.toString());
//		PKSLPlanner planner = null;
//		if(allNouns != null) {
//			planner = (PKSLPlanner) allNouns.get(0);
//			return planner;
//		} else {
//			return this.planner;
//		}
//	}
//}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy