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

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

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

import java.sql.PreparedStatement;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import prerna.algorithm.api.SemossDataType;
import prerna.ds.OwlTemporalEngineMeta;
import prerna.ds.rdbms.AbstractRdbmsFrame;
import prerna.reactor.frame.AbstractFrameReactor;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.PixelOperationType;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.util.Constants;
import prerna.util.usertracking.AnalyticsTrackerHelper;
import prerna.util.usertracking.UserTrackerFactory;

public class EncodeColumnReactor extends AbstractFrameReactor {
	
	private static final Logger classLogger = LogManager.getLogger(EncodeColumnReactor.class);

    @Override
    public NounMetadata execute() {

        organizeKeys();

        AbstractRdbmsFrame frame = (AbstractRdbmsFrame) getFrame();
        Set columnHeaders = Stream.of(frame.getColumnHeaders()).collect(Collectors.toSet());
        List columns = this.store.nounRow.get("columns").getVector().stream().map(noun -> noun.getValue().toString()).collect(Collectors.toList());
        if (!columnHeaders.containsAll(columns)) {
            throw new IllegalArgumentException("One or more columns could not be found: " + columnHeaders.removeAll(columns));
        }

        String[] columnsToUpdate = new String[columns.size()];
        columns.toArray(columnsToUpdate);

        String frameName = frame.getName();
        PreparedStatement statement = frame.getBuilder().hashColumn(frameName, columnsToUpdate);
        try {
            for (int i = 0; i < columns.size(); i++) {
                String col = columns.get(i);
                String query = frame.getQueryUtil().modColumnType(frameName, col, "VARCHAR");
                frame.getBuilder().runQuery(query);
            }
            statement.execute();
        } catch (Exception e) {
            classLogger.error(Constants.STACKTRACE, e);
        }
        
		// 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));

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

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy