class SqliteMaxValueIncrementer extends AbstractColumnMaxValueIncrementer {

	public SqliteMaxValueIncrementer(DataSource dataSource, String incrementerName, String columnName) {
		super(dataSource, incrementerName, columnName);
	}

	@Override
	protected long getNextKey() {<FILL_FUNCTION_BODY>}

}

		Connection con = DataSourceUtils.getConnection(getDataSource());
		Statement stmt = null;
		try {
			stmt = con.createStatement();
			DataSourceUtils.applyTransactionTimeout(stmt, getDataSource());
			stmt.executeUpdate("insert into " + getIncrementerName() + " values(null)");
			ResultSet rs = stmt.executeQuery("select max(rowid) from " + getIncrementerName());
			if (!rs.next()) {
				throw new DataAccessResourceFailureException("rowid query failed after executing an update");
			}
			long nextKey = rs.getLong(1);
			stmt.executeUpdate("delete from " + getIncrementerName() + " where " + getColumnName() + " < " + nextKey);
			return nextKey;
		}
		catch (SQLException ex) {
			throw new DataAccessResourceFailureException("Could not obtain rowid", ex);
		}
		finally {
			JdbcUtils.closeStatement(stmt);
			DataSourceUtils.releaseConnection(con, getDataSource());
		}
	
<methods>public void <init>() ,public void <init>(javax.sql.DataSource, java.lang.String, java.lang.String) ,public void afterPropertiesSet() ,public int getCacheSize() ,public java.lang.String getColumnName() ,public void setCacheSize(int) ,public void setColumnName(java.lang.String) <variables>private int cacheSize,private java.lang.String columnName