· 4 years ago · Jan 13, 2021, 08:36 PM
1public class DzialkiMySQL extends RestartMySQL {
2
3 public DzialkiMySQL(ZommonPlugin come) {
4 super(come);
5 }
6
7 @Override
8 public void save() {
9 try {
10 try (Connection c = this.getConnection();){
11
12 for(Dzialka dzialka : this.getPlugin().getPlugin().getDzialki()) {
13 try (PreparedStatement ps = DatabaseUtils.prepareStatement(c, this.saveDzialka(dzialka));){
14 ps.executeUpdate();
15 }
16 }
17 }
18 }
19 catch (SQLException ex) {
20 ex.printStackTrace();
21 }
22 }
23
24 @Override
25 public void updateDatabase() {
26 try {
27 try (Connection c = this.ds.getConnection();
28 Statement st = c.createStatement();){
29 String data = "CREATE TABLE IF NOT EXISTS `" + this.pREFIX + "`(`uuid` VARCHAR(50) NOT NULL,`gracze` TEXT NOT NULL,`rozmiar` INT NOT NULL,`srodek` TEXT NOT NULL,PRIMARY KEY (`uuid`));";
30 //String oceny = "CREATE TABLE IF NOT EXISTS `" + this.pREFIX + "_oceny" + "`(`uuid` VARCHAR(50) NOT NULL,`wlaczone` BOOLEAN, `oceny` TEXT NOT NULL,`ocena` DOUBLE NOT NULL,PRIMARY KEY (`uuid`));";
31 st.executeUpdate(data);
32 //st.executeUpdate(oceny);
33 }
34 }
35 catch (SQLException ex) {
36 ex.printStackTrace();
37 }
38 this.load();
39 //this.loadOceny();
40 }
41
42 public void delete(UUID uuid) {
43 try {
44 try (Connection c = this.ds.getConnection();
45 Statement st = c.createStatement();){
46 String data = "DELETE FROM `" + this.pREFIX + "` WHERE `uuid`='" + uuid + "'";
47 //String oceny = "DELETE FROM `" + this.pREFIX + "_oceny" + "` WHERE `uuid`='" + uuid + "'";
48 st.executeUpdate(data);
49 //st.executeUpdate(oceny);
50 }
51 }
52 catch (SQLException ex) {
53 ex.printStackTrace();
54 }
55 }
56
57 private void load() {
58 try {
59 try (Connection c = this.getConnection();
60 PreparedStatement ps = DatabaseUtils.prepareStatement(c, "SELECT * FROM `" + this.pREFIX + "`");
61 ResultSet rs = ps.executeQuery();){
62
63 while(rs.next()) {
64
65 UUID uuid = UUID.fromString(rs.getString("uuid"));
66 Panel panel = this.getPlugin().getPlugin().get(uuid);
67
68 String gracze = rs.getString("gracze");
69 List<UUID> listGracze = Utils.fromString(gracze);
70
71 int rozmiar = rs.getInt("rozmiar");
72 Location center = Utils.parseLocation(rs.getString("srodek"));
73
74 Dzialka dzialka = new Dzialka(center, rozmiar);
75 dzialka.setMembers(listGracze);
76 dzialka.setWlasciciel(panel);
77 this.plugin.getPlugin().dodajDzialke(dzialka);
78
79 }
80 this.getPlugin().getMainAPI().sendMessage("Zaladowane działki: " + this.plugin.getPlugin().getDzialki().size());
81 }
82 }
83 catch (SQLException ex) {
84 ex.printStackTrace();
85 }
86 }
87
88 /*private void loadOceny() {
89 try {
90 try (Connection c = this.getConnection();
91 PreparedStatement ps = DatabaseUtils.prepareStatement(c, "SELECT * FROM `" + this.pREFIX + "_oceny" + "`");
92 ResultSet rs = ps.executeQuery();){
93
94 while(rs.next()) {
95
96 UUID uuid = UUID.fromString(rs.getString("uuid"));
97 boolean wlaczone = rs.getBoolean("wlaczone");
98 String oceny = rs.getString("oceny");
99 double oc = rs.getDouble("ocena");
100
101 Panel panel = this.getPlugin().getPlugin().get(uuid);
102 Oceny ocena = panel.getPanelDzialka().getDzialka().getOceny();
103
104 for(Object[] obj : this.fromString(oceny)) {
105 ocena.addOcenaPlayer((double) obj[0], (String) obj[1]);
106 }
107
108 ocena.setWlaczone(wlaczone);
109
110 Bukkit.getConsoleSender().sendMessage("Dzialki load oceny - 5");
111 }
112 this.getPlugin().getMainAPI().sendMessage("Zaladowane Oceny Działek: " + this.plugin.getPlugin().getDzialki().size());
113 }
114 }
115 catch (SQLException ex) {
116 Bukkit.getConsoleSender().sendMessage("Dzialki oceny - 6");
117 ex.printStackTrace();
118 }
119 Bukkit.getConsoleSender().sendMessage("Dzialki oceny - 7");
120 }*/
121
122 @Override
123 public TypeMySQL getType() {
124 return TypeMySQL.DZIALKI_DATABASE;
125 }
126
127 private String saveDzialka(Dzialka dzialka){
128
129 this.getPlugin().getMainAPI().sendMessage("save - Dzialka");
130
131 String members = Utils.uuidtoString(dzialka.getMembers(), false);
132 this.getPlugin().getMainAPI().sendMessage("save - 2");
133 this.getPlugin().getMainAPI().sendMessage(members);
134 this.getPlugin().getMainAPI().sendMessage("save - 3");
135
136 StringBuilder sb = new StringBuilder();
137 sb.append("INSERT INTO `" + this.pREFIX + "` (`uuid`, `gracze`, `rozmiar`, `srodek`) VALUES (");
138 sb.append("'" + dzialka.getWlasciciel().getUUID() + "',");
139 sb.append("'" + members + "',");
140 sb.append("'" + dzialka.getSize() + "',");
141 sb.append("'" + Utils.toString(dzialka.getCenter()) + "'");
142 sb.append(") ON DUPLICATE KEY UPDATE ");
143 sb.append("gracze='" + members + "',");
144 sb.append("rozmiar='" + dzialka.getSize() + "',");
145 sb.append("srodek='" + Utils.toString(dzialka.getCenter()) + "'");
146 sb.append(";");
147
148 this.getPlugin().getMainAPI().sendMessage("save - 6");
149 return sb.toString();
150 }
151
152 /*private String saveOceny(Dzialka dzialka){
153 this.getPlugin().getMainAPI().sendMessage("save - Oceny");
154 String oceny = this.toString(dzialka.getOceny().getOcenaPlayers());
155 this.getPlugin().getMainAPI().sendMessage("save - Oceny - 1");
156 StringBuilder sb = new StringBuilder();
157 sb.append("INSERT INTO `" + this.pREFIX + "` (`uuid`, `wlaczone`, `oceny`, `ocena`) VALUES (");
158 sb.append("'" + dzialka.getWlasciciel().getUUID() + "',");
159 sb.append("'" + dzialka.getOceny().getWlaczone() + "',");
160 sb.append("'" + oceny + "',");
161 sb.append("'" + dzialka.getOceny().getOcena() + "'");
162 sb.append(") ON DUPLICATE KEY UPDATE ");
163 sb.append("wlaczone='" + dzialka.getOceny().getWlaczone() + "',");
164 sb.append("oceny='" + oceny + "',");
165 sb.append("ocena='" + dzialka.getOceny().getOcena() + "'");
166 sb.append(";");
167
168 this.getPlugin().getMainAPI().sendMessage("Oceny - 2");
169 return sb.toString();
170 }*/
171
172 public String toString(Collection<OcenaPlayer> list) {
173 StringBuilder builder = new StringBuilder();
174 for (OcenaPlayer name : list) {
175 builder.append(name.name);
176 builder.append(";");
177 builder.append(Double.toString(name.ocena));
178 builder.append(',');
179 }
180 return builder.toString();
181 }
182
183 public List<Object[]> fromString(String s){
184 List<Object[]> list = new ArrayList<>();
185
186 if(s == null || s.isEmpty()) {
187 return list;
188 }
189
190 String[] p = s.split(",");
191
192 for(String a : p) {
193
194 String[] b = a.split(";");
195
196 if(b.length < 2) {
197 continue;
198 }
199
200 String name = b[0];
201 double doub = Double.parseDouble(b[1]);
202
203 Object[] obj = new Object[2];
204 obj[0] = name;
205 obj[1] = doub;
206
207 list.add(obj);
208 }
209
210 return list;
211 }
212}
213