überarbeitung Kommentare
This commit is contained in:
154
src/main/java/Serenity/balance.java
Normal file → Executable file
154
src/main/java/Serenity/balance.java
Normal file → Executable file
@ -1,12 +1,8 @@
|
|||||||
package Serenity;
|
package Serenity;
|
||||||
|
|
||||||
import net.dv8tion.jda.core.entities.ChannelType;
|
import net.dv8tion.jda.core.entities.ChannelType;
|
||||||
import net.dv8tion.jda.core.entities.Member;
|
|
||||||
import net.dv8tion.jda.core.entities.Role;
|
|
||||||
import net.dv8tion.jda.core.entities.User;
|
import net.dv8tion.jda.core.entities.User;
|
||||||
import net.dv8tion.jda.core.entities.impl.RoleImpl;
|
|
||||||
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
|
||||||
import net.dv8tion.jda.core.exceptions.InsufficientPermissionException;
|
|
||||||
import net.dv8tion.jda.core.hooks.ListenerAdapter;
|
import net.dv8tion.jda.core.hooks.ListenerAdapter;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
@ -15,9 +11,7 @@ import java.io.*;
|
|||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class balance extends ListenerAdapter {
|
public class balance extends ListenerAdapter {
|
||||||
|
|
||||||
@ -27,15 +21,14 @@ public class balance extends ListenerAdapter {
|
|||||||
|
|
||||||
|
|
||||||
public balance() {
|
public balance() {
|
||||||
this.prefixPromote = "!info";
|
this.prefixPromote = "!konto";
|
||||||
this.prefixDegradation = "!add ";
|
this.prefixDegradation = "!pay ";
|
||||||
this.prefixDetail = "!detail";
|
this.prefixDetail = "!detail";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMessageReceived(MessageReceivedEvent event) {
|
public void onMessageReceived(MessageReceivedEvent event) {
|
||||||
if(event.getMessage().getContentRaw().startsWith("!ende")) {
|
if (event.getMessage().getContentRaw().startsWith("!ende")) { // nur zum Debugen #todo muss wieder raus
|
||||||
event.getJDA().shutdown();
|
event.getJDA().shutdown();
|
||||||
}
|
}
|
||||||
if ((!event.getMessage().getContentRaw().startsWith(this.prefixPromote) &&
|
if ((!event.getMessage().getContentRaw().startsWith(this.prefixPromote) &&
|
||||||
@ -55,15 +48,24 @@ public class balance extends ListenerAdapter {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getInfo(MessageReceivedEvent event) {
|
private void getInfo(MessageReceivedEvent event) {
|
||||||
this.getInfo(event, false);
|
this.getInfo(event, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt Kontostand ab
|
||||||
|
*
|
||||||
|
* @param event JDA Event
|
||||||
|
* @param detail true = Abrufen der Detail, Chronologich, false = gesammt Kontostand
|
||||||
|
*/
|
||||||
private void getInfo(MessageReceivedEvent event, Boolean detail) {
|
private void getInfo(MessageReceivedEvent event, Boolean detail) {
|
||||||
HttpURLConnection con = null;
|
HttpURLConnection con = null;
|
||||||
String result = "";
|
//String result = "";
|
||||||
|
StringBuilder result_test = new StringBuilder("");
|
||||||
DecimalFormat myFormatter = new DecimalFormat();
|
DecimalFormat myFormatter = new DecimalFormat();
|
||||||
|
|
||||||
Map IdConvert = new HashMap();
|
Map<String, Integer> IdConvert = new HashMap<>();
|
||||||
IdConvert.put("256888865103544321", 2); // Niclos
|
IdConvert.put("256888865103544321", 2); // Niclos
|
||||||
IdConvert.put("495895196685303818", 3); // Birgit
|
IdConvert.put("495895196685303818", 3); // Birgit
|
||||||
IdConvert.put("385865287586545676", 7); // Felix
|
IdConvert.put("385865287586545676", 7); // Felix
|
||||||
@ -73,17 +75,19 @@ public class balance extends ListenerAdapter {
|
|||||||
IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff
|
IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Zerlgen der Anfrage
|
||||||
String parameter = "";
|
String parameter = "";
|
||||||
if (event.getMessage().getMentionedUsers().size() > 0) {
|
if (event.getMessage().getMentionedUsers().size() > 0) {
|
||||||
if (IdConvert.containsKey(event.getMessage().getMentionedUsers().get(0).getId()))
|
if (IdConvert.containsKey(event.getMessage().getMentionedUsers().get(0).getId()))
|
||||||
parameter = "?id=" + (IdConvert.get(event.getMessage().getMentionedUsers().get(0).getId()));
|
parameter = "?id=" + (IdConvert.get(event.getMessage().getMentionedUsers().get(0).getId()));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
parameter = "?id=1";
|
parameter = "?id=1";
|
||||||
}
|
}
|
||||||
if (detail) {
|
if (detail) {
|
||||||
parameter += "&detail=1";
|
parameter += "&detail=1";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// aufbau zum REST
|
||||||
URL url = new URL("http://localhost/REST/balance" + parameter);
|
URL url = new URL("http://localhost/REST/balance" + parameter);
|
||||||
con = (HttpURLConnection) url.openConnection();
|
con = (HttpURLConnection) url.openConnection();
|
||||||
con.setRequestMethod("GET");
|
con.setRequestMethod("GET");
|
||||||
@ -95,7 +99,7 @@ public class balance extends ListenerAdapter {
|
|||||||
int status = con.getResponseCode();
|
int status = con.getResponseCode();
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 200:
|
case 200:
|
||||||
case 201:
|
case 201: // auswerten der Antwort
|
||||||
BufferedReader in = new BufferedReader(
|
BufferedReader in = new BufferedReader(
|
||||||
new InputStreamReader(con.getInputStream()));
|
new InputStreamReader(con.getInputStream()));
|
||||||
String inputLine;
|
String inputLine;
|
||||||
@ -104,32 +108,34 @@ public class balance extends ListenerAdapter {
|
|||||||
content.append(inputLine);
|
content.append(inputLine);
|
||||||
}
|
}
|
||||||
in.close();
|
in.close();
|
||||||
JSONObject testjason = new JSONObject(content.toString());
|
|
||||||
Iterator<String> keys = testjason.keys();
|
JSONObject responseJson = new JSONObject(content.toString());
|
||||||
|
Iterator<String> keys = responseJson.keys();
|
||||||
|
|
||||||
while (keys.hasNext()) {
|
while (keys.hasNext()) {
|
||||||
String key = keys.next();
|
String key = keys.next();
|
||||||
if (testjason.get(key) instanceof JSONObject) {
|
if (responseJson.get(key) instanceof JSONObject) {
|
||||||
result += "**" + ((JSONObject) testjason.get(key)).get("name").toString() + ":**\n";
|
result_test.append("**").append(((JSONObject) responseJson.get(key)).get("name").toString()).append(":**\n");
|
||||||
result += "```";
|
|
||||||
JSONArray transaction = (JSONArray) ((JSONObject) testjason.get(key)).get("transaction");
|
result_test.append("```");
|
||||||
|
JSONArray transaction = (JSONArray) ((JSONObject) responseJson.get(key)).get("transaction");
|
||||||
for (int i = 0; i < transaction.length(); i++) {
|
for (int i = 0; i < transaction.length(); i++) {
|
||||||
for (int j = 7 - (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))).length(); j > 0; j--) {
|
for (int j = 7 - (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))).length(); j > 0; j--) {
|
||||||
result += " ";
|
result_test.append(" ");
|
||||||
}
|
}
|
||||||
result += (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString())));
|
result_test.append( (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString()))));
|
||||||
|
|
||||||
|
|
||||||
result += " " + ((JSONObject) transaction.get(i)).get("currency_name").toString() + " ";
|
result_test.append(" ").append( ((JSONObject) transaction.get(i)).get("currency_name").toString()).append(" ");
|
||||||
if (detail) {
|
if (detail) {
|
||||||
result += " - " + ((JSONObject) transaction.get(i)).get("reason").toString();
|
result_test.append(" - ").append(((JSONObject) transaction.get(i)).get("reason").toString());
|
||||||
}
|
}
|
||||||
result += "\n";
|
result_test.append( "\n");
|
||||||
}
|
}
|
||||||
result += "```";
|
result_test.append( "```");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
event.getChannel().sendMessage(event.getMember().getAsMention() + "\n" + result).queue();
|
event.getChannel().sendMessage(event.getMember().getAsMention() + "\n" + result_test.toString()).queue();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
System.out.println(":(");
|
System.out.println(":(");
|
||||||
@ -138,9 +144,8 @@ public class balance extends ListenerAdapter {
|
|||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println("problem: " + e.getMessage());
|
System.out.println("problem: " + e.getMessage());
|
||||||
}
|
} finally {
|
||||||
finally {
|
if (con != null) { // Verbindung schließen wenn noch offen
|
||||||
if (con != null) {
|
|
||||||
try {
|
try {
|
||||||
con.disconnect();
|
con.disconnect();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@ -151,8 +156,13 @@ public class balance extends ListenerAdapter {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fügt neue Transaktion hinzu
|
||||||
|
*
|
||||||
|
* @param event JDA Event
|
||||||
|
*/
|
||||||
private void addTransaction(MessageReceivedEvent event) {
|
private void addTransaction(MessageReceivedEvent event) {
|
||||||
Map IdConvert = new HashMap();
|
Map<String, Integer> IdConvert = new HashMap<>();
|
||||||
IdConvert.put("256888865103544321", 2); // Niclos
|
IdConvert.put("256888865103544321", 2); // Niclos
|
||||||
IdConvert.put("495895196685303818", 3); // Birgit
|
IdConvert.put("495895196685303818", 3); // Birgit
|
||||||
IdConvert.put("385865287586545676", 7); // Felix
|
IdConvert.put("385865287586545676", 7); // Felix
|
||||||
@ -162,7 +172,7 @@ public class balance extends ListenerAdapter {
|
|||||||
IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff
|
IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff
|
||||||
|
|
||||||
|
|
||||||
Map currencyConvert = new HashMap();
|
Map<String, Integer> currencyConvert = new HashMap<>();
|
||||||
currencyConvert.put("credit", 1);
|
currencyConvert.put("credit", 1);
|
||||||
currencyConvert.put("c", 1);
|
currencyConvert.put("c", 1);
|
||||||
currencyConvert.put("doller", 2);
|
currencyConvert.put("doller", 2);
|
||||||
@ -175,7 +185,7 @@ public class balance extends ListenerAdapter {
|
|||||||
currencyConvert.put("silver", 5);
|
currencyConvert.put("silver", 5);
|
||||||
currencyConvert.put("s", 5);
|
currencyConvert.put("s", 5);
|
||||||
|
|
||||||
Map currencyConvert2 = new HashMap();
|
Map<Integer, String> currencyConvert2 = new HashMap<>();
|
||||||
currencyConvert2.put(1, "Credit");
|
currencyConvert2.put(1, "Credit");
|
||||||
currencyConvert2.put(2, "Doller");
|
currencyConvert2.put(2, "Doller");
|
||||||
currencyConvert2.put(3, "Platinum");
|
currencyConvert2.put(3, "Platinum");
|
||||||
@ -183,53 +193,56 @@ public class balance extends ListenerAdapter {
|
|||||||
currencyConvert2.put(5, "Silver");
|
currencyConvert2.put(5, "Silver");
|
||||||
|
|
||||||
int[] ids;
|
int[] ids;
|
||||||
String result = "";
|
StringBuilder result = new StringBuilder("");
|
||||||
boolean allfound = true;
|
boolean allfound = true;
|
||||||
String[] MsgParts;
|
String[] MsgParts;
|
||||||
String reason = "";
|
float ammount;
|
||||||
float ammount = 0;
|
|
||||||
|
|
||||||
HttpURLConnection con = null;
|
HttpURLConnection con = null;
|
||||||
DecimalFormat myFormatter = new DecimalFormat();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Aufteilen Nachricht in Bennunungen und Rest
|
||||||
String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(event.getMessage().getMentionedUsers().get(event.getMessage().getMentionedUsers().size() - 1).getAsMention(), 2);
|
String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(event.getMessage().getMentionedUsers().get(event.getMessage().getMentionedUsers().size() - 1).getAsMention(), 2);
|
||||||
MsgParts = MsgParts_exl_Mention[1].trim().split(" ");
|
MsgParts = MsgParts_exl_Mention[1].trim().split(" ");
|
||||||
|
|
||||||
ids = new int[event.getMessage().getMentionedUsers().size()];
|
ids = new int[event.getMessage().getMentionedUsers().size()];
|
||||||
|
|
||||||
|
// Pürfen ob Angebe der Währung bekannt ist
|
||||||
if (!currencyConvert.containsKey(MsgParts[1].toLowerCase())) {
|
if (!currencyConvert.containsKey(MsgParts[1].toLowerCase())) {
|
||||||
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[1] + " ist keine bekannte Währung").queue();
|
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[1] + " ist keine bekannte Währung").queue();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prüfen ob Zahl legal ist
|
||||||
try {
|
try {
|
||||||
|
|
||||||
ammount = Float.parseFloat(MsgParts[0]);
|
ammount = Float.parseFloat(MsgParts[0]);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[MsgParts.length - 2] + " ist keine gültige Zahl").queue();
|
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[MsgParts.length - 2] + " ist keine gültige Zahl").queue();
|
||||||
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reason = MsgParts_exl_Mention[1].trim().substring(MsgParts[0].length() + MsgParts[1].length()+2);
|
|
||||||
|
|
||||||
|
// Prüfen ob alle gennanten Personen zur Zahlung gehören
|
||||||
for (int i = 0; i < event.getMessage().getMentionedUsers().size(); i++) {
|
for (int i = 0; i < event.getMessage().getMentionedUsers().size(); i++) {
|
||||||
if (!IdConvert.containsKey(event.getMessage().getMentionedUsers().get(i).getId())) {
|
if (!IdConvert.containsKey(event.getMessage().getMentionedUsers().get(i).getId())) {
|
||||||
allfound = false;
|
allfound = false;
|
||||||
result = result + " " + event.getMessage().getMentionedUsers().get(i).getName();
|
result.append(" ").append(event.getMessage().getMentionedUsers().get(i).getName());
|
||||||
}
|
} else {
|
||||||
else {
|
ids[i] = IdConvert.get(event.getMessage().getMentionedUsers().get(i).getId());
|
||||||
ids[i] = (int) IdConvert.get(event.getMessage().getMentionedUsers().get(i).getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!allfound) {
|
if (!allfound) {
|
||||||
event.getChannel().sendMessage(event.getMember().getAsMention() + result + " wurde(n) nicht gefunden").queue();
|
event.getChannel().sendMessage(event.getMember().getAsMention() + result.toString() + " wurde(n) nicht gefunden").queue();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject payload = new JSONObject();
|
String reason = MsgParts_exl_Mention[1].trim().substring(MsgParts[0].length() + MsgParts[1].length() + 2);
|
||||||
|
|
||||||
|
// Aufbau Payload zur übertragung an REST Schnittstelle
|
||||||
|
JSONObject payload = new JSONObject();
|
||||||
payload.put("ammount", ammount);
|
payload.put("ammount", ammount);
|
||||||
payload.put("currency_id", currencyConvert.get(MsgParts[1].toLowerCase()));
|
payload.put("currency_id", currencyConvert.get(MsgParts[1].toLowerCase()));
|
||||||
payload.put("ids", ids);
|
payload.put("ids", ids);
|
||||||
@ -242,7 +255,9 @@ public class balance extends ListenerAdapter {
|
|||||||
con.setReadTimeout(3600);
|
con.setReadTimeout(3600);
|
||||||
con.setDoInput(true);
|
con.setDoInput(true);
|
||||||
con.setDoOutput(true);
|
con.setDoOutput(true);
|
||||||
|
con.setDefaultUseCaches(false);
|
||||||
|
|
||||||
|
// Übertragen der Payload
|
||||||
OutputStream os = con.getOutputStream();
|
OutputStream os = con.getOutputStream();
|
||||||
BufferedWriter writer = new BufferedWriter(
|
BufferedWriter writer = new BufferedWriter(
|
||||||
new OutputStreamWriter(os, "UTF-8"));
|
new OutputStreamWriter(os, "UTF-8"));
|
||||||
@ -254,7 +269,7 @@ public class balance extends ListenerAdapter {
|
|||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 200:
|
case 200:
|
||||||
case 201:
|
case 201: // Verarbeiten der Antwort
|
||||||
BufferedReader in = new BufferedReader(
|
BufferedReader in = new BufferedReader(
|
||||||
new InputStreamReader(con.getInputStream()));
|
new InputStreamReader(con.getInputStream()));
|
||||||
String inputLine;
|
String inputLine;
|
||||||
@ -263,44 +278,31 @@ public class balance extends ListenerAdapter {
|
|||||||
content.append(inputLine);
|
content.append(inputLine);
|
||||||
}
|
}
|
||||||
in.close();
|
in.close();
|
||||||
JSONObject testjason = new JSONObject(content.toString());
|
JSONObject responseJson = new JSONObject(content.toString());
|
||||||
Iterator<String> keys = testjason.keys();
|
Iterator<String> keys = responseJson.keys();
|
||||||
|
|
||||||
result = "";
|
result = new StringBuilder("");
|
||||||
while (keys.hasNext()) {
|
while (keys.hasNext()) {
|
||||||
String key = keys.next();
|
String key = keys.next();
|
||||||
String id = getKey(IdConvert, Integer.parseInt(key)).toString();
|
String id = getKey(IdConvert, Integer.parseInt(key));
|
||||||
|
|
||||||
if (key.equals("1")) {
|
if (key.equals("1")) {
|
||||||
result += "Das Schiff bekommt: " + testjason.get(key) + " " + currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase())) + " ";
|
result.append("Das Schiff bekommt: ").append(responseJson.get(key)).append(" ").append(currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase()))).append(" ");
|
||||||
|
} else {
|
||||||
|
result.append(event.getGuild().getMemberById(id).getAsMention()).append(" bekommt ").append(responseJson.get(key)).append(" ").append(currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase()))).append(" ");
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
result += event.getGuild().getMemberById(id).getAsMention() + " bekommt " + testjason.get(key) + " " + currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase())) + " ";
|
|
||||||
}
|
}
|
||||||
/*if (testjason.get(key) instanceof JSONObject) {
|
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + result.toString()).queue();
|
||||||
result = result + "**" + ((JSONObject) testjason.get(key)).get("name").toString() + ":**\n";
|
|
||||||
JSONArray transaction = (JSONArray) ((JSONObject) testjason.get(key)).get("transaction");
|
|
||||||
for(int i = 0; i < transaction.length(); i++) {
|
|
||||||
result = result + (myFormatter.format(Float.parseFloat(((JSONObject) transaction.get(i)).get("amount").toString())));
|
|
||||||
result = result + " " + ((JSONObject) transaction.get(i)).get("currency_name").toString() + "\n";
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
event.getChannel().sendMessage(event.getMember().getAsMention() + " " + result).queue();
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
System.out.println(":(");
|
System.out.println(":(");
|
||||||
}
|
}
|
||||||
con.disconnect();
|
con.disconnect();
|
||||||
|
|
||||||
//event.getJDA().getSelfUser().
|
} catch (Exception e) {
|
||||||
}
|
|
||||||
|
|
||||||
catch (Exception e) {
|
|
||||||
System.out.println("problem: " + e.getMessage());
|
System.out.println("problem: " + e.getMessage());
|
||||||
}
|
} finally {
|
||||||
finally {
|
if (con != null) { // Verbindung schließen wenn noch offen
|
||||||
if (con != null) {
|
|
||||||
try {
|
try {
|
||||||
con.disconnect();
|
con.disconnect();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@ -310,6 +312,14 @@ public class balance extends ListenerAdapter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sucht in einer Map nach Wert und gibt Schlüßel zurück
|
||||||
|
* @param map Map mit allen Werten
|
||||||
|
* @param value gesuchtet wert
|
||||||
|
* @param <K> erste Typ
|
||||||
|
* @param <V> zweiter typ
|
||||||
|
* @return <K,V>|null
|
||||||
|
*/
|
||||||
private <K, V> K getKey(Map<K, V> map, V value) {
|
private <K, V> K getKey(Map<K, V> map, V value) {
|
||||||
for (Map.Entry<K, V> entry : map.entrySet()) {
|
for (Map.Entry<K, V> entry : map.entrySet()) {
|
||||||
if (entry.getValue().equals(value)) {
|
if (entry.getValue().equals(value)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user