· 10 years ago · May 15, 2016, 03:03 PM
1package me.xcraftrayx.pl;
2
3import java.io.BufferedWriter;
4import java.io.File;
5import java.io.FileWriter;
6import java.io.IOException;
7import java.io.Writer;
8import java.sql.Connection;
9import java.sql.DriverManager;
10import java.sql.PreparedStatement;
11import java.sql.ResultSet;
12import java.sql.SQLException;
13import java.sql.Statement;
14import java.sql.Timestamp;
15import java.util.LinkedList;
16import java.util.List;
17import java.util.Scanner;
18import java.util.StringTokenizer;
19
20public class MySQL {
21
22 private static Connection conn;
23 private static Statement stat;
24 private static String password, password2, host, host2, user, user2, database, database2, port, port2;
25
26 public static final String DRIVER = "com.mysql.jdbc.Driver";
27
28 public static void start()
29 {
30 File katalog = new File("plugins/OnlineTimeInServers/");
31 if(!katalog.exists())
32 {
33 katalog.mkdirs();
34 }
35 File config = new File("plugins/OnlineTimeInServers/config.yml");
36 if(!config.exists())
37 {
38 try
39 {
40 config.createNewFile();
41 Writer writer = new BufferedWriter(new FileWriter(config));
42 ((BufferedWriter)writer).write("config:"); ((BufferedWriter)writer).newLine();
43 ((BufferedWriter)writer).write(" MySQL:"); ((BufferedWriter)writer).newLine();
44 ((BufferedWriter)writer).write(" HOST: localhost"); ((BufferedWriter)writer).newLine();
45 ((BufferedWriter)writer).write(" USER: root"); ((BufferedWriter)writer).newLine();
46 ((BufferedWriter)writer).write(" PASS: password"); ((BufferedWriter)writer).newLine();
47 ((BufferedWriter)writer).write(" DATABASE: MineS"); ((BufferedWriter)writer).newLine();
48 ((BufferedWriter)writer).write(" PORT: 3306"); ((BufferedWriter)writer).newLine();
49 ((BufferedWriter)writer).close();
50 }
51 catch (IOException e)
52 {
53 e.printStackTrace();
54 }
55 }
56 StringTokenizer token;
57 try
58 {
59 @SuppressWarnings("resource")
60 Scanner odczyt = new Scanner(config);
61 while(odczyt.hasNextLine()){
62 token = new StringTokenizer(odczyt.nextLine(),":");
63 while(token.hasMoreElements()){
64 String st = String.valueOf(token.nextToken());
65 if(st.equals(" PASS")){
66 password = token.nextToken();
67 password2 = password.replace(" ", "");
68 }
69 if(st.equals(" HOST")){
70 host = token.nextToken();
71 host2 = host.replace(" ", "");
72 }
73 if(st.equals(" USER")){
74 user = token.nextToken();
75 user2 = user.replace(" ", "");
76 }
77 if(st.equals(" DATABASE")){
78 database = token.nextToken();
79 database2 = database.replace(" ", "");
80 }
81 if(st.equals(" PORT")){
82 port = token.nextToken();
83 port2 = port.replace(" ", "");
84 }
85 }
86 }
87 }
88
89 catch (IOException e)
90 {
91 e.printStackTrace();
92 }
93
94 try
95 {
96 Class.forName(MySQL.DRIVER);
97 }
98 catch (ClassNotFoundException e1)
99 {
100 System.err.println("Brak sterownika JDBC");
101 e1.printStackTrace();
102 }
103
104 try
105 {
106 conn = DriverManager.getConnection("jdbc:mysql://" + host2 + ":" + port2 + "/" + database2 + "?autoReconnect=true" + "&user=" + user2 + "&password=" + password2);
107 stat = conn.createStatement();
108 } catch (SQLException e)
109 {
110 System.err.println("Problem z otwarciem polaczenia");
111 e.printStackTrace();
112 }
113 MySQL.createTables();
114 }
115
116 public static boolean createTables()
117 {
118 String createTable = "CREATE TABLE IF NOT EXISTS BungeeAllServers (id INTEGER AUTO_INCREMENT, Servers varchar(11), PRIMARY KEY(id))";
119 String createTable2 = "CREATE TABLE IF NOT EXISTS BungeeTimeInServer (id INTEGER AUTO_INCREMENT, NickID int(11), ServerID int(11), Time int(11), PRIMARY KEY(id))";
120 try
121 {
122 stat.execute(createTable);
123 stat.execute(createTable2);
124 } catch (SQLException e)
125 {
126 System.err.println("Blad przy tworzeniu tabeli");
127 e.printStackTrace();
128 return false;
129 }
130 return true;
131 }
132
133 public static boolean addUser(String username, String server, int time)
134 {
135 try {
136 PreparedStatement prepStmt = conn.prepareStatement("INSERT INTO BungeeTimeInServer (NickID, ServerID, Time) VALUES ((SELECT ID FROM LobbyInventory WHERE username = '" + username + "'), (SELECT ID FROM BungeeAllServers WHERE Servers = '" + server + "'), " + time + ");");
137 prepStmt.execute();
138 } catch (SQLException e) {
139 System.err.println("Blad przy wstawianiu uzytkownika");
140 e.printStackTrace();
141 return false;
142 }
143 return true;
144 }
145
146 public static boolean updateUser(String username, String server, int time) {
147 try {
148 PreparedStatement prepStmt = conn.prepareStatement("UPDATE BungeeTimeInServer SET (NickID, ServerID, Time) VALUES ((SELECT ID FROM LobbyInventory WHERE username = '" + username + "'), (SELECT ID FROM BungeeAllServers WHERE Servers = '" + server + "'), "+ time +");");
149 prepStmt.execute();
150 } catch (SQLException e) {
151 System.err.println("Blad przy aktualizowaniu uzytkownika");
152 e.printStackTrace();
153 return false;
154 }
155 return true;
156 }
157
158 public static List<String> selectUser(String username, String server) {
159 List<String> users = new LinkedList<String>();
160 try {
161 ResultSet result = stat.executeQuery("SELECT NickID, ServerID FROM BungeeTimeInServer inner join LobbyInventory on BungeeTimeInServer.NickID = LobbyInventory.ID join BungeeAllServers on BungeeTimeInServer.ServerID = BungeeAllServers.id WHERE BungeeAllServers.Servers = '" + server + "' AND LobbyInventory.username = '" + username + "';");
162 while(result.next()) {
163 username = result.getString("NickID");
164 server = result.getString("ServerID");
165 users.add(username);
166 users.add(server);
167 }
168 } catch (SQLException e) {
169 e.printStackTrace();
170 return null;
171 }
172 return users;
173 }
174
175 public static void closeConnection()
176 {
177 try
178 {
179 conn.close();
180 } catch (SQLException e)
181 {
182 System.err.println("Problem z zamknieciem polaczenia");
183 e.printStackTrace();
184 }
185 }
186}