· 8 years ago · Apr 06, 2018, 12:38 AM
1public class DataSaved {
2
3 public DataSaved() {
4 saveData();
5 }
6
7 public void saveData() {
8 if (Skywars.useData()) {
9 try {
10 Statement s = Skywars.getData().createStatement();
11 s.executeUpdate(
12 "CREATE TABLE IF NOT EXISTS `player_data` (`uuid` VARCHAR(36), `name` VARCHAR(32), `kills` INT, `deaths` INT, `wins` INT, `games` INT, `break` INT, `placed` INT, `steps` INT, `glass` VARCHAR(28), `trail` VARCHAR(28));");
13 s.close();
14 System.out.println("Database create table done!");
15 } catch (Exception e) {
16 e.printStackTrace();
17 }
18 }
19 }
20
21 public void createData(Player p) {
22 if (Skywars.useData()) {
23 try {
24
25 Statement s = Skywars.getData().createStatement();
26 ResultSet rs = s.executeQuery("SELECT * FROM `player_data` WHERE uuid = '" + p.getUniqueId() + "';");
27 if (!rs.next()) {
28 s.executeUpdate(
29 "INSERT INTO `player_data` (`uuid`, `name`, `kills`, `deaths`, `wins`, `games` ,`break` ,`placed` ,`steps` , `glass`, `trail`) VALUES( '"
30 + p.getUniqueId() + "','" + p.getName()
31 + "', '0', '0', '0', '0', '0', '0', '0', 'normal', 'normal');");
32 s.close();
33 }
34
35 } catch (Exception e) {
36 e.printStackTrace();
37 }
38 } else {
39 DuoFile yml = new DuoFile(p);
40 yml.createDataPlayer();
41 System.out.println("File created!");
42 }
43 }
44
45 public void loadData(final DPlayer player) {
46 Bukkit.getScheduler().runTaskAsynchronously(Skywars.getSkywars(), new Runnable() {
47 @Override
48 public void run() {
49 if (Skywars.useData()) {
50 Connection connection = Skywars.getData();
51 PreparedStatement preparedStatement = null;
52 ResultSet resultSet = null;
53
54 try {
55 StringBuilder queryBuilder = new StringBuilder();
56 queryBuilder.append(
57 "SELECT `name`, `kills`, `deaths`, `wins`, `games`, `break`, `placed`, `steps`, `glass`, `trail` ");
58 queryBuilder.append("FROM `player_data` ");
59 queryBuilder.append("WHERE `uuid` = ? ");
60 queryBuilder.append("LIMIT 1;");
61
62 preparedStatement = connection.prepareStatement(queryBuilder.toString());
63 preparedStatement.setString(1, player.getPlayer().getUniqueId().toString());
64 resultSet = preparedStatement.executeQuery();
65
66 if (resultSet != null && resultSet.next()) {
67 player.setGames(resultSet.getInt("games"));
68 player.setWins(resultSet.getInt("wins"));
69 player.setKills(resultSet.getInt("kills"));
70 player.setDeaths(resultSet.getInt("deaths"));
71 player.setPlacedBlocks(resultSet.getInt("placed"));
72 player.setBreakBlocks(resultSet.getInt("break"));
73 player.setWalked(resultSet.getInt("steps"));
74 if (resultSet.getString("glass") != null) {
75 player.setGlass(resultSet.getString("glass"));
76 } else {
77 player.setGlass("normal");
78 }
79
80 if (resultSet.getString("trail") != null) {
81 player.setTrail(resultSet.getString("trail"));
82 } else {
83 player.setTrail("normal");
84 }
85 }
86
87 } catch (final SQLException sqlException) {
88 sqlException.printStackTrace();
89 } finally {
90 if (preparedStatement != null) {
91 try {
92 preparedStatement.close();
93 } catch (final SQLException ignored) {
94 }
95 }
96 }
97
98 } else {
99 DuoFile data = new DuoFile(player.getPlayer());
100 player.setGames(data.get().getInt("games"));
101 player.setWins(data.get().getInt("wins"));
102 player.setKills(data.get().getInt("kills"));
103 player.setDeaths(data.get().getInt("deaths"));
104 player.setPlacedBlocks(data.get().getInt("placed"));
105 player.setBreakBlocks(data.get().getInt("break"));
106 player.setWalked(data.get().getInt("steps"));
107 player.setGlass(data.get().getString("glass"));
108 player.setTrail(data.get().getString("trail"));
109
110 }
111
112 Skywars.getHoloPlayer().addHoloStats(player);
113 }
114
115 });
116
117 }
118
119 public void unloadData(final DPlayer player) {
120
121 if (Skywars.useData()) {
122
123 Connection connection = Skywars.getData();
124 PreparedStatement preparedStatement = null;
125
126 try {
127 StringBuilder queryBuilder = new StringBuilder();
128 queryBuilder.append("UPDATE `player_data` SET ");
129 queryBuilder.append(" `games` = ?, `wins` = ?, ");
130 queryBuilder.append("`kills` = ?, `deaths` = ?, ");
131 queryBuilder.append("`placed` = ?, `break` = ?, `steps` = ?, `glass` = ?, `trail` = ?");
132 queryBuilder.append("WHERE `uuid` = ?;");
133
134 preparedStatement = connection.prepareStatement(queryBuilder.toString());
135 preparedStatement.setInt(1, player.getGames());
136 preparedStatement.setInt(2, player.getWins());
137 preparedStatement.setInt(3, player.getKills());
138 preparedStatement.setInt(4, player.getDeaths());
139 preparedStatement.setInt(5, player.getBlockPlaceds());
140 preparedStatement.setInt(6, player.getBlockBreaks());
141 preparedStatement.setInt(7, player.getWalked());
142 preparedStatement.setString(8, player.getGlass());
143 preparedStatement.setString(9, player.getTrail());
144 preparedStatement.setString(10, player.getPlayer().getUniqueId().toString());
145 preparedStatement.executeUpdate();
146
147 } catch (final SQLException sqlException) {
148 sqlException.printStackTrace();
149
150 } finally {
151 if (preparedStatement != null) {
152 try {
153 preparedStatement.close();
154 } catch (final SQLException ignored) {
155 }
156 }
157 }
158 } else {
159 DuoFile data = new DuoFile(player.getPlayer());
160 data.get().set("games", player.getGames());
161 data.get().set("wins", player.getWins());
162 data.get().set("kills", player.getKills());
163 data.get().set("deaths", player.getDeaths());
164 data.get().set("placed", player.getBlockPlaceds());
165 data.get().set("break", player.getBlockBreaks());
166 data.get().set("steps", player.getWalked());
167 data.get().set("glass", player.getGlass());
168 data.get().set("trail", player.getTrail());
169 data.save();
170 }
171
172 }
173
174 public Map<String, Integer> getTopKills() {
175
176 final Map<String, Integer> topScore = Maps.newLinkedHashMap();
177
178 PreparedStatement preparedStatement = null;
179 ResultSet resultSet = null;
180 Connection connection = Skywars.getData();
181 try {
182 String top = "SELECT * FROM player_data ORDER BY kills DESC LIMIT 10";
183
184 preparedStatement = connection.prepareStatement(top);
185 resultSet = preparedStatement.executeQuery();
186
187 while (resultSet.next()) {
188 topScore.put(resultSet.getString("name"), resultSet.getInt("kills"));
189 }
190 return topScore;
191 } catch (final SQLException sqlException) {
192 sqlException.printStackTrace();
193
194 }
195
196 return null;
197 }
198
199 public Map<String, Integer> getTopWins() {
200
201 final Map<String, Integer> topScore = Maps.newLinkedHashMap();
202
203 PreparedStatement preparedStatement = null;
204 ResultSet resultSet = null;
205 Connection connection = Skywars.getData();
206 try {
207 String top = "SELECT * FROM player_data ORDER BY wins DESC LIMIT 10";
208
209 preparedStatement = connection.prepareStatement(top);
210 resultSet = preparedStatement.executeQuery();
211
212 while (resultSet.next()) {
213 topScore.put(resultSet.getString("name"), resultSet.getInt("wins"));
214 }
215 return topScore;
216 } catch (final SQLException sqlException) {
217 sqlException.printStackTrace();
218
219 }
220
221 return null;
222 }
223}