· 4 years ago · May 26, 2021, 06:50 AM
1package ru.notavailable.fcmetrics.helpers;
2
3import com.eclipsesource.json.JsonArray;
4import com.eclipsesource.json.JsonObject;
5import lombok.Data;
6import lombok.NonNull;
7import lombok.SneakyThrows;
8
9import java.sql.Connection;
10import java.sql.DriverManager;
11import java.sql.ResultSet;
12import java.sql.Statement;
13import java.text.SimpleDateFormat;
14import java.time.LocalDate;
15import java.time.temporal.ChronoUnit;
16import java.util.*;
17
18import static ru.notavailable.fcmetrics.Main.notDir;
19
20@Data
21public class NotApi implements NotLogger {
22 private static final String URL = "";
23 private static final String USER = "";
24 private static final String PASSWORD = "";
25
26 private static final String URL_ADM = "";
27 private static final String USER_ADM = "";
28 private static final String PASSWORD_ADM = "";
29
30 //TODO: START SQL API
31 @SneakyThrows
32 public Connection createConnection(boolean isAdm) {
33 if(isAdm) {
34 return DriverManager.getConnection(URL_ADM, USER_ADM, PASSWORD_ADM);
35 }
36 return DriverManager.getConnection(URL, USER, PASSWORD);
37 }
38
39
40 @SneakyThrows
41 @NonNull
42 public JsonArray getJsonArrayForMAMD(LinkedHashSet<? extends String> players) {
43 JsonArray jsonArray = new JsonArray();
44 for(String player : players) {
45 JsonObject jsonObject = new JsonObject();
46 String currIp = player.split("=")[1].split(",")[0];
47 jsonArray.add(currIp);
48 String[] nicknames = player.replace(currIp, "").replace("=", "").split(" ");
49 for(String nickname : nicknames) {
50 jsonObject.add("nick", nickname.replace("[", "")
51 .replace("]", "")
52 .replace(",", ""));
53 }
54 jsonArray.add(jsonObject);
55 }
56 return jsonArray;
57 }
58
59 @SneakyThrows
60 public LinkedHashMap<String, String> getLinkedHashMap(Connection base, String query, String column1, String column2) {
61 try (ResultSet resultSet = createStatement(base).executeQuery(query)) {
62 LinkedHashMap<String, String> result = new LinkedHashMap<>();
63 if (resultSet != null) {
64 while (resultSet.next()) {
65 String key = resultSet.getString(column1);
66 String value = resultSet.getString(column2);
67 result.put(key, value);
68 }
69 }
70 return result;
71 }
72 }
73
74 @SneakyThrows
75 public LinkedHashMap<String, Integer> getLinkedHashMapInt(Connection base, String query, String column1, String column2) {
76 try (ResultSet resultSet = createStatement(base).executeQuery(query)) {
77 LinkedHashMap<String, Integer> result = new LinkedHashMap<>();
78 if (resultSet != null) {
79 while (resultSet.next()) {
80 String key = resultSet.getString(column1);
81 Integer value = resultSet.getInt(column2);
82 result.put(key, value);
83 }
84 }
85 return result;
86 }
87 }
88
89 public ArrayList<String> getDates(String stringDate){
90 ArrayList<String> dates = new ArrayList<>();
91 LocalDate dateFromBase = LocalDate.parse(stringDate);
92 long diffDays = ChronoUnit.DAYS.between(dateFromBase, LocalDate.now());
93 for (int i = 0; i < diffDays + 1; i++) {
94 dates.add(String.valueOf(dateFromBase.plusDays(i)));
95 }
96 return dates;
97 }
98
99 public String getNowDateAtFormat(){
100 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
101 return dateFormat.format(new Date());
102 }
103
104 @SneakyThrows
105 public String getValue(Connection connection, String query, String column){
106 try (ResultSet resultSet = createStatement(connection).executeQuery(query)) {
107 String result = null;
108 while (resultSet.next()) {
109 result = resultSet.getString(column);
110 }
111 return result;
112 }
113 }
114 @SneakyThrows
115 public ArrayList<String> getValues(Connection connection, String query, String column){
116 try (ResultSet resultSet = createStatement(connection).executeQuery(query)) {
117 ArrayList<String> result = new ArrayList<>();
118 while (resultSet.next()) {
119 result.add(resultSet.getString(column));
120 }
121 return result;
122 }
123 }
124
125 @SneakyThrows
126 public Statement createStatement(Connection connection){
127 return connection.createStatement();
128 }
129
130 //TODO: ENDS SQL API
131}
132