| 1 14 package org.jmanage.util.display; 15 16 import org.jmanage.util.StringUtils; 17 18 import java.io.File ; 19 import java.util.Iterator ; 20 import java.util.List ; 21 22 28 public class TextTable extends AbstractTable { 29 30 private static final int COLUMN_SPACING = 5; 31 32 33 private int[] columnSize; 34 35 public String draw(){ 36 37 String [] header = getHeader(); 38 List rows = getRows(); 39 40 41 columnSize = new int[header.length]; 42 setColumnSize(header); 43 for(Iterator it=rows.iterator(); it.hasNext();){ 44 setColumnSize((String [])it.next()); 45 } 46 47 48 StringBuffer buff = new StringBuffer (); 49 50 51 printRow(header, buff); 52 printUnderline(header, buff); 53 54 for(Iterator it=rows.iterator(); it.hasNext();){ 55 printRow((String [])it.next(), buff); 56 } 57 return buff.toString(); 58 } 59 60 private void setColumnSize(String [] row){ 61 for(int i=0; i<row.length; i++){ 62 if(row[i].length() > columnSize[i]) 63 columnSize[i] = row[i].length(); 64 } 65 } 66 67 private void printRow(String [] rows, StringBuffer buff){ 68 for(int i=0; i < rows.length; i++){ 69 String columnValue = StringUtils.padRight(rows[i], 70 columnSize[i] + COLUMN_SPACING); 71 buff.append(columnValue); 72 } 73 buff.append(System.getProperty("line.separator")); 74 } 75 76 private void printUnderline(String [] rows, StringBuffer buff){ 77 for(int i=0; i < rows.length; i++){ 78 String underline = 79 StringUtils.getCharSeries('-', rows[i].toString().length()); 80 underline = StringUtils.padRight(underline, 81 columnSize[i] + COLUMN_SPACING); 82 buff.append(underline); 83 } 84 buff.append(System.getProperty("line.separator")); 85 } 86 } 87 | Popular Tags |