/** * The contents of this file are subject to the OpenMRS Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs.reporting; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import org.openmrs.util.OpenmrsUtil; /** * @deprecated see reportingcompatibility module */ @Deprecated public class DataTable { private List<String> columnOrder; private ArrayList<TableRow> rows; public DataTable() { columnOrder = new ArrayList<String>(); rows = new ArrayList<TableRow>(); } public DataTable(List<TableRow> rows) { if (rows instanceof ArrayList) { this.rows = (ArrayList<TableRow>) rows; } else { this.rows = new ArrayList<TableRow>(); this.rows.addAll(rows); } } public void addColumn(String colName) { if (!columnOrder.contains(colName)) columnOrder.add(colName); } public void addColumns(Collection<String> colNames) { for (String colName : colNames) addColumn(colName); } public int getRowCount() { return rows.size(); } public void addRow(TableRow row) { rows.add(row); } public void addRows(Collection<TableRow> rows) { this.rows.addAll(rows); } public ArrayList<TableRow> getRows() { return rows; } public void sortByColumn(final String colName) { Collections.sort(rows, new Comparator<TableRow>() { @SuppressWarnings("unchecked") public int compare(TableRow left, TableRow right) { Comparable l = (Comparable) left.get(colName); Comparable r = (Comparable) right.get(colName); return OpenmrsUtil.compareWithNullAsLowest(l, r); } }); } public Map<String, DataTable> split(TableRowClassifier trc) { Map<String, DataTable> ret = new HashMap<String, DataTable>(); for (TableRow row : rows) { String classification = trc.classify(row); DataTable thisClass = ret.get(classification); if (thisClass == null) { thisClass = new DataTable(); ret.put(classification, thisClass); } thisClass.addRow(row); } return ret; } public String toString() { if (rows.size() == 0) return "DataTable with no rows"; List<String> columns; if (columnOrder.size() > 0) { columns = columnOrder; } else { columns = new ArrayList<String>(rows.get(0).getColumnNames()); Collections.sort(columns); } StringBuilder sb = new StringBuilder(); for (String colName : columns) { sb.append(colName).append(","); } for (TableRow row : rows) { sb.append("\n"); for (String colName : columns) { sb.append(row.get(colName)).append(","); } } return sb.toString(); } public String getHtmlTable() { if (rows.size() == 0) return "DataTable with no rows"; List<String> columns; if (columnOrder.size() > 0) { columns = columnOrder; } else { columns = new ArrayList<String>(rows.get(0).getColumnNames()); Collections.sort(columns); } StringBuilder sb = new StringBuilder(); sb.append("<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">"); sb.append("<thead><tr>"); for (String colName : columns) { sb.append("<th>").append(colName).append("</th>"); } sb.append("</tr></thead><tbody>"); for (TableRow row : rows) { sb.append("<tr>"); for (String colName : columns) { sb.append("<td>").append(row.get(colName)).append("</td>"); } sb.append("</tr>"); } sb.append("</tbody></table>"); return sb.toString(); } }