1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.waarp.openr66.dao.database.mysql;
22
23 import org.waarp.openr66.dao.database.DBTransferDAO;
24 import org.waarp.openr66.dao.exception.DAOConnectionException;
25
26 import java.sql.Connection;
27 import java.sql.PreparedStatement;
28 import java.sql.ResultSet;
29 import java.sql.SQLException;
30
31 public class MySqlDBTransferDAO extends DBTransferDAO {
32
33 protected static final String SQL_GET_ID =
34 "SELECT seq FROM Sequences " + "WHERE name='RUNSEQ' FOR UPDATE";
35 private static final String SQL_UPDATE_ID =
36 "UPDATE Sequences SET seq = ? " + "WHERE name='RUNSEQ'";
37
38 public MySqlDBTransferDAO(final Connection con)
39 throws DAOConnectionException {
40 super(con);
41 }
42
43 @Override
44 protected final long getNextId() throws DAOConnectionException {
45 PreparedStatement ps = null;
46 PreparedStatement ps2 = null;
47 ResultSet rs = null;
48 try {
49 ps = connection.prepareStatement(SQL_GET_ID);
50 rs = ps.executeQuery();
51 final long res;
52 if (rs.next()) {
53 res = rs.getLong(1);
54 ps2 = connection.prepareStatement(SQL_UPDATE_ID);
55 ps2.setLong(1, res + 1);
56 ps2.executeUpdate();
57 return res;
58 } else {
59 throw new DAOConnectionException(
60 "Error no id available, you should purge the database.");
61 }
62 } catch (final SQLException e) {
63 throw new DAOConnectionException(e);
64 } finally {
65 try {
66 if (rs != null) {
67 rs.close();
68 }
69 } catch (final SQLException e) {
70
71 }
72 closeStatement(ps);
73 closeStatement(ps2);
74 }
75 }
76 }