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

prerna.util.HTMLTable Maven / Gradle / Ivy

The newest version!
package prerna.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import prerna.engine.api.IHeadersDataRow;
import prerna.sablecc2.om.task.ITask;

/**
 * Generates HTML for a task or data rows
 *
 */
public class HTMLTable {
	
	protected String tableName = null;
	private List tableHeaders = null;
	private List> tableData = new ArrayList<>();
	private String tableStyle = SMSS_TABLE_STYLE;
	private String theadStyle = SMSS_THEAD_STYLE;
	private String thStyle = SMSS_TH_STYLE;
	private String tdStyle = SMSS_TD_STYLE;
	private String tableNameStyle = TABLE_NAME_STYLE;


	// Default SEMOSS table styles
	private static final String SMSS_TABLE_STYLE = "style='border-collapse: collapse; border: 1px solid #d9d9d9; font-family: Arial, Helvetica, sans-serif; width: 100%; max-width: 600px;'";
	private static final String SMSS_THEAD_STYLE = "style='background: #f5f5f5; color: #5c5c5c;'";
	private static final String SMSS_TH_STYLE = "style='border: 1px solid #d9d9d9; padding: 8px;'";
	private static final String SMSS_TD_STYLE = "style='border: 1px solid #d9d9d9; padding: 8px;'";
	private static final String TABLE_NAME_STYLE = "style='font-family: Arial, Helvetica, sans-serif; margin: 0; margin-bottom: 4px; color: #5c5c5c;'";


	public HTMLTable() {

	}
	
	public HTMLTable(String tableName) {
		this.tableName = tableName;
	}

	//////////////////////////////////////////////////////////
	// METHODS TO SET TABLE STYLE
	//////////////////////////////////////////////////////////

	public void setTableStyle(String tableStyle) {
		this.tableStyle = tableStyle;
	}

	public void setTheadStyle(String theadStyle) {
		this.theadStyle = theadStyle;
	}

	public void setThStyle(String thStyle) {
		this.thStyle = thStyle;
	}

	public void setTdStyle(String tdStyle) {
		this.tdStyle = tdStyle;
	}
	
	public void setTableNameStyle(String tableNameStyle) {
		this.tableNameStyle = tableNameStyle;
	}
	/**
	 * Generate table html for a task
	 * 
	 * @param task
	 * @return
	 */
	public String generateHtml(ITask task) {
		StringBuilder sb = new StringBuilder();
		sb.append(getTableNameHtml());
		sb.append("");
		IHeadersDataRow row = null;
		// get headers from the task
		if (task.hasNext()) {
			row = task.next();
			this.tableHeaders = Arrays.asList(row.getHeaders());
			sb.append(getTableHeadersHtml());
		}
		// add data
		sb.append("");
		sb.append(addRow(row));
		while (task.hasNext()) {
			sb.append("");
			row = task.next();
			sb.append(addRow(row));
			sb.append("");
		}
		sb.append("");
		sb.append("
"); return sb.toString(); } ////////////////////////////////////////////////////////// // Methods to generate a table from user defined values // need to set headers and data ////////////////////////////////////////////////////////// public String getTableAsHtml() { if (this.tableHeaders == null) { throw new IllegalArgumentException("Table headers not set"); } StringBuilder sb = new StringBuilder(); sb.append(getTableNameHtml()); sb.append(""); sb.append(getTableHeadersHtml()); sb.append(getTableBodyHtml()); sb.append("
"); return sb.toString(); } public void setTableHeaders(List tableHeader) { this.tableHeaders = tableHeader; } public void addTableData(List tableData) { this.tableData.add(tableData); } public boolean isTableDataEmpty() { return this.tableData.isEmpty(); } ////////////////////////////////////////////////////////// // METHODS TO GENERATE HTML ////////////////////////////////////////////////////////// private String addRow(IHeadersDataRow row) { StringBuilder sb = new StringBuilder(); Object[] values = row.getValues(); for (int i = 0; i < values.length; i++) { Object value = values[i]; sb.append(""); sb.append(value); sb.append(""); } return sb.toString(); } private String getTableHeadersHtml() { StringBuilder sb = new StringBuilder(); sb.append(""); sb.append(""); for (String column : this.tableHeaders) { sb.append(""); sb.append(column); sb.append(""); } sb.append(""); sb.append(""); return sb.toString(); } private String getTableBodyHtml() { StringBuilder sb = new StringBuilder(); sb.append(""); for (List row : this.tableData) { sb.append(""); for (String column : row) { sb.append(""); sb.append(column); sb.append(""); } sb.append(""); } sb.append(""); return sb.toString(); } private String getTableNameHtml() { StringBuilder sb = new StringBuilder(); if (this.tableName != null) { sb.append("

"); sb.append(this.tableName); sb.append("

"); } return sb.toString(); } // public static void main(String[] args) throws Exception { // TestUtilityMethods.loadAll("C:\\Users\\rramirezjimenez\\Documents\\workspace\\Semoss\\RDF_Map.prop"); // String engineProp = "C:\\Users\\rramirezjimenez\\Documents\\workspace\\Semoss\\db\\movTst__92cf8a9f-c66d-4af1-ad9b-ef7a8f014dbe.smss"; // RDBMSNativeEngine engine = new RDBMSNativeEngine(); // engine.open(engineProp); // DIHelper.getInstance().setLocalProperty("92cf8a9f-c66d-4af1-ad9b-ef7a8f014dbe", engine); // HardSelectQueryStruct qs = new HardSelectQueryStruct(); // qs.setQuery("Select * From MOVIES LIMIT 10"); // IRawSelectWrapper it = WrapperManager.getInstance().getRawWrapper(engine, qs); // // ITask task = new BasicIteratorTask(qs, it); // // // VHA style // HTMLTable emailTable = new HTMLTable("test:"); // emailTable.setTableStyle("border='1' cellpadding='8' cellspacing='0' style='border-collapse:collapse; border: 1px solid #cccccc;'"); // emailTable.setThStyle("style='padding: 8px; font-size: 14px; color: #ffffff; background-color:#003E73; border: 1px solid #cccccc;'"); // emailTable.setTdStyle("valign='middle' align='left' style='padding: 8px; border: 1px solid #cccccc;'"); // emailTable.setTableNameStyle("style='margin: 0; margin-bottom: 4px; color: #003E73;'"); // System.out.println(emailTable.generateHtml(task)); // } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy