package org.rhq.core.db.setup; import java.util.List; import org.rhq.core.db.H2DatabaseType; import org.rhq.core.db.builders.CreateSequenceExprBuilder; import org.w3c.dom.Node; import org.xml.sax.SAXException; public class H2Column extends Column { protected H2Column(Node node, Table table) throws SAXException { super(node, table); } protected String getDefaultCommand(List cmds) { if (m_strType.equalsIgnoreCase("auto") || (m_iDefault == Column.DEFAULT_SEQUENCE_ONLY)) { return ""; } return "DEFAULT nextval('" + getSequenceName() + "')"; } protected void getPreCreateCommands(List cmds) { if (m_strType.equalsIgnoreCase("auto")) { return; } if (hasDefault()) { switch (getDefault()) { case Column.DEFAULT_AUTO_INCREMENT: case Column.DEFAULT_SEQUENCE_ONLY: { cmds.add(0, buildSequenceSqlExpr(CreateSequenceExprBuilder.getBuilder(H2DatabaseType.VENDOR_NAME), getSequenceName())); break; } } } } protected void getDropCommands(List cmds) { if (hasDefault()) { switch (getDefault()) { case Column.DEFAULT_SEQUENCE_ONLY: case Column.DEFAULT_AUTO_INCREMENT: { cmds.add("DROP SEQUENCE " + getSequenceName()); break; } } } } private String getSequenceName() { String tableName = this.m_strTableName.toUpperCase(); String columnName = this.getName().toUpperCase(); String sequenceName = tableName + '_' + columnName + "_SEQ"; return sequenceName; } }