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

io.sinistral.proteus.utilities.TablePrinter Maven / Gradle / Ivy

/**
 *
 */
package io.sinistral.proteus.utilities;

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

/**
 * @author jbauer
 */
public class TablePrinter
{
    private final int TABLEPADDING = 4;
    private List headers;
    private List> table;
    private List maxLength;

    public TablePrinter(List headersIn, List> content)
    {
        this.headers = headersIn;
        this.maxLength = new ArrayList();

        for (int i = 0; i < headers.size(); i++) {
            maxLength.add(headers.get(i).length());
        }

        this.table = content;

        updateMaxLengths();
    }

    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        StringBuilder rowSeparatorBuilder = new StringBuilder();
        String padder = "";
        String rowSeperator = "";

        for (int i = 0; i < 4; i++) {
            padder += " ";
        }

        for (int i = 0; i < maxLength.size(); i++) {
            for (int j = 0; j < maxLength.get(i) + (TABLEPADDING * 2); j++) {
                rowSeparatorBuilder.append("-");
            }
        }

        rowSeperator = rowSeparatorBuilder.toString();

        sb.append("\n");

        for (int i = 0; i < headers.size(); i++) {
            sb.append(padder);
            sb.append(headers.get(i));

            for (int k = 0; k < (maxLength.get(i) - headers.get(i).length()); k++) {
                sb.append(" ");
            }

            sb.append(padder);
        }

        sb.append("\n");
        sb.append(rowSeperator);
        sb.append("\n");

        for (int i = 0; i < table.size(); i++) {
            List tempRow = table.get(i);

            for (int j = 0; j < tempRow.size(); j++) {
                sb.append(padder);
                sb.append(tempRow.get(j));

                for (int k = 0; k < (maxLength.get(j) - tempRow.get(j).length()); k++) {
                    sb.append(" ");
                }

                sb.append(padder);
            }

            sb.append("\n");
        }

        return sb.toString();
    }

    public void updateField(int row, int col, String input)
    {
        table.get(row).set(col, input);
        updateMaxColumnLength(col);
    }

    private void updateMaxColumnLength(int col)
    {
        for (int i = 0; i < table.size(); i++) {
            if (table.get(i).get(col).length() > maxLength.get(col)) {
                maxLength.set(col, table.get(i).get(col).length());
            }
        }
    }

    private void updateMaxLengths()
    {
        for (int i = 0; i < table.size(); i++) {
            List temp = table.get(i);

            for (int j = 0; j < temp.size(); j++) {
                if (temp.get(j).length() > maxLength.get(j)) {
                    maxLength.set(j, temp.get(j).length());
                }
            }
        }
    }
}







© 2015 - 2025 Weber Informatics LLC | Privacy Policy