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

prerna.engine.api.IHeadersDataRow Maven / Gradle / Ivy

The newest version!
package prerna.engine.api;

import java.util.Map;

import com.google.gson.TypeAdapter;

import prerna.util.gson.HeadersDataRowAdapter;

public interface IHeadersDataRow{

	// Right now there is only one implementation of IHeadersDataRow
	enum HEADERS_DATA_ROW_TYPE {HEADERS_DATA_ROW};
	
	/**
	 * Get the type of the header
	 * @return
	 */
	HEADERS_DATA_ROW_TYPE getHeaderType();
	
	/**
	 * Get the headers corresponding to the values by index
	 * @return
	 */
	String[] getHeaders();

	/**
	 * Get the raw headers
	 * This is useful when we alias headers to be unique during loops
	 * @return
	 */
	String[] getRawHeaders();

	/**
	 * Get the values of the row
	 * @return
	 */
	Object[] getValues();
	
	/**
	 * Get the raw values
	 * This is useful if you want to see full URIs from a RDF engine
	 * @return
	 */
	Object[] getRawValues();

	/**
	 * Get the number of records in the row
	 * @return
	 */
	int getRecordLength();

	/**
	 * This is really only for testing purposes
	 * @return
	 */
	String toRawString();

	/**
	 * Add new values into an existing headers data row
	 * @param addHeaders
	 * @param addValues
	 */
	void addFields(String[] addHeaders, Object[] addValues);

	/**
	 * Add a single new column and value
	 * @param addHeader
	 * @param addValues
	 */
	void addFields(String addHeader, Object addValues);

	
	/**
	 * Copy the headers row
	 * @return
	 */
	IHeadersDataRow copy();
	
	
	// <<<<<<< Methods to be used for other purposes
	
	String toJson();	
	
	// gets a particular value
	void open();
		
	// add a tuple
	void addField(String fieldName, Object value);
	
	// gets a particular field
	Object getField(String fieldName);

	String getQuery();
	
	void setQuery(String query);
	
	Map flushRowToMap();
	
	/*
	 * 
	 * Methods around serialization
	 * 
	 */
	
	// Right now only one ;)
	static TypeAdapter getAdapterForHeader(HEADERS_DATA_ROW_TYPE type) {
		if(type == HEADERS_DATA_ROW_TYPE.HEADERS_DATA_ROW) {
			return new HeadersDataRowAdapter();
		}		
		return null;
	}
	
	/**
	 * Convert string to SELECTOR_TYPE
	 * @param s
	 * @return
	 */
	static HEADERS_DATA_ROW_TYPE convertStringToHeaderType(String s) {
		if(s.equals(HEADERS_DATA_ROW_TYPE.HEADERS_DATA_ROW.toString())) {
			return HEADERS_DATA_ROW_TYPE.HEADERS_DATA_ROW;
		}
		return null;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy