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

prerna.reactor.task.modifiers.MapLambdaReactor Maven / Gradle / Ivy

The newest version!
package prerna.reactor.task.modifiers;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import prerna.reactor.task.TaskBuilderReactor;
import prerna.reactor.task.lambda.map.IMapLambda;
import prerna.reactor.task.lambda.map.function.MapLambdaFactory;
import prerna.sablecc2.om.GenRowStruct;
import prerna.sablecc2.om.ReactorKeysEnum;

public class MapLambdaReactor extends TaskBuilderReactor {

	/**
	 * Allow you to modidy an existing column(s) or add new columns
	 * Will not allow you to add new rows
	 */
	
	public MapLambdaReactor() {
		this.keysToGet = new String[]{ReactorKeysEnum.LAMBDA.getKey(), ReactorKeysEnum.COLUMNS.getKey(), ReactorKeysEnum.PARAM_KEY.getKey()};
	}
	
	@Override
	protected void buildTask() {
		String lambda = getLambda();
		List columns = getColumns();
		Map params = getMap();

		IMapLambda mapLambda = MapLambdaFactory.getLambda(lambda);
		if(mapLambda == null) {
			throw new IllegalArgumentException("Unknown transformation type = " + lambda);
		}
		mapLambda.setUser(this.insight.getUser());
		mapLambda.setParams(params);
		mapLambda.init(this.task.getHeaderInfo(), columns);
		
		// create a new task and add to stores
		prerna.reactor.task.lambda.map.MapLambdaReactor newTask = new prerna.reactor.task.lambda.map.MapLambdaReactor();
		newTask.setInnerTask(this.task);
		newTask.setLambda(mapLambda);
		newTask.setHeaderInfo(mapLambda.getModifiedHeaderInfo());

		this.task = newTask;
		this.insight.getTaskStore().addTask(this.task);
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////
	
	// inputs
	
	private String getLambda() {
		GenRowStruct colGrs = this.store.getNoun(keysToGet[0]);
		if(colGrs != null && !colGrs.isEmpty()) {
			return colGrs.get(0).toString();
		}
		
		throw new IllegalArgumentException("No transformation type was entered");
	}
	
	private List getColumns() {
		GenRowStruct colGrs = this.store.getNoun(keysToGet[1]);
		if(colGrs != null && !colGrs.isEmpty()) {
			int size = colGrs.size();
			List columns = new ArrayList();
			for(int i = 0; i < size; i++) {
				columns.add(colGrs.get(i).toString());
			}
			return columns;
		}
		
		return null;
	}
	
	private Map getMap() {
		GenRowStruct colGrs = this.store.getNoun(keysToGet[2]);
		if(colGrs != null && !colGrs.isEmpty()) {
			return (Map) colGrs.get(0);
		}
		
		return null;
	}
	
	public String getName()
	{
		return "MapLambda";
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy