From 7b923bc6065d73884b6434239a7c76b2322ab1c3 Mon Sep 17 00:00:00 2001 From: Ocame Date: Mon, 18 Feb 2019 16:15:47 +0100 Subject: [PATCH] =?UTF-8?q?=C3=BCberarbeitung=20Kommentare?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Serenity/balance.java | 206 +++++++++++++++------------- 1 file changed, 108 insertions(+), 98 deletions(-) mode change 100644 => 100755 src/main/java/Serenity/balance.java diff --git a/src/main/java/Serenity/balance.java b/src/main/java/Serenity/balance.java old mode 100644 new mode 100755 index ec4c548..a503bb3 --- a/src/main/java/Serenity/balance.java +++ b/src/main/java/Serenity/balance.java @@ -1,12 +1,8 @@ package Serenity; 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.impl.RoleImpl; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; -import net.dv8tion.jda.core.exceptions.InsufficientPermissionException; import net.dv8tion.jda.core.hooks.ListenerAdapter; import org.json.JSONArray; import org.json.JSONObject; @@ -15,11 +11,9 @@ import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.text.DecimalFormat; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*; -public class balance extends ListenerAdapter { +public class balance extends ListenerAdapter { private String prefixPromote; private String prefixDegradation; @@ -27,15 +21,14 @@ public class balance extends ListenerAdapter { public balance() { - this.prefixPromote = "!info"; - this.prefixDegradation = "!add "; + this.prefixPromote = "!konto"; + this.prefixDegradation = "!pay "; this.prefixDetail = "!detail"; - } @Override 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(); } if ((!event.getMessage().getContentRaw().startsWith(this.prefixPromote) && @@ -46,24 +39,33 @@ public class balance extends ListenerAdapter { User author = event.getAuthor(); if (!author.isBot()) { - if(event.getMessage().getContentRaw().startsWith(this.prefixPromote)) + if (event.getMessage().getContentRaw().startsWith(this.prefixPromote)) this.getInfo(event); - else if(event.getMessage().getContentRaw().startsWith(this.prefixDegradation)) + else if (event.getMessage().getContentRaw().startsWith(this.prefixDegradation)) this.addTransaction(event); - else if(event.getMessage().getContentRaw().startsWith(this.prefixDetail)) + else if (event.getMessage().getContentRaw().startsWith(this.prefixDetail)) this.getInfo(event, true); } } + private void getInfo(MessageReceivedEvent event) { 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) { HttpURLConnection con = null; - String result = ""; + //String result = ""; + StringBuilder result_test = new StringBuilder(""); DecimalFormat myFormatter = new DecimalFormat(); - Map IdConvert = new HashMap(); + Map IdConvert = new HashMap<>(); IdConvert.put("256888865103544321", 2); // Niclos IdConvert.put("495895196685303818", 3); // Birgit IdConvert.put("385865287586545676", 7); // Felix @@ -73,17 +75,19 @@ public class balance extends ListenerAdapter { IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff try { + // Zerlgen der Anfrage String parameter = ""; - if(event.getMessage().getMentionedUsers().size() > 0) { - if(IdConvert.containsKey(event.getMessage().getMentionedUsers().get(0).getId())) + if (event.getMessage().getMentionedUsers().size() > 0) { + if (IdConvert.containsKey(event.getMessage().getMentionedUsers().get(0).getId())) parameter = "?id=" + (IdConvert.get(event.getMessage().getMentionedUsers().get(0).getId())); - } - else { + } else { parameter = "?id=1"; } - if(detail) { + if (detail) { parameter += "&detail=1"; } + + // aufbau zum REST URL url = new URL("http://localhost/REST/balance" + parameter); con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); @@ -95,41 +99,43 @@ public class balance extends ListenerAdapter { int status = con.getResponseCode(); switch (status) { case 200: - case 201: + case 201: // auswerten der Antwort BufferedReader in = new BufferedReader( - new InputStreamReader(con.getInputStream())); + new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer content = new StringBuffer(); while ((inputLine = in.readLine()) != null) { content.append(inputLine); } in.close(); - JSONObject testjason = new JSONObject(content.toString()); - Iterator keys = testjason.keys(); - while(keys.hasNext()) { + JSONObject responseJson = new JSONObject(content.toString()); + Iterator keys = responseJson.keys(); + + while (keys.hasNext()) { String key = keys.next(); - if (testjason.get(key) instanceof JSONObject) { - result += "**" + ((JSONObject) testjason.get(key)).get("name").toString() + ":**\n"; - result += "```"; - JSONArray transaction = (JSONArray) ((JSONObject) testjason.get(key)).get("transaction"); - 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--) { - result += " "; + if (responseJson.get(key) instanceof JSONObject) { + result_test.append("**").append(((JSONObject) responseJson.get(key)).get("name").toString()).append(":**\n"); + + result_test.append("```"); + JSONArray transaction = (JSONArray) ((JSONObject) responseJson.get(key)).get("transaction"); + 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--) { + 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() + " "; - if(detail) { - result += " - " + ((JSONObject) transaction.get(i)).get("reason").toString(); + result_test.append(" ").append( ((JSONObject) transaction.get(i)).get("currency_name").toString()).append(" "); + if (detail) { + 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; default: System.out.println(":("); @@ -137,10 +143,9 @@ public class balance extends ListenerAdapter { con.disconnect(); } catch (Exception e) { - System.out.println("problem: "+e.getMessage()); - } - finally { - if (con != null) { + System.out.println("problem: " + e.getMessage()); + } finally { + if (con != null) { // Verbindung schließen wenn noch offen try { con.disconnect(); } 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) { - Map IdConvert = new HashMap(); + Map IdConvert = new HashMap<>(); IdConvert.put("256888865103544321", 2); // Niclos IdConvert.put("495895196685303818", 3); // Birgit IdConvert.put("385865287586545676", 7); // Felix @@ -162,7 +172,7 @@ public class balance extends ListenerAdapter { IdConvert.put(event.getJDA().getSelfUser().getId(), 1); // Schiff - Map currencyConvert = new HashMap(); + Map currencyConvert = new HashMap<>(); currencyConvert.put("credit", 1); currencyConvert.put("c", 1); currencyConvert.put("doller", 2); @@ -175,7 +185,7 @@ public class balance extends ListenerAdapter { currencyConvert.put("silver", 5); currencyConvert.put("s", 5); - Map currencyConvert2 = new HashMap(); + Map currencyConvert2 = new HashMap<>(); currencyConvert2.put(1, "Credit"); currencyConvert2.put(2, "Doller"); currencyConvert2.put(3, "Platinum"); @@ -183,53 +193,56 @@ public class balance extends ListenerAdapter { currencyConvert2.put(5, "Silver"); int[] ids; - String result = ""; + StringBuilder result = new StringBuilder(""); boolean allfound = true; String[] MsgParts; - String reason = ""; - float ammount = 0; + float ammount; HttpURLConnection con = null; - DecimalFormat myFormatter = new DecimalFormat(); try { - - String[] MsgParts_exl_Mention = event.getMessage().getContentRaw().split(event.getMessage().getMentionedUsers().get(event.getMessage().getMentionedUsers().size()-1).getAsMention(), 2); + // 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); MsgParts = MsgParts_exl_Mention[1].trim().split(" "); ids = new int[event.getMessage().getMentionedUsers().size()]; - if(!currencyConvert.containsKey(MsgParts[1].toLowerCase())) { + // Pürfen ob Angebe der Währung bekannt ist + if (!currencyConvert.containsKey(MsgParts[1].toLowerCase())) { event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[1] + " ist keine bekannte Währung").queue(); return; } + + // Prüfen ob Zahl legal ist try { ammount = Float.parseFloat(MsgParts[0]); - } catch (NumberFormatException e) { - event.getChannel().sendMessage(event.getMember().getAsMention() + " " + MsgParts[MsgParts.length-2] + " ist keine gültige Zahl").queue(); + } catch (NumberFormatException e) { + 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); - for(int i = 0; i< event.getMessage().getMentionedUsers().size(); i++) { - if(!IdConvert.containsKey( event.getMessage().getMentionedUsers().get(i).getId())) { - allfound = false; - result = result + " " + event.getMessage().getMentionedUsers().get(i).getName(); - } - else { - ids[i] = (int) IdConvert.get(event.getMessage().getMentionedUsers().get(i).getId()); - } + // Prüfen ob alle gennanten Personen zur Zahlung gehören + for (int i = 0; i < event.getMessage().getMentionedUsers().size(); i++) { + if (!IdConvert.containsKey(event.getMessage().getMentionedUsers().get(i).getId())) { + allfound = false; + result.append(" ").append(event.getMessage().getMentionedUsers().get(i).getName()); + } else { + ids[i] = IdConvert.get(event.getMessage().getMentionedUsers().get(i).getId()); + } } - if(!allfound) { - event.getChannel().sendMessage(event.getMember().getAsMention() + result + " wurde(n) nicht gefunden").queue(); + if (!allfound) { + event.getChannel().sendMessage(event.getMember().getAsMention() + result.toString() + " wurde(n) nicht gefunden").queue(); 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("currency_id", currencyConvert.get(MsgParts[1].toLowerCase())); payload.put("ids", ids); @@ -242,7 +255,9 @@ public class balance extends ListenerAdapter { con.setReadTimeout(3600); con.setDoInput(true); con.setDoOutput(true); + con.setDefaultUseCaches(false); + // Übertragen der Payload OutputStream os = con.getOutputStream(); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(os, "UTF-8")); @@ -254,7 +269,7 @@ public class balance extends ListenerAdapter { switch (status) { case 200: - case 201: + case 201: // Verarbeiten der Antwort BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; @@ -263,44 +278,31 @@ public class balance extends ListenerAdapter { content.append(inputLine); } in.close(); - JSONObject testjason = new JSONObject(content.toString()); - Iterator keys = testjason.keys(); + JSONObject responseJson = new JSONObject(content.toString()); + Iterator keys = responseJson.keys(); - result = ""; - while(keys.hasNext()) { + result = new StringBuilder(""); + while (keys.hasNext()) { String key = keys.next(); - String id = getKey(IdConvert, Integer.parseInt(key)).toString(); + String id = getKey(IdConvert, Integer.parseInt(key)); - if(key.equals("1")) { - result += "Das Schiff bekommt: " + testjason.get(key) + " " + currencyConvert2.get(currencyConvert.get(MsgParts[1].toLowerCase())) + " "; + if (key.equals("1")) { + 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) { - 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(); + event.getChannel().sendMessage(event.getMember().getAsMention() + " " + result.toString()).queue(); break; default: System.out.println(":("); } con.disconnect(); - //event.getJDA().getSelfUser(). - } - - catch (Exception e) { - System.out.println("problem: "+e.getMessage()); - } - finally { - if (con != null) { + } catch (Exception e) { + System.out.println("problem: " + e.getMessage()); + } finally { + if (con != null) { // Verbindung schließen wenn noch offen try { con.disconnect(); } catch (Exception ex) { @@ -310,7 +312,15 @@ public class balance extends ListenerAdapter { } } - private K getKey(Map map, V value) { + /** + * Sucht in einer Map nach Wert und gibt Schlüßel zurück + * @param map Map mit allen Werten + * @param value gesuchtet wert + * @param erste Typ + * @param zweiter typ + * @return |null + */ + private K getKey(Map map, V value) { for (Map.Entry entry : map.entrySet()) { if (entry.getValue().equals(value)) { return entry.getKey();