001 package org.shiftone.jrat.desktop.util;
002
003 import java.util.ArrayList;
004 import java.util.Collections;
005 import java.util.List;
006
007 /**
008 * @author (jeff@shiftone.org) Jeff Drost
009 */
010 public class Table {
011
012
013 private List columns = new ArrayList();
014
015 public synchronized Column column(String name) {
016 return column(name, true);
017 }
018
019 public synchronized Column column(String name, boolean defaultVisible) {
020 return column(name, Object.class, defaultVisible);
021 }
022
023 public synchronized Column column(String name, Class type, boolean defaultVisible) {
024 Column column = new Column(columns.size(), name, type, defaultVisible);
025 columns.add(column);
026 return column;
027 }
028
029 public List getColumns() {
030 return Collections.unmodifiableList(columns);
031 }
032
033 public Column getColumn(int index) {
034 return (Column) columns.get(index);
035 }
036
037 public int getColumnCount() {
038 return columns.size();
039 }
040
041 public class Column {
042 private final int index;
043 private final String name;
044 private final Class type;
045 private final boolean defaultVisible;
046
047
048 public Column(int index, String name, Class type, boolean defaultVisible) {
049 this.index = index;
050 this.name = name;
051 this.type = type;
052 this.defaultVisible = defaultVisible;
053 }
054
055 public int getIndex() {
056 return index;
057 }
058
059 public String getName() {
060 return name;
061 }
062
063 public Class getType() {
064 return type;
065 }
066
067 public boolean isDefaultVisible() {
068 return defaultVisible;
069 }
070 }
071 }