1 package net.jaekl.cfb.db;
3 // Copyright (C) 2015 Christian Jaekl
5 import java.util.ArrayList;
6 import java.util.Arrays;
7 import java.util.HashMap;
11 HashMap<String, Column> m_columnsByName;
12 ArrayList<Column> m_columns;
14 public Table(String name, Column[] columns) {
17 m_columns = new ArrayList<Column>();
18 m_columns.addAll(Arrays.asList(columns));
20 m_columnsByName = new HashMap<String, Column>();
21 for (int i = 0; i < columns.length; ++i) {
22 m_columnsByName.put(columns[i].getName(), columns[i]);
26 public String getName() { return m_name; }
27 public int getNumColumns() { return m_columns.size(); }
28 public Column getColumn(int idx) { return m_columns.get(idx); }
29 public Column getColumn(String name) { return m_columnsByName.get(name); }
31 // Construct a table from an array of objects like this:
34 // { column_name, type, width (-1 for default), null/not_null }
36 public static Table construct(Object[][] spec)
39 assert(spec.length > 1);
40 assert(1 == spec[0].length);
41 assert(spec[0][0] instanceof String);
43 String name = (String)(spec[0][0]);
44 Column[] columns = new Column[spec.length - 1];
46 for (int idx = 1; idx < spec.length; ++idx) {
47 columns[idx - 1] = Column.construct(spec[idx]);
50 return new Table(name, columns);