View Javadoc
1   package fr.ifremer.quadrige3.core.dao.technical.jdbc;
2   
3   /*-
4    * #%L
5    * Quadrige3 Core :: Shared
6    * %%
7    * Copyright (C) 2017 - 2020 Ifremer
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU Affero General Public License as published by
11   * the Free Software Foundation, either version 3 of the License, or
12   * (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU Affero General Public License
20   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21   * #L%
22   */
23  import java.sql.*;
24  
25  /**
26   * @author peck7 on 25/02/2020.
27   */
28  public class PostgresqlStatements {
29  
30      private static final String RESET_ALL_SEQUENCES_SQL = "select reset_all_sequences();";
31  
32      private static final String DISABLE_ALL_CONSTRAINTS_SQL = "set session_replication_role = replica;";
33  
34      private static final String ENABLE_ALL_CONSTRAINTS_SQL = "set session_replication_role = origin;";
35  
36      public static void resetAllSequences(Connection connection) throws SQLException {
37          execute(connection, RESET_ALL_SEQUENCES_SQL);
38      }
39  
40      public static void setIntegrityConstraints(Connection connection, boolean enableIntegrityConstraints) throws SQLException {
41          // Disable
42          if (!enableIntegrityConstraints) {
43              execute(connection, DISABLE_ALL_CONSTRAINTS_SQL);
44          }
45  
46          // Enable
47          else {
48              execute(connection, ENABLE_ALL_CONSTRAINTS_SQL);
49          }
50      }
51  
52      private static void execute(Connection connection, String procedure) throws SQLException {
53          PreparedStatement stat = connection.prepareStatement(procedure);
54          stat.execute();
55      }
56  
57  }