]> source.dussan.org Git - sonarqube.git/blob
2d7af722ab91f78376c9647a03fad34a3094504a
[sonarqube.git] /
1 /*
2  * SonarQube
3  * Copyright (C) 2009-2020 SonarSource SA
4  * mailto:info AT sonarsource DOT com
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20 package org.sonar.server.platform.db.migration.step;
21
22 import java.sql.PreparedStatement;
23 import java.sql.SQLException;
24 import java.sql.Timestamp;
25 import java.sql.Types;
26 import java.util.Date;
27 import javax.annotation.Nullable;
28 import org.apache.commons.dbutils.DbUtils;
29
30 class BaseSqlStatement<CHILD extends SqlStatement> implements SqlStatement<CHILD> {
31   protected PreparedStatement pstmt;
32
33   protected BaseSqlStatement(PreparedStatement pstmt) {
34     this.pstmt = pstmt;
35   }
36
37   @Override
38   public void close() {
39     DbUtils.closeQuietly(pstmt);
40     pstmt = null;
41   }
42
43   @Override
44   @SuppressWarnings("unchecked")
45   public CHILD setString(int columnIndex, @Nullable String value) throws SQLException {
46     pstmt.setString(columnIndex, value);
47     return (CHILD) this;
48   }
49
50   @Override
51   @SuppressWarnings("unchecked")
52   public CHILD setInt(int columnIndex, @Nullable Integer value) throws SQLException {
53     if (value == null) {
54       pstmt.setNull(columnIndex, Types.INTEGER);
55     } else {
56       pstmt.setInt(columnIndex, value);
57     }
58     return (CHILD) this;
59   }
60
61   @Override
62   @SuppressWarnings("unchecked")
63   public CHILD setLong(int columnIndex, @Nullable Long value) throws SQLException {
64     if (value == null) {
65       pstmt.setNull(columnIndex, Types.BIGINT);
66     } else {
67       pstmt.setLong(columnIndex, value);
68     }
69     return (CHILD) this;
70   }
71
72   @Override
73   @SuppressWarnings("unchecked")
74   public CHILD setBoolean(int columnIndex, @Nullable Boolean value) throws SQLException {
75     if (value == null) {
76       pstmt.setNull(columnIndex, Types.BOOLEAN);
77     } else {
78       pstmt.setBoolean(columnIndex, value);
79     }
80     return (CHILD) this;
81   }
82
83   @Override
84   @SuppressWarnings("unchecked")
85   public CHILD setBytes(int columnIndex, @Nullable byte[] value) throws SQLException {
86     if (value == null) {
87       pstmt.setNull(columnIndex, Types.BINARY);
88     } else {
89       pstmt.setBytes(columnIndex, value);
90     }
91     return (CHILD) this;
92   }
93
94   @Override
95   @SuppressWarnings("unchecked")
96   public CHILD setDouble(int columnIndex, @Nullable Double value) throws SQLException {
97     if (value == null) {
98       pstmt.setNull(columnIndex, Types.DOUBLE);
99     } else {
100       pstmt.setDouble(columnIndex, value);
101     }
102     return (CHILD) this;
103   }
104
105   @Override
106   @SuppressWarnings("unchecked")
107   public CHILD setDate(int columnIndex, @Nullable Date value) throws SQLException {
108     if (value == null) {
109       pstmt.setNull(columnIndex, Types.TIMESTAMP);
110     } else {
111       pstmt.setTimestamp(columnIndex, new Timestamp(value.getTime()));
112     }
113     return (CHILD) this;
114   }
115 }