· 9 years ago · Feb 03, 2017, 03:40 PM
1package de.twexmc.FreundeManager.manager;
2
3import java.sql.ResultSet;
4import java.sql.SQLException;
5import java.util.ArrayList;
6import java.util.Collections;
7import java.util.HashMap;
8import java.util.List;
9
10import de.twexmc.FreundeManager.FreundCore;
11import net.md_5.bungee.BungeeCord;
12import net.md_5.bungee.api.ProxyServer;
13import net.md_5.bungee.api.chat.TextComponent;
14import net.md_5.bungee.api.connection.ProxiedPlayer;
15
16@SuppressWarnings("unchecked")
17public class FreundeManager {
18
19 FreundCore friends;
20
21 public FreundeManager(FreundCore friends) {
22 this.friends = friends;
23 }
24
25 public void createTables() {
26 friends.getMySQL().update(
27 "CREATE TABLE IF NOT EXISTS cFriends_Users(Name VARCHAR(16), UUID VARCHAR(64), FList VARCHAR(20000), FRequests VARCHAR(20000), FRequest VARCHAR(10), FJump VARCHAR(10), FOnline VARCHAR(10), FSwitch VARCHAR(10), PInvite int, FConnect BIGINT, FcOnline VARCHAR(10), FServer VARCHAR(50));");
28
29 }
30
31 public void registerPlayer(ProxiedPlayer player) {
32 if (!existPlayer(player.getUniqueId().toString())) {
33 friends.getMySQL().update("UPDATE cFriends_Users SET Name= '" + player.getName() + "' WHERE UUID= '" + player.getUniqueId().toString() + "';");
34 } else {
35 friends.getMySQL().update("INSERT INTO cFriends_Users(Name, UUID, FList, FRequests, FRequest, FJump, FOnline, FSwitch, PInvite, FConnect, FcOnline, FServer) VALUES ('" + player.getName() + "', '" + player.getUniqueId().toString() + "', '', '', 'true', 'true' 'true', 'true', '0', '" + System.currentTimeMillis() + "', 'true', 'lobby');");
36 }
37 }
38
39
40 public String getFriendListRAW(String name) {
41 return String.valueOf(get(name, "Name", "Flist", "cFriends_Users"));
42 }
43
44 public List<String> getFriendList(String name) {
45 String friendlist = getFriendListRAW(name);
46 List<String> toreturn = new ArrayList();
47 if (friendlist.isEmpty())
48 return toreturn;
49 String[] friends = friendlist.split(";");
50 for (int i = 0; i < friends.length; i++) {
51 toreturn.add(friends[i]);
52 }
53 return toreturn;
54 }
55
56 public int getFriends(String name) {
57 String friendlist = getFriendListRAW(name);
58 if (friendlist.isEmpty())
59 return 0;
60 String[] friends = friendlist.split(";");
61 return friends.length;
62 }
63
64
65
66 public void addFriend(String name, String newFriend) {
67 String friendlist = getFriendListRAW(name);
68 friendlist = friendlist + newFriend + ";";
69 friends.getMySQL().update("UPDATE cFriends_Users SET FList= '" + friendlist + "' WHERE Name= '" + name + "';");
70 }
71
72 public void addRequest(String name, String request) {
73 String reqlist = getRequestListRAW(name);
74 reqlist = reqlist + request + ";";
75 friends.getMySQL().update("UPDATE cFriends_Users SET FRequests= '" + reqlist + "' WHERE Name= '" + name + "';");
76 }
77
78 public void removeFriend(String name, String friend) {
79 String friendlist = getFriendListRAW(name);
80 friendlist = friendlist.replace(friend + ";", "");
81 friends.getMySQL().update("UPDATE cFriends_Users SET FList= '" + friendlist + "' WHERE Name= '" + name + "';");
82 }
83
84 public void removeRequest(String name, String request) {
85 String reqlist = getRequestListRAW(name);
86 reqlist = reqlist.replace(request + ";", "");
87 friends.getMySQL().update("UPDATE cFriends_Users SET FRequests= '" + reqlist + "' WHERE Name= '" + name + "';");
88 }
89
90
91
92 public HashMap<String, List<String>> getList(String name) {
93 List<String> friendlist = getFriendList(name);
94 List<String> fl = new ArrayList<>();
95 for (String uuid : friendlist) {
96 fl.add(getNamebyUUID(uuid, "cFriends_Users"));
97 }
98 List<String> offline = new ArrayList<>();
99 List<String> online = new ArrayList<>();
100 for (String entry : fl) {
101 if (BungeeCord.getInstance().getPlayer(entry) != null) {
102 online.add(entry);
103 } else {
104 offline.add(entry);
105 }
106 }
107 Collections.sort(offline);
108 Collections.sort(online);
109
110 HashMap<String, List<String>> hash = new HashMap<>();
111 hash.put("offline", offline);
112 hash.put("online", online);
113
114 return hash;
115 }
116
117
118
119 public boolean getSetting(String name, String type) {
120 return Boolean.parseBoolean(String.valueOf(get(name, "Name", type, "cFriends_Users")));
121 }
122
123 public void setSetting(String name, String type, String value) {
124 friends.getMySQL().update("UPDATE cFriends_Users SET " + type + "= '" + value + "' WHERE Name= '" + name + "'");
125 }
126
127
128
129 public String getRequestListRAW(String name) {
130 return String.valueOf(get(name, "Name", "FRequests", "cFriends_Users"));
131 }
132
133 public List<String> getRequestList(String name) {
134 String requestlist = getRequestListRAW(name);
135 List<String> toreturn = new ArrayList();
136 if (requestlist.isEmpty())
137 return toreturn;
138 String[] req = requestlist.split(";");
139 for (int i = 0; i < req.length; i++) {
140 toreturn.add(req[i]);
141 }
142 return toreturn;
143 }
144
145 public int getRequests(String name) {
146 String requestlist = getRequestListRAW(name);
147 if (requestlist.isEmpty())
148 return 0;
149 String[] req = requestlist.split(";");
150 return req.length;
151 }
152
153
154
155 public String getUUIDbyName(String playername, String database) {
156 String i = "";
157 try {
158 ResultSet rs = friends.getMySQL().getResult("SELECT * FROM " + database + " WHERE Name= '" + playername + "'");
159
160 if ((!rs.next()) || (String.valueOf(rs.getString("UUID")) == null))
161 ;
162
163 i = rs.getString("UUID");
164
165 } catch (SQLException e) {
166
167 }
168 return i;
169 }
170
171 public String getNamebyUUID(String playername, String database) {
172 String i = "";
173 try {
174 ResultSet rs = friends.getMySQL().getResult("SELECT * FROM " + database + " WHERE UUID= '" + playername + "'");
175
176 if ((!rs.next()) || (String.valueOf(rs.getString("Name")) == null))
177 ;
178
179 i = rs.getString("Name");
180
181 } catch (SQLException e) {
182
183 }
184 return i;
185 }
186
187 public boolean existPlayer(String uuid) {
188 try {
189 ResultSet rs = friends.getMySQL().getResult("SELECT * FROM cFriends_Users WHERE UUID= '" + uuid + "'");
190
191 if (rs.next()) {
192 return rs.getString("UUID") != null;
193 }
194 rs.close();
195 return false;
196 } catch (SQLException e) {
197 e.printStackTrace();
198 }
199
200 return false;
201 }
202
203 public boolean existPlayerName(String name) {
204 try {
205 ResultSet rs = friends.getMySQL().getResult("SELECT * FROM cFriends_Users WHERE Name= '" + name + "'");
206
207 if (rs.next()) {
208 return rs.getString("Name") != null;
209 }
210 rs.close();
211 return false;
212 } catch (SQLException e) {
213 e.printStackTrace();
214 }
215
216 return false;
217 }
218
219 public Object get(String whereresult, String where, String select, String database) {
220
221 ResultSet rs = friends.getMySQL()
222 .getResult("SELECT " + select + " FROM " + database + " WHERE " + where + "='" + whereresult + "'");
223 try {
224 if (rs.next()) {
225 Object v = rs.getObject(select);
226 return v;
227 }
228 } catch (SQLException e) {
229 return "ERROR";
230 }
231
232 ProxyServer.getInstance().getConsole()
233 .sendMessage(new TextComponent("§cCould not load friends.mysql-Stats Type."));
234 return "ERROR";
235 }
236
237}