DB Format show

来源:互联网 发布:ncp1337p各脚电压数据 编辑:程序博客网 时间:2024/06/15 09:13
package com.luoluo.log.database;import java.util.ArrayList;import java.util.List;public class TableInfo{    private int count;    private int[] maxLens;    private String[] columns;    private List<String[]> records;    private StringBuilder builder;    public TableInfo(int count)    {        this.count = count;        maxLens = new int[count];        columns = new String[count];        builder = new StringBuilder();        records = new ArrayList<>();    }    private boolean isValid(String... args)    {        return null == args || args.length == 0;    }    private boolean isOutOfIndex(String... args)    {        return args.length > count;    }    public boolean addHeader(String... record)    {        if (isValid(record) || isOutOfIndex(record))        {            return false;        }        copy(columns, record);        return false;    }    public boolean addRecode(String... record)    {        if (isValid(record) || isOutOfIndex(record))        {            return false;        }        copy(maxLens, record);        records.add(record);        return false;    }    public String getInfo()    {        buildLine();        buildHeader();        buildLine();        buildBody();        buildLine();        return builder.toString();    }    private void buildHeader()    {        builder.append("|");        for (int i = 0; i < columns.length; i++)        {            builder.append(columns[i]);            builder.append(getEmpty(maxLens[i] - columns[i].length()));            builder.append("|");        }        builder.append("\r\n");    }    private void buildBody()    {        for (String[] recode : records)        {            builder.append("|");            for (int i = 0; i < recode.length; i++)            {                builder.append(recode[i]);                builder.append(getEmpty(maxLens[i] - recode[i].length()));                builder.append("|");            }            builder.append("\r\n");        }    }    private void buildLine()    {        builder.append("+");        for (int i = 0; i < maxLens.length; i++)        {            builder.append(getLine(maxLens[i]));            builder.append("+");        }        builder.append("\r\n");    }    private String getLine(int count)    {        StringBuilder builder = new StringBuilder();        for (int i = 0; i < count; i++)        {            builder.append("-");        }        return builder.toString();    }    private String getEmpty(int count)    {        StringBuilder builder = new StringBuilder();        for (int i = 0; i < count; i++)        {            builder.append(" ");        }        return builder.toString();    }    private void copy(String[] args1, String... args2)    {        for (int i = 0; i < args2.length; i++)        {            args1[i] =args2[i];        }    }    private void copy(int[] args1, String... args2)    {        for (int i = 0; i < args2.length; i++)        {            args1[i] = swap(args1[i], args2[i].length());        }    }    private int swap(int max, int length)    {        if (max > length)        {            return max;        }        return length;    }    public static void main(String[] args)    {        TableInfo info = new TableInfo(5);        String[] s0 = { "ID", "Name", "Age", "Number", "Address" };        String[] s1 = { "0000000001", "Aniaoinu", "12", "18700000000", "CN.SH.xxxxxxxxxxxxxxxxxxxxx" };        String[] s2 = { "0000000002", "xxx", "108", "10000000000", "xxxxxx" };        String[] s3 = { "0000000003", "xxx", "18", "1xxxxxxxxxxxxxxxxxxxx", "xx" };        info.addHeader(s0);        info.addRecode(s1);        info.addRecode(s2);        info.addRecode(s3);        System.out.println(info.getInfo());    }}
原创粉丝点击