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

prerna.reactor.frame.py.EncodeColumnReactor Maven / Gradle / Ivy

The newest version!
package prerna.reactor.frame.py;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import prerna.algorithm.api.SemossDataType;
import prerna.ds.OwlTemporalEngineMeta;
import prerna.ds.py.PandasFrame;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.PixelOperationType;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.util.usertracking.AnalyticsTrackerHelper;
import prerna.util.usertracking.UserTrackerFactory;

public class EncodeColumnReactor extends AbstractPyFrameReactor {

    @Override
    public NounMetadata execute() {
        organizeKeys();
        PandasFrame frame = (PandasFrame) getFrame();
        String frameName = frame.getName();
        List scripts = new ArrayList<>();

        scripts.add("import hashlib");
        scripts.add("def encode(value) : return hashlib.sha256(str(value).encode()).hexdigest()");
        List columns = this.store.nounRow.get("columns").getVector().stream().map(noun -> noun.getValue().toString()).collect(Collectors.toList());
        for (String col : columns) {
            scripts.add(frameName + "['" + col + "'] = " + frameName + "['" + col + "'].apply(encode)");
        }
        String[] scriptArray = new String[scripts.size()];
        scripts.toArray(scriptArray);
        insight.getPyTranslator().runPyAndReturnOutput(scriptArray);
        for(String script : scripts) {
        	this.addExecutedCode(script);
        }
        
		// upon successful execution
		OwlTemporalEngineMeta metadata = frame.getMetaData();
		for(String col : columns) {
			// set the type for all the columns to be string
			metadata.modifyDataTypeToProperty(frameName + "__" + col, frameName, SemossDataType.STRING.toString());
		}
        
        // NEW TRACKING
        UserTrackerFactory.getInstance().trackAnalyticsWidget(
                this.insight,
                frame,
                "EncodeColumnReactor",
                AnalyticsTrackerHelper.getHashInputs(this.store, this.keysToGet));

        return new NounMetadata(frame, PixelDataType.FRAME, PixelOperationType.FRAME_DATA_CHANGE);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy