
prerna.reactor.planner.AbstractLoadClient Maven / Gradle / Ivy
The newest version!
package prerna.reactor.planner;
import java.util.Iterator;
import java.util.List;
import prerna.reactor.AbstractReactor;
import prerna.reactor.PixelPlanner;
import prerna.sablecc2.PixelUtility;
import prerna.sablecc2.om.GenRowStruct;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.sablecc2.om.task.BasicIteratorTask;
import prerna.util.ArrayUtilityMethods;
public abstract class AbstractLoadClient extends AbstractReactor {
public static final String ASSIGNMENT_NOUN = "assignment";
public static final String VALUE_NOUN = "value";
public static final String SEPARATOR_NOUN = "separator";
public static final String TYPE_NOUN = "type";
public static final String RETURNTYPE_NOUN = "returnType";
/**
*
* @return
*
* This abtract method is defined by the child class to have control as to what type of planner to create, all other operations are the same
*/
protected abstract PixelPlanner createPlanner();
@Override
public NounMetadata execute()
{
// run through all the results in the iterator
// and append them into a new plan
PixelPlanner newPlan = createPlanner();
return new NounMetadata(newPlan, PixelDataType.PLANNER);
}
/**
*
* @param planner
* @param assignment
* @param value
*
* This method will directly add the variable to the planner instead of adding an assignment pksl
*/
protected void addVariable(PixelPlanner planner, String assignment, Object value) {
if(assignment.equals(value.toString())) return;
if(assignment.equals(value.toString())) return;
NounMetadata noun = PixelUtility.getNoun(value);
planner.addVariable(assignment, noun);
}
/**
*
* @param assignment
* @param value
* @return
*
* returns a pksl query given an assignment variable and the value
*/
protected String generatePKSLString(String assignment, String value) {
return assignment+" = "+value+";";
}
protected boolean isFormula(Object[] values, int typeIndex) {
String value = values[typeIndex].toString();
return "formula".equalsIgnoreCase(value);
}
protected String getReturnType(Object[] values, int returnTypeIndex) {
// TODO Auto-generated method stub
return values[returnTypeIndex].toString().trim();
}
/**
*
* @param values
* @param assignmentIndices
* @param separator
* @return
*/
protected String getAssignment(Object[] values, int[] assignmentIndices, String separator) {
StringBuilder pkslBuilder = new StringBuilder();
int numAssignments = assignmentIndices.length;
for(int i = 0; i < assignmentIndices.length; i++) {
// add the name
pkslBuilder.append(values[assignmentIndices[i]]);
if( (i+1) != numAssignments) {
// concatenate the multiple ones with the defined value
pkslBuilder.append(separator);
}
}
return pkslBuilder.toString();
}
protected String getValue(Object[] values, int valIndex) {
return values[valIndex].toString().trim();
}
/**************************** START GET PARAMETERS *****************************************/
/**
* Get the optional separator if defined
* @return
*/
protected String getSeparator() {
String separator = "";
// this is an optional key
// if we need to concatenate multiple things together
if(this.store.getNounKeys().contains(SEPARATOR_NOUN)) {
separator = this.store.getNoun(SEPARATOR_NOUN).get(0).toString();
}
return separator;
}
/**
* Get the job input the reactor
* @return
* @throws Exception
*/
protected Iterator getIterator() throws Exception {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy