// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.apidb.common; /** * Postgresql implementation of an identity value loader. * * @author Brett Henderson */ public class PostgresqlIdentityValueLoader2 implements IdentityValueLoader { private static final String SQL_SELECT_LAST_INSERT_ID = "SELECT lastval() AS lastInsertId"; private static final String SQL_SELECT_LAST_SEQUENCE_ID = "SELECT currval(?) AS lastSequenceId"; private DatabaseContext2 dbCtx; /** * Creates a new instance. * * @param dbCtx * The database context to use for all database access. */ public PostgresqlIdentityValueLoader2(DatabaseContext2 dbCtx) { this.dbCtx = dbCtx; } /** * Returns the id of the most recently inserted row on the current * connection. * * @return The newly inserted id. */ public long getLastInsertId() { return dbCtx.getJdbcTemplate().queryForObject(SQL_SELECT_LAST_INSERT_ID, Long.class); } /** * {@inheritDoc} */ @Override public long getLastSequenceId(String sequenceName) { return dbCtx.getJdbcTemplate().queryForObject(SQL_SELECT_LAST_SEQUENCE_ID, Long.class, sequenceName); } /** * {@inheritDoc} */ @Override public void close() { // Do nothing. } }