private final ISqlJetForeignKeyDeferrable deferrable;
public SqlJetForeignKey(CommonTree ast) {
assert "references".equalsIgnoreCase(ast.getText());
foreignTableName = ast.getChild(0).getText();
CommonTree columnsNode = (CommonTree) ast.getChild(1);
assert "columns".equalsIgnoreCase(columnsNode.getText());
List<String> columnNames = new ArrayList<String>();
for (int i = 0; i < columnsNode.getChildCount(); i++) {
columnNames.add(columnsNode.getChild(i).getText());
}
this.columnNames = Collections.unmodifiableList(columnNames);
List<ISqlJetForeignKeyAction> actions = new ArrayList<ISqlJetForeignKeyAction>();
ISqlJetForeignKeyDeferrable deferrable = null;
for (int i = 2; i < ast.getChildCount(); i++) {
CommonTree child = (CommonTree) ast.getChild(i);
if ("deferrable".equalsIgnoreCase(child.getText())) {
assert deferrable == null;
deferrable = new SqlJetForeignKeyDeferrable(child);
} else if ("on".equalsIgnoreCase(child.getText())) {
actions.add(new SqlJetForeignKeyUpdateAction(child));
} else if ("match".equalsIgnoreCase(child.getText())) {
actions.add(new SqlJetForeignKeyMatchAction(child));
} else {
assert false;
}
}