Initial commit.
[cfb.git] / prod / net / jaekl / cfb / db / Table.java
1 package net.jaekl.cfb.db;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5
6 public class Table {
7         String m_name;
8         ArrayList<Column> m_columns;
9         
10         public Table(String name, Column[] columns) {
11                 m_name = name;
12                 m_columns = new ArrayList<Column>(Arrays.asList(columns));              
13         }
14         
15         public String getName() { return m_name; }
16         public int getNumColumns() { return m_columns.size(); }
17         public Column getColumn(int idx) { return m_columns.get(idx); }
18         
19         // Construct a table from an array of objects like this:
20         // {
21         //   { table_name },
22         //   { column_name, type, width (-1 for default), null/not_null }
23         // }
24         public static Table construct(Object[][] spec) 
25         {
26                 assert(null != spec);
27                 assert(spec.length > 1);
28                 assert(1 == spec[0].length);
29                 assert(spec[0][0] instanceof String);
30                 
31                 String name = (String)(spec[0][0]);
32                 Column[] columns = new Column[spec.length - 1];
33                 
34                 for (int idx = 1; idx < spec.length; ++idx) {
35                         columns[idx - 1] = Column.construct(spec[idx]);
36                 }
37                 
38                 return new Table(name, columns);
39         }
40 }