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