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

prerna.rdf.engine.wrappers.RawRSelectWrapper Maven / Gradle / Ivy

The newest version!
package prerna.rdf.engine.wrappers;

import java.io.IOException;

import prerna.algorithm.api.SemossDataType;
import prerna.ds.r.RIterator;
import prerna.engine.api.IHeadersDataRow;
import prerna.engine.api.IRawSelectWrapper;
import prerna.engine.impl.r.RNativeEngine;
import prerna.query.querystruct.SelectQueryStruct;

public class RawRSelectWrapper extends AbstractWrapper implements IRawSelectWrapper {

	private RIterator output = null;
	
	@Override
	public void execute() throws Exception {
		this.output = (RIterator) this.engine.execQuery(this.query);
		setDefaults();
	}
	
	public void execute(SelectQueryStruct qs) {
		this.output = (RIterator) ((RNativeEngine) this.engine).execQuery(this.query, qs);
		setDefaults();
	}
	
	public void directExecution(RIterator output) {
		this.output = output;
		setDefaults();
	}

	@Override
	public IHeadersDataRow next() {
		return output.next();
	}

	@Override
	public boolean hasNext() {
		return output.hasNext();
	}

	private void setDefaults() {
		this.rawHeaders = output.getHeaders();
		this.headers = this.rawHeaders;
		
		String[] strTypes = output.getColTypes();
		this.types = new SemossDataType[this.rawHeaders.length];
		for(int i = 0; i < this.rawHeaders.length; i++) {
			this.types[i] = SemossDataType.convertStringToDataType(strTypes[i]);
		}
	}
	
	@Override
	public String[] getHeaders() {
		return headers;
	}

	@Override
	public SemossDataType[] getTypes() {
		return this.types;
	}
	
	@Override
	public void reset() throws Exception {
		this.output = (RIterator) this.engine.execQuery(this.query);
	}

	@Override
	public void close() throws IOException {
		this.output.cleanUp();
	}
	
	@Override
	public long getNumRows() {
		if(this.numRows == 0) {
			this.numRows = this.output.getTotalNumRows();
		}
		return this.numRows;
	}
	
	@Override
	public long getNumRecords() {
		return getNumRows() * this.headers.length;
	}
	
	@Override
	public boolean flushable() {
		// WE HAVE ISSUES WITH STRING NA BECOMING NULL
		// WHEN FLUSHING TO JSON
		// SO KEEP AS false
		return false;
	}
	
	@Override
	public String flush() {
		return this.output.getJsonOfResults();
	}
	
	@Override
	public String getQuery() {
		return output.getQuery();
	}
	
	public RIterator getOutput() {
		return this.output;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy