77import com .github .elic0de .thejpspit .player .PitPlayer ;
88import com .github .elic0de .thejpspit .player .Preferences ;
99import com .zaxxer .hikari .HikariDataSource ;
10+ import org .bukkit .Bukkit ;
11+ import org .bukkit .entity .Player ;
12+
1013import java .nio .charset .StandardCharsets ;
11- import java .sql .Connection ;
12- import java .sql .PreparedStatement ;
13- import java .sql .ResultSet ;
14- import java .sql .SQLException ;
15- import java .sql .Statement ;
14+ import java .sql .*;
1615import java .util .Optional ;
1716import java .util .Properties ;
1817import java .util .UUID ;
19- import java .util .concurrent .CompletableFuture ;
2018import java .util .logging .Level ;
21- import org .bukkit .Bukkit ;
22- import org .bukkit .entity .Player ;
2319
2420public class MySqlDatabase extends Database {
2521
@@ -41,8 +37,7 @@ private void setConnection() {
4137 final Settings settings = plugin .getSettings ();
4238
4339 // Create jdbc driver connection url
44- final String jdbcUrl = "jdbc:mysql://" + settings .getMySqlHost () + ":" + settings .getMySqlPort () + "/"
45- + settings .getMySqlDatabase () + settings .getMySqlConnectionParameters ();
40+ final String jdbcUrl = "jdbc:mysql://" + settings .getMySqlHost () + ":" + settings .getMySqlPort () + "/" + settings .getMySqlDatabase () + settings .getMySqlConnectionParameters ();
4641 dataSource = new HikariDataSource ();
4742 dataSource .setJdbcUrl (jdbcUrl );
4843
@@ -104,45 +99,38 @@ public Optional<PitPlayer> getPitPlayer(Player player) {
10499
105100 @ Override
106101 public Optional <PitPlayer > getPitPlayer (UUID uuid ) {
107- try (PreparedStatement statement = getConnection (). prepareStatement (
108- format ("""
102+ try (Connection connection = getConnection ()) {
103+ try ( PreparedStatement statement = connection . prepareStatement ( format ("""
109104 SELECT `kills`, `streaks`, `bestStreaks`, `deaths`, `rating`, `bestRating`, `xp`, `preferences`
110105 FROM `%user_data%`
111106 WHERE `uuid`=?""" ))) {
112107
113- statement .setString (1 , uuid .toString ());
114-
115- final ResultSet resultSet = statement .executeQuery ();
116- if (resultSet .next ()) {
117- final String preferences = new String (resultSet .getBytes ("preferences" ), StandardCharsets .UTF_8 );
118- return Optional .of (new PitPlayer (Bukkit .getPlayer (uuid ),
119- resultSet .getLong ("kills" ),
120- resultSet .getLong ("streaks" ),
121- resultSet .getLong ("bestStreaks" ),
122- resultSet .getLong ("deaths" ),
123- resultSet .getDouble ("rating" ),
124- resultSet .getDouble ("bestRating" ),
125- resultSet .getDouble ("xp" ),
126- Optional .of (plugin .getGson ().fromJson (preferences , Preferences .class ))
127- ));
108+ statement .setString (1 , uuid .toString ());
109+
110+ final ResultSet resultSet = statement .executeQuery ();
111+ if (resultSet .next ()) {
112+ final String preferences = new String (resultSet .getBytes ("preferences" ), StandardCharsets .UTF_8 );
113+ return Optional .of (new PitPlayer (Bukkit .getPlayer (uuid ), resultSet .getLong ("kills" ), resultSet .getLong ("streaks" ), resultSet .getLong ("bestStreaks" ), resultSet .getLong ("deaths" ), resultSet .getDouble ("rating" ), resultSet .getDouble ("bestRating" ), resultSet .getDouble ("xp" ), Optional .of (plugin .getGson ().fromJson (preferences , Preferences .class ))));
114+ }
128115 }
129116 } catch (SQLException e ) {
130- Bukkit .getLogger ().log (Level .SEVERE ,
131- "Failed to fetch a player from uuid from the database" , e );
117+ Bukkit .getLogger ().log (Level .SEVERE , "Failed to fetch a player from uuid from the database" , e );
132118 }
133119 return Optional .empty ();
134120 }
135121
136122 @ Override
137123 public Optional <PitPreferences > getPitPreferences () {
138- try (PreparedStatement statement = getConnection ().prepareStatement (format ("""
139- SELECT `preferences`
140- FROM `%pit_data%`
141- """ ))) {
142- final ResultSet resultSet = statement .executeQuery ();
143- if (resultSet .next ()) {
144- final String preferences = new String (resultSet .getBytes ("preferences" ), StandardCharsets .UTF_8 );
145- return Optional .of (plugin .getGson ().fromJson (preferences , PitPreferences .class ));
124+ try (Connection connection = getConnection ()) {
125+ try (PreparedStatement statement = connection .prepareStatement (format ("""
126+ SELECT `preferences`
127+ FROM `%pit_data%`
128+ """ ))) {
129+ final ResultSet resultSet = statement .executeQuery ();
130+ if (resultSet .next ()) {
131+ final String preferences = new String (resultSet .getBytes ("preferences" ), StandardCharsets .UTF_8 );
132+ return Optional .of (plugin .getGson ().fromJson (preferences , PitPreferences .class ));
133+ }
146134 }
147135 } catch (SQLException e ) {
148136 Bukkit .getLogger ().log (Level .SEVERE , "Failed to fetch user data from table by UUID" , e );
@@ -152,46 +140,37 @@ public Optional<PitPreferences> getPitPreferences() {
152140
153141 @ Override
154142 public Optional <OfflinePitPlayer > getOfflinePitPlayer (UUID uuid ) {
155- try (PreparedStatement statement = getConnection (). prepareStatement (
156- format ("""
143+ try (Connection connection = getConnection ()) {
144+ try ( PreparedStatement statement = connection . prepareStatement ( format ("""
157145 SELECT `kills`, `streaks`, `bestStreaks`, `deaths`, `rating`, `bestRating`, `xp`
158146 FROM `%user_data%`
159147 WHERE `uuid`=?""" ))) {
160148
161- statement .setString (1 , uuid .toString ());
162-
163- final ResultSet resultSet = statement .executeQuery ();
164- if (resultSet .next ()) {
165- return Optional .of (new OfflinePitPlayer (uuid ,
166- resultSet .getLong ("kills" ),
167- resultSet .getLong ("streaks" ),
168- resultSet .getLong ("bestStreaks" ),
169- resultSet .getLong ("deaths" ),
170- resultSet .getDouble ("rating" ),
171- resultSet .getDouble ("bestRating" ),
172- resultSet .getDouble ("xp" )
173- ));
149+ statement .setString (1 , uuid .toString ());
150+
151+ final ResultSet resultSet = statement .executeQuery ();
152+ if (resultSet .next ()) {
153+ return Optional .of (new OfflinePitPlayer (uuid , resultSet .getLong ("kills" ), resultSet .getLong ("streaks" ), resultSet .getLong ("bestStreaks" ), resultSet .getLong ("deaths" ), resultSet .getDouble ("rating" ), resultSet .getDouble ("bestRating" ), resultSet .getDouble ("xp" )));
154+ }
174155 }
175156 } catch (SQLException e ) {
176- Bukkit .getLogger ().log (Level .SEVERE ,
177- "Failed to fetch a player from uuid from the database" , e );
157+ Bukkit .getLogger ().log (Level .SEVERE , "Failed to fetch a player from uuid from the database" , e );
178158 }
179159 return Optional .empty ();
180160 }
181161
182162 @ Override
183163 public Optional <Integer > getPlayerRanking (PitPlayer player , RankType type ) {
184- try {
164+ try ( Connection connection = getConnection ()) {
185165 String test = """
186- SELECT uuid, rank
187- FROM(SELECT `uuid`,
188- RANK()
189- OVER(ORDER BY %type% DESC)
190- AS rank FROM `%user_data%`)
191- WHERE `uuid`=?;
192- """ ;
193- try (PreparedStatement statement = getConnection ().prepareStatement (
194- format (test .replaceAll ("%type%" , type .name ().toLowerCase ())))) {
166+ SELECT uuid, rank
167+ FROM(SELECT `uuid`,
168+ RANK()
169+ OVER(ORDER BY %type% DESC)
170+ AS rank FROM `%user_data%`)
171+ WHERE `uuid`=?;
172+ """ ;
173+ try (PreparedStatement statement = connection .prepareStatement (format (test .replaceAll ("%type%" , type .name ().toLowerCase ())))) {
195174 statement .setString (1 , player .getUniqueId ().toString ());
196175
197176 final ResultSet resultSet = statement .executeQuery ();
@@ -200,54 +179,47 @@ public Optional<Integer> getPlayerRanking(PitPlayer player, RankType type) {
200179 }
201180 }
202181 } catch (SQLException e ) {
203- Bukkit .getLogger ().log (Level .SEVERE ,
204- "Failed to fetch a player from uuid from the database" , e );
205- }
206- return Optional .empty ();
182+ Bukkit .getLogger ().log (Level .SEVERE , "Failed to fetch a player from uuid from the database" , e );
183+ } return Optional .empty ();
207184 }
208185
209186 @ Override
210187 public void createPitPlayer (Player player ) {
211188 // Insert new player data into the database
212- try {
213- try (PreparedStatement statement = getConnection ().prepareStatement (
214- format ("""
215- INSERT INTO `%user_data%` (`uuid`,`username`,`preferences`)
216- VALUES (?,?,?);""" ))) {
189+ try (Connection connection = getConnection ()) {
190+ try (PreparedStatement statement = connection .prepareStatement (format ("""
191+ INSERT INTO `%user_data%` (`uuid`,`username`,`preferences`)
192+ VALUES (?,?,?);""" ))) {
217193
218194 statement .setString (1 , player .getUniqueId ().toString ());
219195 statement .setString (2 , player .getName ());
220196 statement .setBytes (3 , plugin .getGson ().toJson (Preferences .getDefaults ()).getBytes (StandardCharsets .UTF_8 ));
221197 statement .executeUpdate ();
222198 }
223199 } catch (SQLException e ) {
224- Bukkit .getLogger ().log (Level .SEVERE ,
225- "Failed to insert a player into the database" , e );
200+ Bukkit .getLogger ().log (Level .SEVERE , "Failed to insert a player into the database" , e );
226201 }
227202 }
228203
229204 @ Override
230205 public void createPitPreferences (PitPreferences pitPreferences ) {
231- try {
232- try (PreparedStatement statement = getConnection ().prepareStatement (
233- format ("""
234- INSERT INTO `%pit_data%` (`preferences`)
235- VALUES (?);""" ))) {
206+ try (Connection connection = getConnection ()) {
207+ try (PreparedStatement statement = connection .prepareStatement (format ("""
208+ INSERT INTO `%pit_data%` (`preferences`)
209+ VALUES (?);""" ))) {
236210
237211 statement .setBytes (1 , plugin .getGson ().toJson (pitPreferences ).getBytes (StandardCharsets .UTF_8 ));
238212 statement .executeUpdate ();
239213 }
240214 } catch (SQLException e ) {
241- Bukkit .getLogger ().log (Level .SEVERE ,
242- "Failed to insert a player into the database" , e );
215+ Bukkit .getLogger ().log (Level .SEVERE , "Failed to insert a player into the database" , e );
243216 }
244217 }
245218
246219 @ Override
247220 public void updateUserData (PitPlayer player ) {
248- try {
249- try (PreparedStatement statement = getConnection ().prepareStatement (
250- format ("""
221+ try (Connection connection = getConnection ()) {
222+ try (PreparedStatement statement = connection .prepareStatement (format ("""
251223 UPDATE `%user_data%`
252224 SET `kills`=?, `streaks`=?, `bestStreaks`=?, `deaths`=?, `rating`=?, `bestRating`=?, `xp`=?, `preferences`=?
253225 WHERE `uuid`=?""" ))) {
@@ -263,18 +235,15 @@ public void updateUserData(PitPlayer player) {
263235 statement .setString (9 , player .getUniqueId ().toString ());
264236 statement .executeUpdate ();
265237 }
266-
267238 } catch (SQLException e ) {
268- Bukkit .getLogger ().log (Level .SEVERE ,
269- "Failed to update user data for " + player .getName () + " on the database" , e );
239+ Bukkit .getLogger ().log (Level .SEVERE , "Failed to update user data for " + player .getName () + " on the database" , e );
270240 }
271241 }
272242
273243 @ Override
274244 public void updateUserData (OfflinePitPlayer player ) {
275- try {
276- try (PreparedStatement statement = getConnection ().prepareStatement (
277- format ("""
245+ try (Connection connection = getConnection ()) {
246+ try (PreparedStatement statement = connection .prepareStatement (format ("""
278247 UPDATE `%user_data%`
279248 SET `kills`=?, `streaks`=?, `deaths`=?, `rating`=?, `xp`=?
280249 WHERE `uuid`=?""" ))) {
@@ -287,21 +256,21 @@ public void updateUserData(OfflinePitPlayer player) {
287256 statement .setString (6 , player .getUniqueId ().toString ());
288257 statement .executeUpdate ();
289258 }
290-
291259 } catch (SQLException e ) {
292- Bukkit .getLogger ().log (Level .SEVERE ,
293- "Failed to update user data for " + player .getUniqueId ().toString () + " on the database" , e );
260+ Bukkit .getLogger ().log (Level .SEVERE , "Failed to update user data for " + player .getUniqueId ().toString () + " on the database" , e );
294261 }
295262 }
296263
297264 @ Override
298265 public void updatePitPreferences (PitPreferences pitPreferences ) {
299- try (PreparedStatement statement = getConnection ().prepareStatement (format ("""
300- UPDATE `%pit_data%`
301- SET `preferences` = ?
302- """ ))) {
303- statement .setBytes (1 , plugin .getGson ().toJson (pitPreferences ).getBytes (StandardCharsets .UTF_8 ));
304- statement .executeUpdate ();
266+ try (Connection connection = getConnection ()) {
267+ try (PreparedStatement statement = connection .prepareStatement (format ("""
268+ UPDATE `%pit_data%`
269+ SET `preferences` = ?
270+ """ ))) {
271+ statement .setBytes (1 , plugin .getGson ().toJson (pitPreferences ).getBytes (StandardCharsets .UTF_8 ));
272+ statement .executeUpdate ();
273+ }
305274 } catch (SQLException e ) {
306275 Bukkit .getLogger ().log (Level .SEVERE , "Failed to update preferences in table" , e );
307276 }
0 commit comments