From 8b21aadd713c8f7acd40255e5e70971b372a11a2 Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 26 Nov 2019 08:58:16 -0500 Subject: [PATCH 01/16] POST request to ids functioning --- Client/Client.iml | 9 +-- Client/pom.xml | 8 +++ Client/src/main/java/views/SimpleShell.java | 19 +++-- Client/src/main/java/youareell/YouAreEll.java | 70 ++++++++++++++++++- .../test/java/youareell/testYouAreEll.java | 14 ++++ YouAreEll.iml | 6 +- 6 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 Client/src/test/java/youareell/testYouAreEll.java diff --git a/Client/Client.iml b/Client/Client.iml index c3ea736..7dc69d9 100644 --- a/Client/Client.iml +++ b/Client/Client.iml @@ -5,14 +5,15 @@ - - - - + + + + + \ No newline at end of file diff --git a/Client/pom.xml b/Client/pom.xml index ff427b8..eaa8cae 100644 --- a/Client/pom.xml +++ b/Client/pom.xml @@ -10,6 +10,14 @@ 4.0.0 Client + + + junit + junit + 4.12 + compile + + \ No newline at end of file diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 3865bb2..6cc13fa 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -16,9 +16,15 @@ public class SimpleShell { public static void prettyPrint(String output) { - // yep, make an effort to format things nicely, eh? - System.out.println(output); + //TODO yep, make an effort to format things nicely, eh? +// System.out.println(output); + String[] out = output.split(","); + for (String str : out) { + System.out.println(str + "\n"); + } } + + public static void main(String[] args) throws java.io.IOException { YouAreEll webber = new YouAreEll(new MessageController(), new IdController()); @@ -50,7 +56,7 @@ public static void main(String[] args) throws java.io.IOException { //loop through to see if parsing worked for (int i = 0; i < commands.length; i++) { - //System.out.println(commands[i]); //***check to see if parsing/split worked*** + System.out.println(commands[i]); //***check to see if parsing/split worked*** list.add(commands[i]); } @@ -67,11 +73,16 @@ public static void main(String[] args) throws java.io.IOException { // Specific Commands. // ids - if (list.contains("ids")) { + if (list.get(0).equals("ids") && list.size() == 1) { String results = webber.get_ids(); SimpleShell.prettyPrint(results); continue; } + else if (list.get(0).equals("ids") && list.size() == 3) { + String results = webber.post_ids(list.get(1), list.get(2)); + SimpleShell.prettyPrint(results); + continue; + } // messages if (list.contains("messages")) { diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index acfe78a..2b1412e 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -2,6 +2,16 @@ import controllers.*; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + public class YouAreEll { private MessageController msgCtrl; @@ -28,7 +38,65 @@ public String get_messages() { return MakeURLCall("/messages", "GET", ""); } + public String post_ids(String name, String git) { + String[] labels = {"name", "github"}; + String[] values = {name, git}; + String json = jsonBuilder(labels, values); + return MakeURLCall("/ids", "POST", json); + } + public String MakeURLCall(String mainurl, String method, String jpayload) { - return "nada"; + + StringBuilder result = new StringBuilder(); + + + try { + URL url = new URL("http://zipcode.rocks:8085" + mainurl); + + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setDoOutput(true); + + conn.setRequestMethod(method); + if (method.equalsIgnoreCase("POST")) { + conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); + conn.setRequestProperty("Accept", "application/json"); + + OutputStream os = conn.getOutputStream(); + os.write(jpayload.getBytes("UTF-8")); + + os.flush(); + } + + BufferedReader br = new BufferedReader(new InputStreamReader( + (conn.getInputStream()))); + + String output; +//// System.out.println("Output from Server .... \n"); + while ((output = br.readLine()) != null) { + result.append(output); + } + + conn.disconnect(); +// result.append(new InputStreamReader(conn.getInputStream())); + + } catch (Exception e) { + System.out.println(e.getStackTrace()); + } +// System.out.println(result.toString()); + return result.toString(); } + + public String jsonBuilder(String[] labels, String[] values) { + StringBuilder json = new StringBuilder().append("{"); + + for (int i = 0; i < labels.length; i++) { + json.append(String.format("\"%s\": \"%s\"", labels[i], values[i])); + if (i != labels.length-1) json.append(","); + } + json.append("}"); +// String g = "{\"name\": \"Wes\",\"github\":\"wesjones15\"}"; + return json.toString(); + } + + } diff --git a/Client/src/test/java/youareell/testYouAreEll.java b/Client/src/test/java/youareell/testYouAreEll.java new file mode 100644 index 0000000..0ac0a52 --- /dev/null +++ b/Client/src/test/java/youareell/testYouAreEll.java @@ -0,0 +1,14 @@ +package youareell; + +import org.junit.Test; + +public class testYouAreEll { + @Test + public void testJsonBuilder() { + YouAreEll url = new YouAreEll(null,null); + String[] labels = {"name","github","favorite singer"}; + String[] values = {"wes", "wesjones15", "blink182"}; + String json = url.jsonBuilder(labels, values); + System.out.println(json); + } +} diff --git a/YouAreEll.iml b/YouAreEll.iml index 5f1ec7b..084de76 100644 --- a/YouAreEll.iml +++ b/YouAreEll.iml @@ -8,8 +8,8 @@ - - - + + + \ No newline at end of file From e5704cb0acc7f8c5d6da15bafd30f0b96730a98f Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 26 Nov 2019 12:12:39 -0500 Subject: [PATCH 02/16] prettyPrint now parses json PUT gives error code 500 --- Client/Client.iml | 1 + Client/pom.xml | 5 ++++ Client/src/main/java/views/SimpleShell.java | 25 +++++++++++++++---- Client/src/main/java/youareell/YouAreEll.java | 19 +++++++++++--- 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/Client/Client.iml b/Client/Client.iml index 7dc69d9..15d36a9 100644 --- a/Client/Client.iml +++ b/Client/Client.iml @@ -12,6 +12,7 @@ + diff --git a/Client/pom.xml b/Client/pom.xml index eaa8cae..79ef95c 100644 --- a/Client/pom.xml +++ b/Client/pom.xml @@ -17,6 +17,11 @@ 4.12 compile + + org.json + json + 20190722 + diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 6cc13fa..811c00e 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -7,8 +7,12 @@ import java.util.ArrayList; import java.util.List; + +import com.fasterxml.jackson.core.JsonParser; import controllers.IdController; import controllers.MessageController; +import org.json.JSONArray; +import org.json.JSONObject; import youareell.YouAreEll; // Simple Shell is a Console view for youareell.YouAreEll. @@ -16,12 +20,18 @@ public class SimpleShell { public static void prettyPrint(String output) { - //TODO yep, make an effort to format things nicely, eh? -// System.out.println(output); - String[] out = output.split(","); + output = output.substring(1, output.length()-1) + "}"; + String[] out = output.split("},"); for (String str : out) { - System.out.println(str + "\n"); + if (str.contains("wes")) { + System.out.print("\nEntry===="); + JSONObject json = new JSONObject(str + "}"); + for (String key : json.keySet()) { + System.out.print("\n\t" + key + "\t" + json.get(key)); + } + } } + System.out.println("\n"); } @@ -79,7 +89,12 @@ public static void main(String[] args) throws java.io.IOException { continue; } else if (list.get(0).equals("ids") && list.size() == 3) { - String results = webber.post_ids(list.get(1), list.get(2)); + String results; + if (webber.get_ids().contains(String.format("\"github\":\"%s\"", list.get(2)))) { + results = webber.put_ids(list.get(1), list.get(2)); + } + else results = webber.post_ids(list.get(1), list.get(2)); + SimpleShell.prettyPrint(results); continue; } diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index 2b1412e..35c7ba4 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -44,6 +44,19 @@ public String post_ids(String name, String git) { String json = jsonBuilder(labels, values); return MakeURLCall("/ids", "POST", json); } + // updates name of given github id + public String put_ids(String name, String git) { + String[] labels = {"name", "github"}; + String[] values = {name, git}; + String json = jsonBuilder(labels, values); + return MakeURLCall("/ids", "PUT", json); + } + public String post_message() { + String[] labels = {}; + String[] values = {}; + String json = jsonBuilder(labels, values); + return MakeURLCall("/messages","POST", json); + } public String MakeURLCall(String mainurl, String method, String jpayload) { @@ -57,7 +70,7 @@ public String MakeURLCall(String mainurl, String method, String jpayload) { conn.setDoOutput(true); conn.setRequestMethod(method); - if (method.equalsIgnoreCase("POST")) { + if (method.equals("POST") || method.equals("PUT")) { conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); conn.setRequestProperty("Accept", "application/json"); @@ -71,16 +84,14 @@ public String MakeURLCall(String mainurl, String method, String jpayload) { (conn.getInputStream()))); String output; -//// System.out.println("Output from Server .... \n"); while ((output = br.readLine()) != null) { result.append(output); } conn.disconnect(); -// result.append(new InputStreamReader(conn.getInputStream())); } catch (Exception e) { - System.out.println(e.getStackTrace()); + e.printStackTrace(); } // System.out.println(result.toString()); return result.toString(); From 6a150abaed96d95c893d0f4aaa0b6c9e433ab383 Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 26 Nov 2019 14:28:44 -0500 Subject: [PATCH 03/16] PUT works --- Client/src/main/java/views/SimpleShell.java | 49 ++++++++++++++----- Client/src/main/java/youareell/YouAreEll.java | 16 +++--- 2 files changed, 47 insertions(+), 18 deletions(-) diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 811c00e..519b7bd 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -17,19 +17,42 @@ // Simple Shell is a Console view for youareell.YouAreEll. public class SimpleShell { + public static String getId(String ids, String github) { + String userId = ""; + ids = ids.substring(1, ids.length()-1) + "}"; + String[] out = ids.split("},"); + for (String str : out) { + JSONObject json = new JSONObject(fixJSON(str)); + if (json.get("github").equals(github)) { + userId = (String) json.get("userid"); + break; + } + } + return userId; + } + public static String fixJSON(String json) { + if (json.charAt(0) != '{') + json = '{' + json; + if (json.charAt(json.length()-1) != '}') + json = json + '}'; + return json; + } public static void prettyPrint(String output) { - output = output.substring(1, output.length()-1) + "}"; - String[] out = output.split("},"); - for (String str : out) { - if (str.contains("wes")) { - System.out.print("\nEntry===="); - JSONObject json = new JSONObject(str + "}"); - for (String key : json.keySet()) { - System.out.print("\n\t" + key + "\t" + json.get(key)); + output = output.substring(1, output.length()-1); // removes [ ] wrapped around string + String[] out = output.split("},"); // creates String[] where each String is a partial JSON String + for (String str : out) { // iterates through each string in String[] +// if (str.contains("wes")) { // filters by ids created by me + System.out.print("\nEntry===="); // separates each entry + + String toJ = fixJSON(str); + System.out.println("[CHECK] " + toJ); + JSONObject json = new JSONObject(toJ); // completes json string and turns it into json object + for (String key : json.keySet()) { // iterates through each key in the JSON object + System.out.print("\n\t" + key + "\t" + json.get(key)); // prints each key and value pair } - } +// } } System.out.println("\n"); } @@ -90,8 +113,12 @@ public static void main(String[] args) throws java.io.IOException { } else if (list.get(0).equals("ids") && list.size() == 3) { String results; - if (webber.get_ids().contains(String.format("\"github\":\"%s\"", list.get(2)))) { - results = webber.put_ids(list.get(1), list.get(2)); + String ids = webber.get_ids(); + String userId = getId(ids, list.get(2)); + + if (ids.contains(String.format("\"github\":\"%s\"", list.get(2)))) { + + results = webber.put_ids(userId, list.get(1), list.get(2)); } else results = webber.post_ids(list.get(1), list.get(2)); diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index 35c7ba4..2f0a736 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -5,6 +5,7 @@ import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; @@ -44,10 +45,11 @@ public String post_ids(String name, String git) { String json = jsonBuilder(labels, values); return MakeURLCall("/ids", "POST", json); } - // updates name of given github id - public String put_ids(String name, String git) { - String[] labels = {"name", "github"}; - String[] values = {name, git}; + + //TODO update name of user with given github id + public String put_ids(String id, String name, String git) { + String[] labels = {"userid", "name", "github"}; + String[] values = {id, name, git}; String json = jsonBuilder(labels, values); return MakeURLCall("/ids", "PUT", json); } @@ -62,7 +64,6 @@ public String MakeURLCall(String mainurl, String method, String jpayload) { StringBuilder result = new StringBuilder(); - try { URL url = new URL("http://zipcode.rocks:8085" + mainurl); @@ -74,10 +75,11 @@ public String MakeURLCall(String mainurl, String method, String jpayload) { conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); conn.setRequestProperty("Accept", "application/json"); - OutputStream os = conn.getOutputStream(); - os.write(jpayload.getBytes("UTF-8")); + OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream()); + os.write(jpayload);//.getBytes("UTF-8")); os.flush(); + os.close(); } BufferedReader br = new BufferedReader(new InputStreamReader( From 4753d3c2ff8959d57a91a38911cf69ce77b6360a Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 26 Nov 2019 19:16:41 -0500 Subject: [PATCH 04/16] basic POST and GET from messages --- Client/src/main/java/views/SimpleShell.java | 83 ++++++++++++++++--- Client/src/main/java/youareell/YouAreEll.java | 29 +++++-- .../test/java/youareell/testYouAreEll.java | 6 ++ 3 files changed, 98 insertions(+), 20 deletions(-) diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 519b7bd..dcfbf9c 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -17,6 +17,27 @@ // Simple Shell is a Console view for youareell.YouAreEll. public class SimpleShell { + public static String buildMessage(List list) { + StringBuilder sb = new StringBuilder(); + Boolean inTheMix = false; + for (String item : list) { + if (item.charAt(0) == '\'') { + sb.append(item); + inTheMix = true; + } + else if (inTheMix) { + sb.append(" " + item); + } + else if (item.charAt(item.length()-1) == '\'') { + inTheMix = false; + sb.append(item); + break; + } + } + String out = sb.toString(); + return out.substring(1, out.length()-1); + } + public static String getId(String ids, String github) { String userId = ""; ids = ids.substring(1, ids.length()-1) + "}"; @@ -31,6 +52,22 @@ public static String getId(String ids, String github) { return userId; } + public static String filterByGithub(String input, String github) { + StringBuilder filtered = new StringBuilder(); + input = input.substring(1, input.length()-1)+"}"; + String[] out = input.split("},"); + for (int i = 0; i < out.length; i++) { +// System.out.println("[PARTIAL MESSAGES] " + str); + JSONObject json = new JSONObject(fixJSON(out[i])); + if (json.get("fromid").equals(github)) { + filtered.append(fixJSON(out[i])); + if (i != out.length-1) filtered.append(","); + } + } + + return filtered.toString(); + } + public static String fixJSON(String json) { if (json.charAt(0) != '{') json = '{' + json; @@ -40,21 +77,22 @@ public static String fixJSON(String json) { } public static void prettyPrint(String output) { - output = output.substring(1, output.length()-1); // removes [ ] wrapped around string - String[] out = output.split("},"); // creates String[] where each String is a partial JSON String - for (String str : out) { // iterates through each string in String[] -// if (str.contains("wes")) { // filters by ids created by me - System.out.print("\nEntry===="); // separates each entry - +// System.out.println("[RESULTS UNPROCESSED] " + output); + if (output != null && !output.equals("null")) { + output = output.substring(1, output.length() - 1); + String[] out = output.split("},"); + for (String str : out) { +// if (str.equals("ul")) break; // break if null + System.out.print("\nEntry===="); String toJ = fixJSON(str); - System.out.println("[CHECK] " + toJ); - JSONObject json = new JSONObject(toJ); // completes json string and turns it into json object - for (String key : json.keySet()) { // iterates through each key in the JSON object - System.out.print("\n\t" + key + "\t" + json.get(key)); // prints each key and value pair +// System.out.println("[CHECK] " + toJ); + JSONObject json = new JSONObject(toJ); + for (String key : json.keySet()) { + System.out.print("\n\t" + key + "\t" + json.get(key)); } -// } + } + System.out.println("\n"); } - System.out.println("\n"); } @@ -127,8 +165,27 @@ else if (list.get(0).equals("ids") && list.size() == 3) { } // messages - if (list.contains("messages")) { + if (list.get(0).equals("messages") && list.size() == 1) { + String results = webber.get_messages(); + SimpleShell.prettyPrint(results); + continue; + } + + else if (list.contains("messages") && list.size()==2) { String results = webber.get_messages(); + results = filterByGithub(results, list.get(1)); + SimpleShell.prettyPrint(results); + continue; + } + else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9 ]+'")) { + String message = buildMessage(list); + String results = webber.post_message_to_git(list.get(1), "", message); + SimpleShell.prettyPrint(results); + continue; + } + else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9 ]+' to [A-Za-z0-9]+")) { + String message = buildMessage(list); + String results = webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); SimpleShell.prettyPrint(results); continue; } diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index 2f0a736..db24df4 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -35,10 +35,6 @@ public String get_ids() { return MakeURLCall("/ids", "GET", ""); } - public String get_messages() { - return MakeURLCall("/messages", "GET", ""); - } - public String post_ids(String name, String git) { String[] labels = {"name", "github"}; String[] values = {name, git}; @@ -46,19 +42,35 @@ public String post_ids(String name, String git) { return MakeURLCall("/ids", "POST", json); } - //TODO update name of user with given github id public String put_ids(String id, String name, String git) { String[] labels = {"userid", "name", "github"}; String[] values = {id, name, git}; String json = jsonBuilder(labels, values); return MakeURLCall("/ids", "PUT", json); } + + public String get_messages() { + return MakeURLCall("/messages", "GET", ""); + } + + public String get_messages_github(String github) { + String mainurl = String.format("/ids/%s/messages", github); + return MakeURLCall(mainurl, "GET", ""); + } public String post_message() { String[] labels = {}; String[] values = {}; String json = jsonBuilder(labels, values); return MakeURLCall("/messages","POST", json); } + public String post_message_to_git(String fromid, String toid, String message) { + String[] labels = {"sequence", "timestamp", "fromid", "toid", "message"}; + String[] values = {"-", null, fromid, toid, message}; + String json = jsonBuilder(labels, values); +// System.out.println("[JSON ALERT] "+json); + String mainurl = String.format("/ids/%s/messages", fromid); + return MakeURLCall(mainurl,"POST", json); + } public String MakeURLCall(String mainurl, String method, String jpayload) { @@ -68,9 +80,10 @@ public String MakeURLCall(String mainurl, String method, String jpayload) { URL url = new URL("http://zipcode.rocks:8085" + mainurl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setDoOutput(true); + conn.setDoOutput(true); conn.setRequestMethod(method); + if (method.equals("POST") || method.equals("PUT")) { conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); conn.setRequestProperty("Accept", "application/json"); @@ -103,7 +116,9 @@ public String jsonBuilder(String[] labels, String[] values) { StringBuilder json = new StringBuilder().append("{"); for (int i = 0; i < labels.length; i++) { - json.append(String.format("\"%s\": \"%s\"", labels[i], values[i])); + if (values[i] == null) json.append(String.format("\"%s\": %s", labels[i], values[i])); + else json.append(String.format("\"%s\": \"%s\"", labels[i], values[i])); + if (i != labels.length-1) json.append(","); } json.append("}"); diff --git a/Client/src/test/java/youareell/testYouAreEll.java b/Client/src/test/java/youareell/testYouAreEll.java index 0ac0a52..d48f2f9 100644 --- a/Client/src/test/java/youareell/testYouAreEll.java +++ b/Client/src/test/java/youareell/testYouAreEll.java @@ -11,4 +11,10 @@ public void testJsonBuilder() { String json = url.jsonBuilder(labels, values); System.out.println(json); } + + @Test + public void testBuildMessage() { + YouAreEll url = new YouAreEll(null, null); + + } } From 996f19c8bae8bd17a9de85b4d3346a58770d3f4c Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 26 Nov 2019 23:04:16 -0500 Subject: [PATCH 05/16] add json parsing methods --- Client/src/main/java/views/SimpleShell.java | 80 ++++++++++++++++--- .../src/test/java/views/testSimpleShell.java | 29 +++++++ 2 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 Client/src/test/java/views/testSimpleShell.java diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index dcfbf9c..8617c67 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -5,6 +5,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @@ -77,24 +78,83 @@ public static String fixJSON(String json) { } public static void prettyPrint(String output) { -// System.out.println("[RESULTS UNPROCESSED] " + output); if (output != null && !output.equals("null")) { + output = output.substring(1, output.length() - 1); - String[] out = output.split("},"); + ArrayList out = jsonSplitter(output); + for (String str : out) { -// if (str.equals("ul")) break; // break if null - System.out.print("\nEntry===="); - String toJ = fixJSON(str); -// System.out.println("[CHECK] " + toJ); - JSONObject json = new JSONObject(toJ); - for (String key : json.keySet()) { - System.out.print("\n\t" + key + "\t" + json.get(key)); - } + System.out.print("\n\n=-==-==Entry==-====--===--====--===--====--===--=--"); +// JSONObject json = new JSONObject(str); +// for (String key : json.keySet()) { +// String tabs = (key.length() > 7) ? "\t" : "\t\t"; +// System.out.print("\n\t" + key + tabs + json.get(key)); +// } + System.out.println(jsonToFormattedString(str)); } System.out.println("\n"); } } + public static String jsonToFormattedString(String json) { + StringBuilder out = new StringBuilder(); + + JSONObject jsonO = new JSONObject(json); + for (String key : jsonO.keySet()) { + String tabs = (key.length() > 7) ? "\t" : "\t\t"; + out.append("\n\t" + key + tabs + jsonO.get(key)); + } + + return out.toString(); + } + + public static ArrayList jsonSplitter(String json) { + int countL = 0; + int countR = 0; + ArrayList split = new ArrayList(); + int lastI = 0; + for (int i = 0; i < json.length(); i++) { + Character chip = json.charAt(i); + + if (chip.equals('{')) countL++; + else if (chip.equals('}')) countR++; + + if (countL == countR && countL > 0 && Math.abs(lastI-i) > 1) { + split.add(json.substring(lastI, i+1)); + lastI = i+2; + if (lastI >= json.length()-1) break; + } + } + return split; + } + + public static ArrayList buildBadChars() { + Character[] bois = {'{','}',',',':','\"'}; + ArrayList list = new ArrayList(); + for (Character c : bois) { + list.add(c); + } + return list; + } + + public static ArrayList jsonStringParser(String json) { + ArrayList list = new ArrayList(); + ArrayList bois = buildBadChars(); + int lastI = 0; + boolean inTheWord = false; + + for (int i = 0; i < json.length(); i++) { + if (!bois.contains(json.charAt(i))) inTheWord = true; + else { + if (inTheWord && Math.abs(lastI-i) > 1) + list.add(json.substring(lastI+1,i)); + lastI = i; + inTheWord = false; + } + } + return list; + } + public static void main(String[] args) throws java.io.IOException { diff --git a/Client/src/test/java/views/testSimpleShell.java b/Client/src/test/java/views/testSimpleShell.java new file mode 100644 index 0000000..56f1ae9 --- /dev/null +++ b/Client/src/test/java/views/testSimpleShell.java @@ -0,0 +1,29 @@ +package views; + +import org.junit.Test; + +import java.util.ArrayList; + +public class testSimpleShell { + @Test + public void testJsonSplitter() { + String json = "{\"name\":\"wes\",\"id\":\"345\",\"color\":\"blue\"}," + + "{\"name\":\"kai\",\"id\":\"342\",\"color\":\"glellow\"}," + + "{\"name\":\"ryan\",\"id\":\"241\",\"color\":\"blorange\"}," + + "{\"name\":\"kendra\",\"id\":\"13\",\"color\":\"grurple\"}," + + "{\"name\":\"val\",\"id\":\"133\",\"color\":\"tangergreen\"}"; + ArrayList list = SimpleShell.jsonSplitter(json); + for (String item : list) { + System.out.println(item); + } + } + + @Test + public void testJsonStringParser() { + String json = "{\"name\":\"wes\",\"id\":\"345\",\"color\":\"blue\"}"; + ArrayList list = SimpleShell.jsonStringParser(json); + for (String item : list) { + System.out.println(item); + } + } +} From 691665b724f641b2db0aa35c2427e75de68b3bc7 Mon Sep 17 00:00:00 2001 From: wes Date: Wed, 27 Nov 2019 14:03:42 -0500 Subject: [PATCH 06/16] extracting methods to utils package --- Client/src/main/java/models/Id.java | 7 +- Client/src/main/java/utils/JsonUtils.java | 136 ++++++++++++ Client/src/main/java/utils/ShellUtils.java | 45 ++++ Client/src/main/java/views/SimpleShell.java | 197 ++---------------- .../src/test/java/views/testSimpleShell.java | 5 +- 5 files changed, 209 insertions(+), 181 deletions(-) create mode 100644 Client/src/main/java/utils/JsonUtils.java create mode 100644 Client/src/main/java/utils/ShellUtils.java diff --git a/Client/src/main/java/models/Id.java b/Client/src/main/java/models/Id.java index 71f2ebf..7e4a7f0 100644 --- a/Client/src/main/java/models/Id.java +++ b/Client/src/main/java/models/Id.java @@ -4,7 +4,12 @@ * POJO for an Id object */ public class Id { + String name; + String githubId; - public Id (String name, String githubId) {} + public Id (String name, String githubId) { + this.name = name; + this.githubId = githubId; + } } \ No newline at end of file diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java new file mode 100644 index 0000000..152edb6 --- /dev/null +++ b/Client/src/main/java/utils/JsonUtils.java @@ -0,0 +1,136 @@ +package utils; + +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.List; + +public class JsonUtils { + public static ArrayList buildBadChars() { + Character[] bois = {'{','}',',',':','\"'}; + ArrayList list = new ArrayList(); + for (Character c : bois) { + list.add(c); + } + return list; + } + + public static ArrayList jsonStringParser(String json) { + ArrayList list = new ArrayList(); + ArrayList bois = buildBadChars(); + int lastI = 0; + boolean inTheWord = false; + + for (int i = 0; i < json.length(); i++) { + if (!bois.contains(json.charAt(i))) inTheWord = true; + else { + if (inTheWord && Math.abs(lastI-i) > 1) + list.add(json.substring(lastI+1,i)); + lastI = i; + inTheWord = false; + } + } + return list; + } + + public static ArrayList jsonSplitter(String json) { + ArrayList split = new ArrayList(); + + if (json.charAt(0) == '[' && json.charAt(json.length()-1) == ']') + json = json.substring(1, json.length() - 1); + + int countL = 0; + int countR = 0; + int lastI = 0; + + for (int i = 0; i < json.length(); i++) { + Character chip = json.charAt(i); + + if (chip.equals('{')) countL++; + else if (chip.equals('}')) countR++; + + if (countL == countR && countL > 0 && Math.abs(lastI-i) > 1) { + split.add(json.substring(lastI, i+1)); + lastI = i+2; + if (lastI >= json.length()-1) break; + } + } + return split; + } + + public static String jsonToFormattedString(String json) { + StringBuilder out = new StringBuilder(); + + JSONObject jsonO = new JSONObject(json); + for (String key : jsonO.keySet()) { + String tabs = (key.length() > 7) ? "\t" : "\t\t"; + out.append("\n\t" + key + tabs + jsonO.get(key)); + } + + return out.toString(); + } + + public static String fixJSON(String json) { + if (json.charAt(0) != '{') + json = '{' + json; + if (json.charAt(json.length()-1) != '}') + json = json + '}'; + return json; + } + + public static String buildMessage(List list) { + StringBuilder sb = new StringBuilder(); + Boolean inTheMix = false; + for (String item : list) { + if (item.charAt(0) == '\'') { + sb.append(item); + inTheMix = true; + } + else if (inTheMix) { + sb.append(" " + item); + } + else if (item.charAt(item.length()-1) == '\'') { + inTheMix = false; + sb.append(item); + break; + } + } + String out = sb.toString(); + return out.substring(1, out.length()-1); + } + + public static String getId(String ids, String github) { + String userId = ""; + ids = ids.substring(1, ids.length()-1) + "}"; + String[] out = ids.split("},"); + for (String str : out) { + JSONObject json = new JSONObject(fixJSON(str)); + if (json.get("github").equals(github)) { + userId = (String) json.get("userid"); + break; + } + } + return userId; + } + + public static String filterByGithub(String input, String github) { + StringBuilder filtered = new StringBuilder(); +// System.out.println("\n\n[INPUT FILTERBYGITHUB] " + input); +// input = input.substring(1, input.length()-1); +// System.out.println("\n\n[INPUT AFTER] " + input); + +// String[] out = input.split("},"); + String[] out = jsonSplitter(input).toArray(new String[0]); + + for (int i = 0; i < out.length; i++) { +// System.out.println("[PARTIAL MESSAGES] " + out[i]); + JSONObject json = new JSONObject(out[i]); + if (json.get("fromid").equals(github)) { + filtered.append(out[i]); + if (i != out.length-1) filtered.append(","); + } + } + + return filtered.toString(); + } +} diff --git a/Client/src/main/java/utils/ShellUtils.java b/Client/src/main/java/utils/ShellUtils.java new file mode 100644 index 0000000..0d9dd38 --- /dev/null +++ b/Client/src/main/java/utils/ShellUtils.java @@ -0,0 +1,45 @@ +package utils; + +import youareell.YouAreEll; +import java.util.List; + +public class ShellUtils { + static String results = "No results"; + + public static String interpretIds(List list, YouAreEll webber) { + if (list.size() == 1) + results = webber.get_ids(); + + else if (list.get(0).equals("ids") && list.size() == 3) { + String ids = webber.get_ids(); + String userId = JsonUtils.getId(ids, list.get(2)); + + if (ids.contains(String.format("\"github\":\"%s\"", list.get(2)))) + results = webber.put_ids(userId, list.get(1), list.get(2)); + else + results = webber.post_ids(list.get(1), list.get(2)); + } + return results; + } + + public static String interpretMessages(List list, YouAreEll webber) { + if (list.size() == 1) + results = webber.get_messages(); + else if (list.size()==2) + results = JsonUtils.filterByGithub(webber.get_messages(), list.get(1)); + + return results; + } + + public static String interpretSendMessage(List list, YouAreEll webber, String commandLine) { + String message = JsonUtils.buildMessage(list); + + if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9. ]+'")) + results = webber.post_message_to_git(list.get(1), "", message); + + else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9 ]+' to [A-Za-z0-9]+")) + results = webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); + + return results; + } +} diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 8617c67..b1ed90b 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -5,164 +5,38 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import com.fasterxml.jackson.core.JsonParser; import controllers.IdController; import controllers.MessageController; -import org.json.JSONArray; -import org.json.JSONObject; +import utils.ShellUtils; import youareell.YouAreEll; +import utils.JsonUtils; // Simple Shell is a Console view for youareell.YouAreEll. public class SimpleShell { - public static String buildMessage(List list) { - StringBuilder sb = new StringBuilder(); - Boolean inTheMix = false; - for (String item : list) { - if (item.charAt(0) == '\'') { - sb.append(item); - inTheMix = true; - } - else if (inTheMix) { - sb.append(" " + item); - } - else if (item.charAt(item.length()-1) == '\'') { - inTheMix = false; - sb.append(item); - break; - } - } - String out = sb.toString(); - return out.substring(1, out.length()-1); - } - - public static String getId(String ids, String github) { - String userId = ""; - ids = ids.substring(1, ids.length()-1) + "}"; - String[] out = ids.split("},"); - for (String str : out) { - JSONObject json = new JSONObject(fixJSON(str)); - if (json.get("github").equals(github)) { - userId = (String) json.get("userid"); - break; - } - } - return userId; - } - - public static String filterByGithub(String input, String github) { - StringBuilder filtered = new StringBuilder(); - input = input.substring(1, input.length()-1)+"}"; - String[] out = input.split("},"); - for (int i = 0; i < out.length; i++) { -// System.out.println("[PARTIAL MESSAGES] " + str); - JSONObject json = new JSONObject(fixJSON(out[i])); - if (json.get("fromid").equals(github)) { - filtered.append(fixJSON(out[i])); - if (i != out.length-1) filtered.append(","); - } - } - - return filtered.toString(); - } - - public static String fixJSON(String json) { - if (json.charAt(0) != '{') - json = '{' + json; - if (json.charAt(json.length()-1) != '}') - json = json + '}'; - return json; - } public static void prettyPrint(String output) { + StringBuilder sb = new StringBuilder(); if (output != null && !output.equals("null")) { - - output = output.substring(1, output.length() - 1); - ArrayList out = jsonSplitter(output); + ArrayList out = JsonUtils.jsonSplitter(output); for (String str : out) { - System.out.print("\n\n=-==-==Entry==-====--===--====--===--====--===--=--"); -// JSONObject json = new JSONObject(str); -// for (String key : json.keySet()) { -// String tabs = (key.length() > 7) ? "\t" : "\t\t"; -// System.out.print("\n\t" + key + tabs + json.get(key)); -// } - System.out.println(jsonToFormattedString(str)); - } - System.out.println("\n"); - } - } - - public static String jsonToFormattedString(String json) { - StringBuilder out = new StringBuilder(); - - JSONObject jsonO = new JSONObject(json); - for (String key : jsonO.keySet()) { - String tabs = (key.length() > 7) ? "\t" : "\t\t"; - out.append("\n\t" + key + tabs + jsonO.get(key)); - } - - return out.toString(); - } - - public static ArrayList jsonSplitter(String json) { - int countL = 0; - int countR = 0; - ArrayList split = new ArrayList(); - int lastI = 0; - for (int i = 0; i < json.length(); i++) { - Character chip = json.charAt(i); - - if (chip.equals('{')) countL++; - else if (chip.equals('}')) countR++; - - if (countL == countR && countL > 0 && Math.abs(lastI-i) > 1) { - split.add(json.substring(lastI, i+1)); - lastI = i+2; - if (lastI >= json.length()-1) break; - } - } - return split; - } - - public static ArrayList buildBadChars() { - Character[] bois = {'{','}',',',':','\"'}; - ArrayList list = new ArrayList(); - for (Character c : bois) { - list.add(c); - } - return list; - } - - public static ArrayList jsonStringParser(String json) { - ArrayList list = new ArrayList(); - ArrayList bois = buildBadChars(); - int lastI = 0; - boolean inTheWord = false; - - for (int i = 0; i < json.length(); i++) { - if (!bois.contains(json.charAt(i))) inTheWord = true; - else { - if (inTheWord && Math.abs(lastI-i) > 1) - list.add(json.substring(lastI+1,i)); - lastI = i; - inTheWord = false; + sb.append("\n\n=-==-==Entry==-====--===--====--===--====--===--=--"); + sb.append(JsonUtils.jsonToFormattedString(str)); } + sb.append("\n"); } - return list; + System.out.print(sb.toString()); } - public static void main(String[] args) throws java.io.IOException { YouAreEll webber = new YouAreEll(new MessageController(), new IdController()); String commandLine; - BufferedReader console = new BufferedReader - (new InputStreamReader(System.in)); + BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); ProcessBuilder pb = new ProcessBuilder(); List history = new ArrayList(); @@ -204,52 +78,25 @@ public static void main(String[] args) throws java.io.IOException { // Specific Commands. // ids - if (list.get(0).equals("ids") && list.size() == 1) { - String results = webber.get_ids(); - SimpleShell.prettyPrint(results); - continue; - } - else if (list.get(0).equals("ids") && list.size() == 3) { - String results; - String ids = webber.get_ids(); - String userId = getId(ids, list.get(2)); - - if (ids.contains(String.format("\"github\":\"%s\"", list.get(2)))) { - - results = webber.put_ids(userId, list.get(1), list.get(2)); - } - else results = webber.post_ids(list.get(1), list.get(2)); - - SimpleShell.prettyPrint(results); + if (list.contains("ids")) { + String results = ShellUtils.interpretIds(list, webber); + prettyPrint(results); continue; } // messages - if (list.get(0).equals("messages") && list.size() == 1) { - String results = webber.get_messages(); - SimpleShell.prettyPrint(results); + if (list.contains("messages")) { + String results = ShellUtils.interpretMessages(list, webber); + prettyPrint(results); continue; } - else if (list.contains("messages") && list.size()==2) { - String results = webber.get_messages(); - results = filterByGithub(results, list.get(1)); - SimpleShell.prettyPrint(results); - continue; - } - else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9 ]+'")) { - String message = buildMessage(list); - String results = webber.post_message_to_git(list.get(1), "", message); - SimpleShell.prettyPrint(results); - continue; - } - else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9 ]+' to [A-Za-z0-9]+")) { - String message = buildMessage(list); - String results = webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); - SimpleShell.prettyPrint(results); + if (list.contains("send")) { + String results = ShellUtils.interpretSendMessage(list, webber, commandLine); + prettyPrint(results); continue; } - // you need to add a bunch more. + // you need to add a bunch more. //!! command returns the last command in history if (list.get(list.size() - 1).equals("!!")) { @@ -277,8 +124,6 @@ else if (list.get(list.size() - 1).charAt(0) == '!') { while ((line = br.readLine()) != null) System.out.println(line); br.close(); - - } //catch ioexception, output appropriate message, resume waiting for input @@ -293,10 +138,6 @@ else if (list.get(list.size() - 1).charAt(0) == '!') { * 4. obtain the output stream * 5. output the contents returned by the command */ - } - - } - } \ No newline at end of file diff --git a/Client/src/test/java/views/testSimpleShell.java b/Client/src/test/java/views/testSimpleShell.java index 56f1ae9..c076bda 100644 --- a/Client/src/test/java/views/testSimpleShell.java +++ b/Client/src/test/java/views/testSimpleShell.java @@ -1,6 +1,7 @@ package views; import org.junit.Test; +import utils.JsonUtils; import java.util.ArrayList; @@ -12,7 +13,7 @@ public void testJsonSplitter() { "{\"name\":\"ryan\",\"id\":\"241\",\"color\":\"blorange\"}," + "{\"name\":\"kendra\",\"id\":\"13\",\"color\":\"grurple\"}," + "{\"name\":\"val\",\"id\":\"133\",\"color\":\"tangergreen\"}"; - ArrayList list = SimpleShell.jsonSplitter(json); + ArrayList list = JsonUtils.jsonSplitter(json); for (String item : list) { System.out.println(item); } @@ -21,7 +22,7 @@ public void testJsonSplitter() { @Test public void testJsonStringParser() { String json = "{\"name\":\"wes\",\"id\":\"345\",\"color\":\"blue\"}"; - ArrayList list = SimpleShell.jsonStringParser(json); + ArrayList list = JsonUtils.jsonStringParser(json); for (String item : list) { System.out.println(item); } From 269b157d5f09272f6341fb507d6300bb00492c1b Mon Sep 17 00:00:00 2001 From: wes Date: Fri, 29 Nov 2019 10:23:29 -0500 Subject: [PATCH 07/16] Message, Id, MessageTextView, IdTextView --- Client/src/main/java/models/Id.java | 26 ++++++++++ Client/src/main/java/models/Message.java | 52 ++++++++++++++++++- Client/src/main/java/utils/JsonUtils.java | 2 +- Client/src/main/java/views/IdTextView.java | 10 +++- .../src/main/java/views/MessageTextView.java | 14 +++-- Client/src/main/java/views/SimpleShell.java | 11 ++++ Client/src/main/java/youareell/YouAreEll.java | 2 +- 7 files changed, 109 insertions(+), 8 deletions(-) diff --git a/Client/src/main/java/models/Id.java b/Client/src/main/java/models/Id.java index 7e4a7f0..231ca26 100644 --- a/Client/src/main/java/models/Id.java +++ b/Client/src/main/java/models/Id.java @@ -6,10 +6,36 @@ public class Id { String name; String githubId; + String userId; public Id (String name, String githubId) { this.name = name; this.githubId = githubId; + this.userId = null; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getGithubId() { + return this.githubId; + } + + public void setGithubId(String githubId) { + this.githubId = githubId; + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String userId) { + this.userId = userId; } } \ No newline at end of file diff --git a/Client/src/main/java/models/Message.java b/Client/src/main/java/models/Message.java index da313ae..27f0c21 100644 --- a/Client/src/main/java/models/Message.java +++ b/Client/src/main/java/models/Message.java @@ -4,7 +4,57 @@ * POJO for an Message object */ public class Message { + String message; + String fromId; + String toId; + String sequence; + String timestamp; - public Message (String message, String fromId, String toId) {} + public Message (String message, String fromId, String toId) { + this.message = message; + this.fromId = fromId; + this.toId = toId; + this.sequence = "-"; + this.timestamp = null; + } + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getFromId() { + return fromId; + } + + public void setFromId(String fromId) { + this.fromId = fromId; + } + + public String getToId() { + return toId; + } + + public void setToId(String toId) { + this.toId = toId; + } + + public String getSequence() { + return sequence; + } + + public void setSequence(String sequence) { + this.sequence = sequence; + } + + public String getTimestamp() { + return timestamp; + } + + public void setTimestamp(String timestamp) { + this.timestamp = timestamp; + } } \ No newline at end of file diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java index 152edb6..9e8fc3f 100644 --- a/Client/src/main/java/utils/JsonUtils.java +++ b/Client/src/main/java/utils/JsonUtils.java @@ -60,8 +60,8 @@ public static ArrayList jsonSplitter(String json) { public static String jsonToFormattedString(String json) { StringBuilder out = new StringBuilder(); - JSONObject jsonO = new JSONObject(json); + for (String key : jsonO.keySet()) { String tabs = (key.length() > 7) ? "\t" : "\t\t"; out.append("\n\t" + key + tabs + jsonO.get(key)); diff --git a/Client/src/main/java/views/IdTextView.java b/Client/src/main/java/views/IdTextView.java index e61c754..d53a977 100644 --- a/Client/src/main/java/views/IdTextView.java +++ b/Client/src/main/java/views/IdTextView.java @@ -3,11 +3,17 @@ import models.Id; public class IdTextView { + Id id; public IdTextView(Id idToDisplay) { - + this.id = idToDisplay; } @Override public String toString() { - return null; + StringBuilder out = new StringBuilder(); + out.append(String.format( + "\tname:\t\t%s\n" + + "\tgithub:\t\t%s\n" + + "\tuserid:\t\t%s\n", id.getName(), id.getGithubId(), id.getUserId())); + return out.toString(); } } \ No newline at end of file diff --git a/Client/src/main/java/views/MessageTextView.java b/Client/src/main/java/views/MessageTextView.java index fe96921..bee9096 100644 --- a/Client/src/main/java/views/MessageTextView.java +++ b/Client/src/main/java/views/MessageTextView.java @@ -3,11 +3,19 @@ import models.Message; public class MessageTextView { - + Message message; public MessageTextView(Message msgToDisplay) { - + this.message = msgToDisplay; } @Override public String toString() { - return null; + StringBuilder out = new StringBuilder(); + out.append(String.format("Message:\n" + + "\tfromid:\t\t%s\n" + + "\ttoid:\t\t%s\n" + + "\tmessage:\t%s\n" + + "\ttimestamp:\t%s\n" + + "\tsequence:\t%s\n", + message.getFromId(), message.getToId(), message.getMessage(), message.getTimestamp(), message.getSequence())); + return out.toString(); } } \ No newline at end of file diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index b1ed90b..edae9b6 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -96,6 +96,17 @@ public static void main(String[] args) throws java.io.IOException { prettyPrint(results); continue; } + + if (list.size() == 1 && list.get(0).equals("help")) { + System.out.println("\nValid Commands\n" + + "\tids -\tlist all user ids\n" + + "\tids -\tPOST new user id or update existing\n" + + "\tmessages -\tlist all messages on server\n" + + "\tmessages -\tview messages involving \n" + + "\tsend to -\tsend message to x from y\n" + + "\tsend -\tsend message to specific user\n"); + continue; + } // you need to add a bunch more. //!! command returns the last command in history diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index db24df4..b92bb67 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -89,7 +89,7 @@ public String MakeURLCall(String mainurl, String method, String jpayload) { conn.setRequestProperty("Accept", "application/json"); OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream()); - os.write(jpayload);//.getBytes("UTF-8")); + os.write(jpayload); os.flush(); os.close(); From cae407651889749e5b871976510be900e43cb3e1 Mon Sep 17 00:00:00 2001 From: wes Date: Fri, 29 Nov 2019 11:30:46 -0500 Subject: [PATCH 08/16] begin to refactor to OOP --- Client/src/main/java/models/Id.java | 34 ++++++++++++++----- Client/src/main/java/models/Message.java | 23 ++++++++++--- Client/src/main/java/utils/JsonUtils.java | 24 +++++++++++++ Client/src/main/java/views/SimpleShell.java | 15 +++++++- Client/src/main/java/youareell/YouAreEll.java | 1 + 5 files changed, 83 insertions(+), 14 deletions(-) diff --git a/Client/src/main/java/models/Id.java b/Client/src/main/java/models/Id.java index 231ca26..87d496e 100644 --- a/Client/src/main/java/models/Id.java +++ b/Client/src/main/java/models/Id.java @@ -1,17 +1,33 @@ package models; -/* +import com.fasterxml.jackson.databind.ObjectMapper; +import utils.JsonUtils; + +/* * POJO for an Id object */ public class Id { String name; - String githubId; - String userId; + String githubid; + String userid; public Id (String name, String githubId) { this.name = name; - this.githubId = githubId; - this.userId = null; + this.githubid = githubId; + this.userid = null; + } + public Id (String name, String githubId, String userId) { + this.name = name; + this.githubid = githubId; + this.userid = userId; + } + + public Id (Id id) { + this(id.getName(), id.getGithubId(), id.getUserId()); + } + + public Id (String json) { + this(JsonUtils.stringToId(json)); } public String getName() { @@ -23,19 +39,19 @@ public void setName(String name) { } public String getGithubId() { - return this.githubId; + return this.githubid; } public void setGithubId(String githubId) { - this.githubId = githubId; + this.githubid = githubId; } public String getUserId() { - return this.userId; + return this.userid; } public void setUserId(String userId) { - this.userId = userId; + this.userid = userId; } } \ No newline at end of file diff --git a/Client/src/main/java/models/Message.java b/Client/src/main/java/models/Message.java index 27f0c21..94b4421 100644 --- a/Client/src/main/java/models/Message.java +++ b/Client/src/main/java/models/Message.java @@ -1,6 +1,8 @@ package models; -/* +import utils.JsonUtils; + +/* * POJO for an Message object */ public class Message { @@ -10,14 +12,27 @@ public class Message { String sequence; String timestamp; - public Message (String message, String fromId, String toId) { + public Message (String message, String fromId, String toId, String sequence, String timestamp) { this.message = message; this.fromId = fromId; this.toId = toId; - this.sequence = "-"; - this.timestamp = null; + this.sequence = sequence; + this.timestamp = timestamp; + } + + public Message (String message, String fromId, String toId) { + this(message, fromId, toId, "-", null); + } + + public Message(Message message) { + this(message.getMessage(), message.getFromId(), message.getToId(), message.getSequence(), message.getTimestamp()); } + public Message (String json) { + this(JsonUtils.stringToMessage(json)); + } + + public String getMessage() { return message; } diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java index 9e8fc3f..fb5c3b2 100644 --- a/Client/src/main/java/utils/JsonUtils.java +++ b/Client/src/main/java/utils/JsonUtils.java @@ -1,5 +1,8 @@ package utils; +import com.fasterxml.jackson.databind.ObjectMapper; +import models.Id; +import models.Message; import org.json.JSONObject; import java.util.ArrayList; @@ -133,4 +136,25 @@ public static String filterByGithub(String input, String github) { return filtered.toString(); } + + public static Id stringToId(String json) { + try { + ObjectMapper objectMapper = new ObjectMapper(); + Id id = objectMapper.readValue(json, Id.class); + return id; +// return (new ObjectMapper()).readValue(json, Id.class); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static Message stringToMessage(String json) { + try { + return (new ObjectMapper()).readValue(json, Message.class); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } } diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index edae9b6..cdc3cbc 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -10,12 +10,24 @@ import controllers.IdController; import controllers.MessageController; +import models.Id; import utils.ShellUtils; import youareell.YouAreEll; import utils.JsonUtils; // Simple Shell is a Console view for youareell.YouAreEll. public class SimpleShell { + public static void coolPrintId(String in) { + StringBuilder sb = new StringBuilder(); + ArrayList out = JsonUtils.jsonSplitter(in); + for (String s : out) { + System.out.print("[STRING] "+s); + Id id = new Id(s); + IdTextView idv = new IdTextView(id); + System.out.println(idv.toString()); + } + + } public static void prettyPrint(String output) { StringBuilder sb = new StringBuilder(); @@ -80,7 +92,8 @@ public static void main(String[] args) throws java.io.IOException { // ids if (list.contains("ids")) { String results = ShellUtils.interpretIds(list, webber); - prettyPrint(results); + + coolPrintId(results); continue; } diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index b92bb67..56514fa 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -1,5 +1,6 @@ package youareell; +import com.fasterxml.jackson.databind.ObjectMapper; import controllers.*; import java.io.BufferedReader; From 4f335166704c8667ecc04ef318c2c09019cfcfdf Mon Sep 17 00:00:00 2001 From: wes Date: Sat, 30 Nov 2019 14:15:54 -0500 Subject: [PATCH 09/16] implement MessageTextView, IdTextView --- Client/src/main/java/utils/JsonUtils.java | 19 ++++++------------- Client/src/main/java/views/IdTextView.java | 2 +- Client/src/main/java/views/SimpleShell.java | 17 +++++++++++++---- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java index fb5c3b2..50d6e72 100644 --- a/Client/src/main/java/utils/JsonUtils.java +++ b/Client/src/main/java/utils/JsonUtils.java @@ -118,15 +118,9 @@ public static String getId(String ids, String github) { public static String filterByGithub(String input, String github) { StringBuilder filtered = new StringBuilder(); -// System.out.println("\n\n[INPUT FILTERBYGITHUB] " + input); -// input = input.substring(1, input.length()-1); -// System.out.println("\n\n[INPUT AFTER] " + input); - -// String[] out = input.split("},"); String[] out = jsonSplitter(input).toArray(new String[0]); for (int i = 0; i < out.length; i++) { -// System.out.println("[PARTIAL MESSAGES] " + out[i]); JSONObject json = new JSONObject(out[i]); if (json.get("fromid").equals(github)) { filtered.append(out[i]); @@ -139,22 +133,21 @@ public static String filterByGithub(String input, String github) { public static Id stringToId(String json) { try { - ObjectMapper objectMapper = new ObjectMapper(); - Id id = objectMapper.readValue(json, Id.class); - return id; -// return (new ObjectMapper()).readValue(json, Id.class); + JSONObject jsonO = new JSONObject(json); + return new Id(jsonO.get("name").toString(), jsonO.get("github").toString(), jsonO.get("userid").toString()); } catch (Exception e) { e.printStackTrace(); + return null; } - return null; } public static Message stringToMessage(String json) { try { - return (new ObjectMapper()).readValue(json, Message.class); + JSONObject jsonO = new JSONObject(json); + return new Message(jsonO.get("message").toString(), jsonO.get("fromid").toString(), jsonO.get("toid").toString(), jsonO.get("sequence").toString(), jsonO.get("timestamp").toString()); } catch (Exception e) { e.printStackTrace(); + return null; } - return null; } } diff --git a/Client/src/main/java/views/IdTextView.java b/Client/src/main/java/views/IdTextView.java index d53a977..216c509 100644 --- a/Client/src/main/java/views/IdTextView.java +++ b/Client/src/main/java/views/IdTextView.java @@ -10,7 +10,7 @@ public IdTextView(Id idToDisplay) { } @Override public String toString() { StringBuilder out = new StringBuilder(); - out.append(String.format( + out.append(String.format("User:\n" + "\tname:\t\t%s\n" + "\tgithub:\t\t%s\n" + "\tuserid:\t\t%s\n", id.getName(), id.getGithubId(), id.getUserId())); diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index cdc3cbc..969312d 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -11,6 +11,7 @@ import controllers.IdController; import controllers.MessageController; import models.Id; +import models.Message; import utils.ShellUtils; import youareell.YouAreEll; import utils.JsonUtils; @@ -18,15 +19,23 @@ // Simple Shell is a Console view for youareell.YouAreEll. public class SimpleShell { public static void coolPrintId(String in) { - StringBuilder sb = new StringBuilder(); +// StringBuilder sb = new StringBuilder(); ArrayList out = JsonUtils.jsonSplitter(in); for (String s : out) { - System.out.print("[STRING] "+s); +// System.out.print("[STRING] "+s); Id id = new Id(s); IdTextView idv = new IdTextView(id); System.out.println(idv.toString()); } + } + public static void coolPrintMessage(String in) { + ArrayList out = JsonUtils.jsonSplitter(in); + for (String s : out) { + Message msg = new Message(s); + MessageTextView mtv = new MessageTextView(msg); + System.out.println(mtv.toString()); + } } public static void prettyPrint(String output) { @@ -100,13 +109,13 @@ public static void main(String[] args) throws java.io.IOException { // messages if (list.contains("messages")) { String results = ShellUtils.interpretMessages(list, webber); - prettyPrint(results); + coolPrintMessage(results); continue; } if (list.contains("send")) { String results = ShellUtils.interpretSendMessage(list, webber, commandLine); - prettyPrint(results); + coolPrintMessage(results); continue; } From a06bda409f8fb527e5b6c057ff4a0382b85fa513 Mon Sep 17 00:00:00 2001 From: wes Date: Sat, 30 Nov 2019 15:21:56 -0500 Subject: [PATCH 10/16] refactor POST PUT GET Ids --- .../main/java/controllers/IdController.java | 29 +++++- .../controllers/TransactionController.java | 76 +++++++++++++++- Client/src/main/java/utils/JsonUtils.java | 32 +++++-- Client/src/main/java/utils/ShellUtils.java | 26 ++++-- Client/src/main/java/views/SimpleShell.java | 18 +++- Client/src/main/java/youareell/YouAreEll.java | 89 +++++-------------- .../test/java/youareell/testYouAreEll.java | 5 +- 7 files changed, 181 insertions(+), 94 deletions(-) diff --git a/Client/src/main/java/controllers/IdController.java b/Client/src/main/java/controllers/IdController.java index 15b8253..c80f448 100644 --- a/Client/src/main/java/controllers/IdController.java +++ b/Client/src/main/java/controllers/IdController.java @@ -3,20 +3,41 @@ import java.util.ArrayList; import models.Id; +import utils.JsonUtils; public class IdController { Id myId; public ArrayList getIds() { - return null; + ArrayList ids = new ArrayList(); + String json = TransactionController.MakeURLCall("/ids", "GET", ""); + for (String id : JsonUtils.jsonSplitter(json)) { + ids.add(JsonUtils.stringToId(id)); + } + return ids; } public Id postId(Id id) { - return null; + String[] labels = {"name", "github"}; + String[] values = {id.getName(), id.getGithubId()}; + String json = JsonUtils.jsonBuilder(labels, values); + + String resp = TransactionController.MakeURLCall("/ids", "POST", json); + return JsonUtils.stringToId(resp); } public Id putId(Id id) { - return null; + String[] labels = {"userid", "name", "github"}; + String[] values = {id.getUserId(), id.getName(), id.getGithubId()}; + String json = JsonUtils.jsonBuilder(labels, values); + String resp = TransactionController.MakeURLCall("/ids", "PUT", json); + System.out.print("{PROPER DISPATCH}"); + return JsonUtils.stringToId(resp); } - + + +// public static Boolean hasGithub(ArrayList ids, String github) { +// for () +// } + } \ No newline at end of file diff --git a/Client/src/main/java/controllers/TransactionController.java b/Client/src/main/java/controllers/TransactionController.java index acacc62..326bb8e 100644 --- a/Client/src/main/java/controllers/TransactionController.java +++ b/Client/src/main/java/controllers/TransactionController.java @@ -1,7 +1,79 @@ package controllers; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.HttpURLConnection; +import java.net.URL; + public class TransactionController { - private String rootURL = "http://zipcode.rocks:8085"; + private static final String rootURL = "http://zipcode.rocks:8085"; + + public TransactionController() { + + } + + public static String MakeURLCall(String mainurl, String method, String jpayload) { + String response = ""; + try { + HttpURLConnection conn = initConnection(mainurl, method, jpayload); + response = readServerResponse(conn); + conn.disconnect(); + } + catch (Exception e) { + e.printStackTrace(); + } + return response; + } + + public static HttpURLConnection handlePostPut(HttpURLConnection conn, String jpayload) { + conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); + conn.setRequestProperty("Accept", "application/json"); + try { + OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream()); + os.write(jpayload); + os.flush(); + os.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return conn; + } + + public static String readServerResponse(HttpURLConnection conn) { + StringBuilder result = new StringBuilder(); + try { + BufferedReader br = new BufferedReader(new InputStreamReader( + (conn.getInputStream()))); + + String output; + while ((output = br.readLine()) != null) { + result.append(output); + } + } catch (Exception e) { + e.printStackTrace(); + } + return result.toString(); + } + + public static HttpURLConnection initConnection(String mainurl, String method, String jpayload) { + try { + URL url = new URL(rootURL + mainurl); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + + conn.setDoOutput(true); + conn.setRequestMethod(method); + + if (method.equals("POST") || method.equals("PUT")) { + conn = handlePostPut(conn, jpayload); + } + + return conn; + + } catch(Exception e) { - public TransactionController() {} + e.printStackTrace(); + return null; + } + } } diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java index 50d6e72..33f35f4 100644 --- a/Client/src/main/java/utils/JsonUtils.java +++ b/Client/src/main/java/utils/JsonUtils.java @@ -1,9 +1,9 @@ package utils; -import com.fasterxml.jackson.databind.ObjectMapper; import models.Id; import models.Message; import org.json.JSONObject; +import views.IdTextView; import java.util.ArrayList; import java.util.List; @@ -102,14 +102,16 @@ else if (item.charAt(item.length()-1) == '\'') { return out.substring(1, out.length()-1); } - public static String getId(String ids, String github) { + public static String getId(ArrayList ids, String github) { String userId = ""; - ids = ids.substring(1, ids.length()-1) + "}"; - String[] out = ids.split("},"); - for (String str : out) { - JSONObject json = new JSONObject(fixJSON(str)); - if (json.get("github").equals(github)) { - userId = (String) json.get("userid"); +// ids = ids.substring(1, ids.length()-1) + "}"; +// String[] out = ids.split("},"); + for (Id id : ids) { + IdTextView idv = new IdTextView(id); + System.out.println("[TEST]"+idv.toString()); +// JSONObject json = new JSONObject(fixJSON(str)); + if (id.getGithubId().equals(github)) { + userId = id.getUserId(); break; } } @@ -150,4 +152,18 @@ public static Message stringToMessage(String json) { return null; } } + + public static String jsonBuilder(String[] labels, String[] values) { + StringBuilder json = new StringBuilder().append("{"); + + for (int i = 0; i < labels.length; i++) { + if (values[i] == null) json.append(String.format("\"%s\": %s", labels[i], values[i])); + else json.append(String.format("\"%s\": \"%s\"", labels[i], values[i])); + + if (i != labels.length-1) json.append(","); + } + json.append("}"); +// String g = "{\"name\": \"Wes\",\"github\":\"wesjones15\"}"; + return json.toString(); + } } diff --git a/Client/src/main/java/utils/ShellUtils.java b/Client/src/main/java/utils/ShellUtils.java index 0d9dd38..5db4eb4 100644 --- a/Client/src/main/java/utils/ShellUtils.java +++ b/Client/src/main/java/utils/ShellUtils.java @@ -1,25 +1,33 @@ package utils; +import models.Id; import youareell.YouAreEll; + +import java.util.ArrayList; import java.util.List; public class ShellUtils { static String results = "No results"; - public static String interpretIds(List list, YouAreEll webber) { - if (list.size() == 1) - results = webber.get_ids(); + public static ArrayList interpretIds(List list, YouAreEll webber) { + ArrayList idsList = new ArrayList(); + if (list.size() == 1) { + idsList = webber.get_ids(); + } +// results = webber.get_ids(); else if (list.get(0).equals("ids") && list.size() == 3) { - String ids = webber.get_ids(); - String userId = JsonUtils.getId(ids, list.get(2)); + idsList = webber.get_ids(); +// String ids = webber.get_ids(); + String userId = JsonUtils.getId(idsList, list.get(2)); - if (ids.contains(String.format("\"github\":\"%s\"", list.get(2)))) - results = webber.put_ids(userId, list.get(1), list.get(2)); +// if (idsList.contains(String.format("\"github\":\"%s\"", list.get(2)))) + if (!userId.equals("")) + idsList.add(webber.put_ids(userId, list.get(1), list.get(2))); else - results = webber.post_ids(list.get(1), list.get(2)); + idsList.add(webber.post_ids(list.get(1), list.get(2))); } - return results; + return idsList; } public static String interpretMessages(List list, YouAreEll webber) { diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 969312d..274ccd6 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -29,6 +29,20 @@ public static void coolPrintId(String in) { } } + public static void decentPrintId(ArrayList ids) { + for (Id id : ids) { + IdTextView itv = new IdTextView(id); + System.out.println(itv.toString()); + } + } + + public static void decentPrintMsg(ArrayList msgs) { + for (Message msg : msgs) { + MessageTextView mtv = new MessageTextView(msg); + System.out.println(mtv.toString()); + } + } + public static void coolPrintMessage(String in) { ArrayList out = JsonUtils.jsonSplitter(in); for (String s : out) { @@ -100,9 +114,9 @@ public static void main(String[] args) throws java.io.IOException { // ids if (list.contains("ids")) { - String results = ShellUtils.interpretIds(list, webber); + ArrayList results = ShellUtils.interpretIds(list, webber); - coolPrintId(results); + decentPrintId(results); continue; } diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index 56514fa..aabcd91 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -2,6 +2,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import controllers.*; +import models.Id; +import utils.JsonUtils; import java.io.BufferedReader; import java.io.InputStreamReader; @@ -32,22 +34,27 @@ public static void main(String[] args) { System.out.println(urlhandler.MakeURLCall("/messages", "GET", "")); } - public String get_ids() { - return MakeURLCall("/ids", "GET", ""); + public ArrayList get_ids() { + return idCtrl.getIds(); +// return MakeURLCall("/ids", "GET", ""); } - public String post_ids(String name, String git) { - String[] labels = {"name", "github"}; - String[] values = {name, git}; - String json = jsonBuilder(labels, values); - return MakeURLCall("/ids", "POST", json); + public Id post_ids(String name, String git) { +// String[] labels = {"name", "github"}; +// String[] values = {name, git}; +// String json = jsonBuilder(labels, values); + Id id = new Id(name, git); + return idCtrl.postId(id); +// return MakeURLCall("/ids", "POST", json); } - public String put_ids(String id, String name, String git) { - String[] labels = {"userid", "name", "github"}; - String[] values = {id, name, git}; - String json = jsonBuilder(labels, values); - return MakeURLCall("/ids", "PUT", json); + public Id put_ids(String userid, String name, String git) { +// String[] labels = {"userid", "name", "github"}; +// String[] values = {id, name, git}; +// String json = JsonUtils.jsonBuilder(labels, values); +// return MakeURLCall("/ids", "PUT", json); + Id id = new Id(name, git, userid); + return idCtrl.putId(id); } public String get_messages() { @@ -61,71 +68,19 @@ public String get_messages_github(String github) { public String post_message() { String[] labels = {}; String[] values = {}; - String json = jsonBuilder(labels, values); + String json = JsonUtils.jsonBuilder(labels, values); return MakeURLCall("/messages","POST", json); } public String post_message_to_git(String fromid, String toid, String message) { String[] labels = {"sequence", "timestamp", "fromid", "toid", "message"}; String[] values = {"-", null, fromid, toid, message}; - String json = jsonBuilder(labels, values); + String json = JsonUtils.jsonBuilder(labels, values); // System.out.println("[JSON ALERT] "+json); String mainurl = String.format("/ids/%s/messages", fromid); return MakeURLCall(mainurl,"POST", json); } public String MakeURLCall(String mainurl, String method, String jpayload) { - - StringBuilder result = new StringBuilder(); - - try { - URL url = new URL("http://zipcode.rocks:8085" + mainurl); - - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - - conn.setDoOutput(true); - conn.setRequestMethod(method); - - if (method.equals("POST") || method.equals("PUT")) { - conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); - conn.setRequestProperty("Accept", "application/json"); - - OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream()); - os.write(jpayload); - - os.flush(); - os.close(); - } - - BufferedReader br = new BufferedReader(new InputStreamReader( - (conn.getInputStream()))); - - String output; - while ((output = br.readLine()) != null) { - result.append(output); - } - - conn.disconnect(); - - } catch (Exception e) { - e.printStackTrace(); - } -// System.out.println(result.toString()); - return result.toString(); - } - - public String jsonBuilder(String[] labels, String[] values) { - StringBuilder json = new StringBuilder().append("{"); - - for (int i = 0; i < labels.length; i++) { - if (values[i] == null) json.append(String.format("\"%s\": %s", labels[i], values[i])); - else json.append(String.format("\"%s\": \"%s\"", labels[i], values[i])); - - if (i != labels.length-1) json.append(","); - } - json.append("}"); -// String g = "{\"name\": \"Wes\",\"github\":\"wesjones15\"}"; - return json.toString(); + return TransactionController.MakeURLCall(mainurl, method, jpayload); } - - } diff --git a/Client/src/test/java/youareell/testYouAreEll.java b/Client/src/test/java/youareell/testYouAreEll.java index d48f2f9..dbc80f7 100644 --- a/Client/src/test/java/youareell/testYouAreEll.java +++ b/Client/src/test/java/youareell/testYouAreEll.java @@ -1,14 +1,15 @@ package youareell; import org.junit.Test; +import utils.JsonUtils; public class testYouAreEll { @Test public void testJsonBuilder() { - YouAreEll url = new YouAreEll(null,null); +// YouAreEll url = new YouAreEll(null,null); String[] labels = {"name","github","favorite singer"}; String[] values = {"wes", "wesjones15", "blink182"}; - String json = url.jsonBuilder(labels, values); + String json = JsonUtils.jsonBuilder(labels, values); System.out.println(json); } From fbbf445a43317c5227eec9432c7fd278e33448c3 Mon Sep 17 00:00:00 2001 From: wes Date: Sat, 30 Nov 2019 15:34:47 -0500 Subject: [PATCH 11/16] refactor Ids --- .../main/java/controllers/IdController.java | 1 - Client/src/main/java/utils/JsonUtils.java | 6 +----- Client/src/main/java/utils/ShellUtils.java | 18 +++++++----------- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/Client/src/main/java/controllers/IdController.java b/Client/src/main/java/controllers/IdController.java index c80f448..2ef1d34 100644 --- a/Client/src/main/java/controllers/IdController.java +++ b/Client/src/main/java/controllers/IdController.java @@ -31,7 +31,6 @@ public Id putId(Id id) { String[] values = {id.getUserId(), id.getName(), id.getGithubId()}; String json = JsonUtils.jsonBuilder(labels, values); String resp = TransactionController.MakeURLCall("/ids", "PUT", json); - System.out.print("{PROPER DISPATCH}"); return JsonUtils.stringToId(resp); } diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java index 33f35f4..0b816b2 100644 --- a/Client/src/main/java/utils/JsonUtils.java +++ b/Client/src/main/java/utils/JsonUtils.java @@ -104,12 +104,8 @@ else if (item.charAt(item.length()-1) == '\'') { public static String getId(ArrayList ids, String github) { String userId = ""; -// ids = ids.substring(1, ids.length()-1) + "}"; -// String[] out = ids.split("},"); + for (Id id : ids) { - IdTextView idv = new IdTextView(id); - System.out.println("[TEST]"+idv.toString()); -// JSONObject json = new JSONObject(fixJSON(str)); if (id.getGithubId().equals(github)) { userId = id.getUserId(); break; diff --git a/Client/src/main/java/utils/ShellUtils.java b/Client/src/main/java/utils/ShellUtils.java index 5db4eb4..8549297 100644 --- a/Client/src/main/java/utils/ShellUtils.java +++ b/Client/src/main/java/utils/ShellUtils.java @@ -10,22 +10,18 @@ public class ShellUtils { static String results = "No results"; public static ArrayList interpretIds(List list, YouAreEll webber) { - ArrayList idsList = new ArrayList(); - if (list.size() == 1) { - idsList = webber.get_ids(); - } -// results = webber.get_ids(); + // ids GET request implicit + ArrayList idsList = webber.get_ids(); - else if (list.get(0).equals("ids") && list.size() == 3) { - idsList = webber.get_ids(); -// String ids = webber.get_ids(); + if (list.get(0).equals("ids") && list.size() == 3) { String userId = JsonUtils.getId(idsList, list.get(2)); + idsList = new ArrayList(); -// if (idsList.contains(String.format("\"github\":\"%s\"", list.get(2)))) - if (!userId.equals("")) + if (!userId.equals("")) { idsList.add(webber.put_ids(userId, list.get(1), list.get(2))); - else + } else { idsList.add(webber.post_ids(list.get(1), list.get(2))); + } } return idsList; } From 09b7047b430432a93f8eb7011961dab1bde46342 Mon Sep 17 00:00:00 2001 From: wes Date: Sat, 30 Nov 2019 16:51:43 -0500 Subject: [PATCH 12/16] change project language level to 8 --- Client/Client.iml | 2 +- .../main/java/controllers/IdController.java | 14 +++++++------ .../java/controllers/MessageController.java | 20 ++++++++++++++++--- Client/src/main/java/utils/JsonUtils.java | 6 +++++- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/Client/Client.iml b/Client/Client.iml index 15d36a9..b076a0f 100644 --- a/Client/Client.iml +++ b/Client/Client.iml @@ -1,6 +1,6 @@ - + diff --git a/Client/src/main/java/controllers/IdController.java b/Client/src/main/java/controllers/IdController.java index 2ef1d34..80613f8 100644 --- a/Client/src/main/java/controllers/IdController.java +++ b/Client/src/main/java/controllers/IdController.java @@ -8,6 +8,14 @@ public class IdController { Id myId; + public void setMyId(Id myId) { + this.myId = myId; + } + + public Id getMyId() { + return this.myId; + } + public ArrayList getIds() { ArrayList ids = new ArrayList(); String json = TransactionController.MakeURLCall("/ids", "GET", ""); @@ -33,10 +41,4 @@ public Id putId(Id id) { String resp = TransactionController.MakeURLCall("/ids", "PUT", json); return JsonUtils.stringToId(resp); } - - -// public static Boolean hasGithub(ArrayList ids, String github) { -// for () -// } - } \ No newline at end of file diff --git a/Client/src/main/java/controllers/MessageController.java b/Client/src/main/java/controllers/MessageController.java index f9462ed..a483953 100644 --- a/Client/src/main/java/controllers/MessageController.java +++ b/Client/src/main/java/controllers/MessageController.java @@ -2,9 +2,11 @@ import java.util.ArrayList; import java.util.HashSet; +import java.util.stream.Collectors; import models.Id; import models.Message; +import utils.JsonUtils; public class MessageController { @@ -12,10 +14,22 @@ public class MessageController { // why a HashSet?? public ArrayList getMessages() { - return null; + ArrayList messages = new ArrayList(); + String json = TransactionController.MakeURLCall("/messages", "GET", ""); + for (String message : JsonUtils.jsonSplitter(json)) { + messages.add(JsonUtils.stringToMessage(message)); + } + return messages; } - public ArrayList getMessagesForId(Id Id) { - return null; + public ArrayList getMessagesForId(Id id) { +// ArrayList messages = new ArrayList(); +// String json = TransactionController.MakeURLCall("/messages", "GET", ""); +// ArrayList jsons = JsonUtils.jsonSplitter(json); + return (ArrayList) getMessages().stream() + .filter(m -> m.getFromId().equals(id.getGithubId())) + .collect(Collectors.toList()); +// messages.add(JsonUtils.stringToMessage(message)); +// return null; } public Message getMessageForSequence(String seq) { return null; diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java index 0b816b2..11ff232 100644 --- a/Client/src/main/java/utils/JsonUtils.java +++ b/Client/src/main/java/utils/JsonUtils.java @@ -6,6 +6,7 @@ import views.IdTextView; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class JsonUtils { @@ -117,7 +118,8 @@ public static String getId(ArrayList ids, String github) { public static String filterByGithub(String input, String github) { StringBuilder filtered = new StringBuilder(); String[] out = jsonSplitter(input).toArray(new String[0]); - +// ArrayList messages = jsonSplitter(input); +// Arrays.stream(out).filter() for (int i = 0; i < out.length; i++) { JSONObject json = new JSONObject(out[i]); if (json.get("fromid").equals(github)) { @@ -129,6 +131,8 @@ public static String filterByGithub(String input, String github) { return filtered.toString(); } + + public static Id stringToId(String json) { try { JSONObject jsonO = new JSONObject(json); From 4c567466de5c68c1fc1e8bee7535157e9b353a31 Mon Sep 17 00:00:00 2001 From: wes Date: Sat, 30 Nov 2019 19:08:30 -0500 Subject: [PATCH 13/16] progress --- .../main/java/controllers/IdController.java | 6 +++ .../java/controllers/MessageController.java | 28 +++++++++----- Client/src/main/java/utils/ShellUtils.java | 37 +++++++++++++------ Client/src/main/java/views/SimpleShell.java | 12 +++--- Client/src/main/java/youareell/YouAreEll.java | 5 ++- 5 files changed, 59 insertions(+), 29 deletions(-) diff --git a/Client/src/main/java/controllers/IdController.java b/Client/src/main/java/controllers/IdController.java index 80613f8..3495c0e 100644 --- a/Client/src/main/java/controllers/IdController.java +++ b/Client/src/main/java/controllers/IdController.java @@ -1,6 +1,7 @@ package controllers; import java.util.ArrayList; +import java.util.stream.Collectors; import models.Id; import utils.JsonUtils; @@ -38,7 +39,12 @@ public Id putId(Id id) { String[] labels = {"userid", "name", "github"}; String[] values = {id.getUserId(), id.getName(), id.getGithubId()}; String json = JsonUtils.jsonBuilder(labels, values); + String resp = TransactionController.MakeURLCall("/ids", "PUT", json); return JsonUtils.stringToId(resp); } + + public Id getIdByGit(String githubId) { + return getIds().stream().filter(id -> id.getGithubId().equals(githubId)).collect(Collectors.toList()).get(0); + } } \ No newline at end of file diff --git a/Client/src/main/java/controllers/MessageController.java b/Client/src/main/java/controllers/MessageController.java index a483953..827c5ca 100644 --- a/Client/src/main/java/controllers/MessageController.java +++ b/Client/src/main/java/controllers/MessageController.java @@ -12,7 +12,7 @@ public class MessageController { private HashSet messagesSeen; // why a HashSet?? - + //TODO implement these functions and verify that they actually work public ArrayList getMessages() { ArrayList messages = new ArrayList(); String json = TransactionController.MakeURLCall("/messages", "GET", ""); @@ -22,24 +22,32 @@ public ArrayList getMessages() { return messages; } public ArrayList getMessagesForId(Id id) { -// ArrayList messages = new ArrayList(); -// String json = TransactionController.MakeURLCall("/messages", "GET", ""); -// ArrayList jsons = JsonUtils.jsonSplitter(json); return (ArrayList) getMessages().stream() .filter(m -> m.getFromId().equals(id.getGithubId())) .collect(Collectors.toList()); -// messages.add(JsonUtils.stringToMessage(message)); -// return null; } public Message getMessageForSequence(String seq) { - return null; + return getMessages().stream() + .filter(m -> m.getSequence().equals(seq)) + .collect(Collectors.toList()).get(0); } public ArrayList getMessagesFromFriend(Id myId, Id friendId) { - return null; + return (ArrayList) getMessages().stream() + .filter(m -> + (m.getFromId().equals(myId.getGithubId())) && + (m.getToId().equals(friendId.getGithubId()))) + .collect(Collectors.toList()); } - public Message postMessage(Id myId, Id toId, Message msg) { - return null; + public Message postMessage(String fromid, String toid, String message) { + String[] labels = {"sequence", "timestamp", "fromid", "toid", "message"}; + String[] values = {"-", null, fromid, toid, message}; + String json = JsonUtils.jsonBuilder(labels, values); + + String mainurl = String.format("/ids/%s/messages", fromid); + + String resp = TransactionController.MakeURLCall(mainurl,"POST", json); + return JsonUtils.stringToMessage(resp); } } \ No newline at end of file diff --git a/Client/src/main/java/utils/ShellUtils.java b/Client/src/main/java/utils/ShellUtils.java index 8549297..e8c5cca 100644 --- a/Client/src/main/java/utils/ShellUtils.java +++ b/Client/src/main/java/utils/ShellUtils.java @@ -1,6 +1,9 @@ package utils; +import controllers.IdController; +import controllers.MessageController; import models.Id; +import models.Message; import youareell.YouAreEll; import java.util.ArrayList; @@ -8,7 +11,8 @@ public class ShellUtils { static String results = "No results"; - + static IdController idCtrl = new IdController(); + static MessageController msgCtrl = new MessageController(); public static ArrayList interpretIds(List list, YouAreEll webber) { // ids GET request implicit ArrayList idsList = webber.get_ids(); @@ -26,24 +30,35 @@ public static ArrayList interpretIds(List list, YouAreEll webber) { return idsList; } - public static String interpretMessages(List list, YouAreEll webber) { - if (list.size() == 1) - results = webber.get_messages(); - else if (list.size()==2) - results = JsonUtils.filterByGithub(webber.get_messages(), list.get(1)); + public static ArrayList interpretMessages(List list, YouAreEll webber) { + ArrayList messages = webber.get_messages(); + + if (list.size() == 3 && list.get(1).equals("seq")){ + messages = new ArrayList<>(); + messages.add(msgCtrl.getMessageForSequence(list.get(2))); + } else if (list.size() == 2) { + Id myId = idCtrl.getIdByGit(list.get(1)); + messages = msgCtrl.getMessagesForId(myId); + } else if (list.size() == 3) { + Id myId = idCtrl.getIdByGit(list.get(1)); + Id friendId = idCtrl.getIdByGit(list.get(2)); + messages = msgCtrl.getMessagesFromFriend(myId, friendId); + } - return results; + return messages; } - public static String interpretSendMessage(List list, YouAreEll webber, String commandLine) { + public static ArrayList interpretSendMessage(List list, YouAreEll webber, String commandLine) { + ArrayList messages = new ArrayList<>(); String message = JsonUtils.buildMessage(list); if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9. ]+'")) - results = webber.post_message_to_git(list.get(1), "", message); + messages.add(msgCtrl.postMessage(list.get(1), "", message)); +// results = webber.post_message_to_git(list.get(1), "", message); else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9 ]+' to [A-Za-z0-9]+")) - results = webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); + messages.add(msgCtrl.postMessage(list.get(1), list.get(list.size()-1), message));//webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); - return results; + return messages; } } diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 274ccd6..3cd8cab 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -114,22 +114,22 @@ public static void main(String[] args) throws java.io.IOException { // ids if (list.contains("ids")) { - ArrayList results = ShellUtils.interpretIds(list, webber); + ArrayList ids = ShellUtils.interpretIds(list, webber); - decentPrintId(results); + decentPrintId(ids); continue; } // messages if (list.contains("messages")) { - String results = ShellUtils.interpretMessages(list, webber); - coolPrintMessage(results); + ArrayList messages = ShellUtils.interpretMessages(list, webber); + decentPrintMsg(messages); continue; } if (list.contains("send")) { - String results = ShellUtils.interpretSendMessage(list, webber, commandLine); - coolPrintMessage(results); + ArrayList messages = ShellUtils.interpretSendMessage(list, webber, commandLine); + decentPrintMsg(messages); continue; } diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index aabcd91..3ef95ff 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import controllers.*; import models.Id; +import models.Message; import utils.JsonUtils; import java.io.BufferedReader; @@ -57,8 +58,8 @@ public Id put_ids(String userid, String name, String git) { return idCtrl.putId(id); } - public String get_messages() { - return MakeURLCall("/messages", "GET", ""); + public ArrayList get_messages() { + return msgCtrl.getMessages();//MakeURLCall("/messages", "GET", ""); } public String get_messages_github(String github) { From df00856105923d4176bb95c88a1800ba3a6794fc Mon Sep 17 00:00:00 2001 From: wes Date: Sat, 30 Nov 2019 20:28:09 -0500 Subject: [PATCH 14/16] comment obsolete methods --- Client/src/main/java/utils/JsonUtils.java | 70 +++++++-------- Client/src/main/java/utils/ShellUtils.java | 29 +++---- Client/src/main/java/views/SimpleShell.java | 40 +++++---- Client/src/main/java/youareell/YouAreEll.java | 87 +++++++++---------- 4 files changed, 114 insertions(+), 112 deletions(-) diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java index 11ff232..1535670 100644 --- a/Client/src/main/java/utils/JsonUtils.java +++ b/Client/src/main/java/utils/JsonUtils.java @@ -62,25 +62,25 @@ public static ArrayList jsonSplitter(String json) { return split; } - public static String jsonToFormattedString(String json) { - StringBuilder out = new StringBuilder(); - JSONObject jsonO = new JSONObject(json); - - for (String key : jsonO.keySet()) { - String tabs = (key.length() > 7) ? "\t" : "\t\t"; - out.append("\n\t" + key + tabs + jsonO.get(key)); - } - - return out.toString(); - } - - public static String fixJSON(String json) { - if (json.charAt(0) != '{') - json = '{' + json; - if (json.charAt(json.length()-1) != '}') - json = json + '}'; - return json; - } +// public static String jsonToFormattedString(String json) { +// StringBuilder out = new StringBuilder(); +// JSONObject jsonO = new JSONObject(json); +// +// for (String key : jsonO.keySet()) { +// String tabs = (key.length() > 7) ? "\t" : "\t\t"; +// out.append("\n\t" + key + tabs + jsonO.get(key)); +// } +// +// return out.toString(); +// } + +// public static String fixJSON(String json) { +// if (json.charAt(0) != '{') +// json = '{' + json; +// if (json.charAt(json.length()-1) != '}') +// json = json + '}'; +// return json; +// } public static String buildMessage(List list) { StringBuilder sb = new StringBuilder(); @@ -94,7 +94,7 @@ else if (inTheMix) { sb.append(" " + item); } else if (item.charAt(item.length()-1) == '\'') { - inTheMix = false; +// inTheMix = false; sb.append(item); break; } @@ -115,21 +115,21 @@ public static String getId(ArrayList ids, String github) { return userId; } - public static String filterByGithub(String input, String github) { - StringBuilder filtered = new StringBuilder(); - String[] out = jsonSplitter(input).toArray(new String[0]); -// ArrayList messages = jsonSplitter(input); -// Arrays.stream(out).filter() - for (int i = 0; i < out.length; i++) { - JSONObject json = new JSONObject(out[i]); - if (json.get("fromid").equals(github)) { - filtered.append(out[i]); - if (i != out.length-1) filtered.append(","); - } - } - - return filtered.toString(); - } +// public static String filterByGithub(String input, String github) { +// StringBuilder filtered = new StringBuilder(); +// String[] out = jsonSplitter(input).toArray(new String[0]); +//// ArrayList messages = jsonSplitter(input); +//// Arrays.stream(out).filter() +// for (int i = 0; i < out.length; i++) { +// JSONObject json = new JSONObject(out[i]); +// if (json.get("fromid").equals(github)) { +// filtered.append(out[i]); +// if (i != out.length-1) filtered.append(","); +// } +// } +// +// return filtered.toString(); +// } diff --git a/Client/src/main/java/utils/ShellUtils.java b/Client/src/main/java/utils/ShellUtils.java index e8c5cca..08f1336 100644 --- a/Client/src/main/java/utils/ShellUtils.java +++ b/Client/src/main/java/utils/ShellUtils.java @@ -10,36 +10,36 @@ import java.util.List; public class ShellUtils { - static String results = "No results"; static IdController idCtrl = new IdController(); static MessageController msgCtrl = new MessageController(); - public static ArrayList interpretIds(List list, YouAreEll webber) { - // ids GET request implicit - ArrayList idsList = webber.get_ids(); + + public static ArrayList interpretIds(List list) { + ArrayList idsList = idCtrl.getIds(); if (list.get(0).equals("ids") && list.size() == 3) { String userId = JsonUtils.getId(idsList, list.get(2)); idsList = new ArrayList(); - if (!userId.equals("")) { - idsList.add(webber.put_ids(userId, list.get(1), list.get(2))); - } else { - idsList.add(webber.post_ids(list.get(1), list.get(2))); - } + if (!userId.equals("")) + idsList.add(idCtrl.putId(new Id(list.get(1), list.get(2), userId))); + else + idsList.add(idCtrl.postId(new Id(list.get(1), list.get(2)))); } return idsList; } - public static ArrayList interpretMessages(List list, YouAreEll webber) { - ArrayList messages = webber.get_messages(); + public static ArrayList interpretMessages(List list) { + ArrayList messages = msgCtrl.getMessages(); if (list.size() == 3 && list.get(1).equals("seq")){ messages = new ArrayList<>(); messages.add(msgCtrl.getMessageForSequence(list.get(2))); - } else if (list.size() == 2) { + } + else if (list.size() == 2) { Id myId = idCtrl.getIdByGit(list.get(1)); messages = msgCtrl.getMessagesForId(myId); - } else if (list.size() == 3) { + } + else if (list.size() == 3) { Id myId = idCtrl.getIdByGit(list.get(1)); Id friendId = idCtrl.getIdByGit(list.get(2)); messages = msgCtrl.getMessagesFromFriend(myId, friendId); @@ -48,13 +48,12 @@ public static ArrayList interpretMessages(List list, YouAreEll return messages; } - public static ArrayList interpretSendMessage(List list, YouAreEll webber, String commandLine) { + public static ArrayList interpretSendMessage(List list, String commandLine) { ArrayList messages = new ArrayList<>(); String message = JsonUtils.buildMessage(list); if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9. ]+'")) messages.add(msgCtrl.postMessage(list.get(1), "", message)); -// results = webber.post_message_to_git(list.get(1), "", message); else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9 ]+' to [A-Za-z0-9]+")) messages.add(msgCtrl.postMessage(list.get(1), list.get(list.size()-1), message));//webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 3cd8cab..8338894 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -52,23 +52,23 @@ public static void coolPrintMessage(String in) { } } - public static void prettyPrint(String output) { - StringBuilder sb = new StringBuilder(); - if (output != null && !output.equals("null")) { - ArrayList out = JsonUtils.jsonSplitter(output); - - for (String str : out) { - sb.append("\n\n=-==-==Entry==-====--===--====--===--====--===--=--"); - sb.append(JsonUtils.jsonToFormattedString(str)); - } - sb.append("\n"); - } - System.out.print(sb.toString()); - } +// public static void prettyPrint(String output) { +// StringBuilder sb = new StringBuilder(); +// if (output != null && !output.equals("null")) { +// ArrayList out = JsonUtils.jsonSplitter(output); +// +// for (String str : out) { +// sb.append("\n\n=-==-==Entry==-====--===--====--===--====--===--=--"); +// sb.append(JsonUtils.jsonToFormattedString(str)); +// } +// sb.append("\n"); +// } +// System.out.print(sb.toString()); +// } public static void main(String[] args) throws java.io.IOException { - YouAreEll webber = new YouAreEll(new MessageController(), new IdController()); +// YouAreEll webber = new YouAreEll(new MessageController(), new IdController()); String commandLine; BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); @@ -114,21 +114,25 @@ public static void main(String[] args) throws java.io.IOException { // ids if (list.contains("ids")) { - ArrayList ids = ShellUtils.interpretIds(list, webber); - + ArrayList ids = ShellUtils.interpretIds(list); decentPrintId(ids); continue; } + if (commandLine.matches("set id [A-Za-z0-9]+")) { + System.out.println(String.format("Setting myId to %s", list.get(2))); + continue; + } + // messages if (list.contains("messages")) { - ArrayList messages = ShellUtils.interpretMessages(list, webber); + ArrayList messages = ShellUtils.interpretMessages(list); decentPrintMsg(messages); continue; } if (list.contains("send")) { - ArrayList messages = ShellUtils.interpretSendMessage(list, webber, commandLine); + ArrayList messages = ShellUtils.interpretSendMessage(list, commandLine); decentPrintMsg(messages); continue; } diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index 3ef95ff..50697d2 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -35,51 +35,50 @@ public static void main(String[] args) { System.out.println(urlhandler.MakeURLCall("/messages", "GET", "")); } - public ArrayList get_ids() { - return idCtrl.getIds(); -// return MakeURLCall("/ids", "GET", ""); - } - - public Id post_ids(String name, String git) { -// String[] labels = {"name", "github"}; -// String[] values = {name, git}; -// String json = jsonBuilder(labels, values); - Id id = new Id(name, git); - return idCtrl.postId(id); -// return MakeURLCall("/ids", "POST", json); - } - - public Id put_ids(String userid, String name, String git) { -// String[] labels = {"userid", "name", "github"}; -// String[] values = {id, name, git}; +// public ArrayList get_ids() { +// return idCtrl.getIds(); +//// return MakeURLCall("/ids", "GET", ""); +// } +// +// public Id post_ids(String name, String git) { +//// String[] labels = {"name", "github"}; +//// String[] values = {name, git}; +//// String json = jsonBuilder(labels, values); +// Id id = new Id(name, git); +// return idCtrl.postId(id); +//// return MakeURLCall("/ids", "POST", json); +// } +// +// public Id put_ids(String userid, String name, String git) { +//// String[] labels = {"userid", "name", "github"}; +//// String[] values = {id, name, git}; +//// String json = JsonUtils.jsonBuilder(labels, values); +//// return MakeURLCall("/ids", "PUT", json); +// return idCtrl.putId(new Id(name, git, userid)); +// } +// +// public ArrayList get_messages() { +// return msgCtrl.getMessages();//MakeURLCall("/messages", "GET", ""); +// } +// +// public String get_messages_github(String github) { +// String mainurl = String.format("/ids/%s/messages", github); +// return MakeURLCall(mainurl, "GET", ""); +// } +// public String post_message() { +// String[] labels = {}; +// String[] values = {}; // String json = JsonUtils.jsonBuilder(labels, values); -// return MakeURLCall("/ids", "PUT", json); - Id id = new Id(name, git, userid); - return idCtrl.putId(id); - } - - public ArrayList get_messages() { - return msgCtrl.getMessages();//MakeURLCall("/messages", "GET", ""); - } - - public String get_messages_github(String github) { - String mainurl = String.format("/ids/%s/messages", github); - return MakeURLCall(mainurl, "GET", ""); - } - public String post_message() { - String[] labels = {}; - String[] values = {}; - String json = JsonUtils.jsonBuilder(labels, values); - return MakeURLCall("/messages","POST", json); - } - public String post_message_to_git(String fromid, String toid, String message) { - String[] labels = {"sequence", "timestamp", "fromid", "toid", "message"}; - String[] values = {"-", null, fromid, toid, message}; - String json = JsonUtils.jsonBuilder(labels, values); -// System.out.println("[JSON ALERT] "+json); - String mainurl = String.format("/ids/%s/messages", fromid); - return MakeURLCall(mainurl,"POST", json); - } +// return TransactionController.MakeURLCall("/messages","POST", json); +// } +// public String post_message_to_git(String fromid, String toid, String message) { +// String[] labels = {"sequence", "timestamp", "fromid", "toid", "message"}; +// String[] values = {"-", null, fromid, toid, message}; +// String json = JsonUtils.jsonBuilder(labels, values); +//// System.out.println("[JSON ALERT] "+json); +// String mainurl = String.format("/ids/%s/messages", fromid); +// return TransactionController.MakeURLCall(mainurl,"POST", json); +// } public String MakeURLCall(String mainurl, String method, String jpayload) { return TransactionController.MakeURLCall(mainurl, method, jpayload); From 372ff58927e9c218d1a1a5575c33aa89575109c6 Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 3 Dec 2019 16:57:05 -0500 Subject: [PATCH 15/16] to merge --- .../java/controllers/MessageController.java | 1 - .../controllers/TransactionController.java | 5 +- Client/src/main/java/utils/ShellUtils.java | 63 ------------ Client/src/main/java/views/SimpleShell.java | 19 ++-- Client/src/main/java/youareell/YouAreEll.java | 96 +++++++++---------- 5 files changed, 59 insertions(+), 125 deletions(-) delete mode 100644 Client/src/main/java/utils/ShellUtils.java diff --git a/Client/src/main/java/controllers/MessageController.java b/Client/src/main/java/controllers/MessageController.java index 827c5ca..9914580 100644 --- a/Client/src/main/java/controllers/MessageController.java +++ b/Client/src/main/java/controllers/MessageController.java @@ -12,7 +12,6 @@ public class MessageController { private HashSet messagesSeen; // why a HashSet?? - //TODO implement these functions and verify that they actually work public ArrayList getMessages() { ArrayList messages = new ArrayList(); String json = TransactionController.MakeURLCall("/messages", "GET", ""); diff --git a/Client/src/main/java/controllers/TransactionController.java b/Client/src/main/java/controllers/TransactionController.java index 326bb8e..f1a7208 100644 --- a/Client/src/main/java/controllers/TransactionController.java +++ b/Client/src/main/java/controllers/TransactionController.java @@ -26,7 +26,7 @@ public static String MakeURLCall(String mainurl, String method, String jpayload) return response; } - public static HttpURLConnection handlePostPut(HttpURLConnection conn, String jpayload) { + public static HttpURLConnection writeJsonToConn(HttpURLConnection conn, String jpayload) { conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); conn.setRequestProperty("Accept", "application/json"); try { @@ -65,13 +65,12 @@ public static HttpURLConnection initConnection(String mainurl, String method, St conn.setRequestMethod(method); if (method.equals("POST") || method.equals("PUT")) { - conn = handlePostPut(conn, jpayload); + conn = writeJsonToConn(conn, jpayload); } return conn; } catch(Exception e) { - e.printStackTrace(); return null; } diff --git a/Client/src/main/java/utils/ShellUtils.java b/Client/src/main/java/utils/ShellUtils.java deleted file mode 100644 index 08f1336..0000000 --- a/Client/src/main/java/utils/ShellUtils.java +++ /dev/null @@ -1,63 +0,0 @@ -package utils; - -import controllers.IdController; -import controllers.MessageController; -import models.Id; -import models.Message; -import youareell.YouAreEll; - -import java.util.ArrayList; -import java.util.List; - -public class ShellUtils { - static IdController idCtrl = new IdController(); - static MessageController msgCtrl = new MessageController(); - - public static ArrayList interpretIds(List list) { - ArrayList idsList = idCtrl.getIds(); - - if (list.get(0).equals("ids") && list.size() == 3) { - String userId = JsonUtils.getId(idsList, list.get(2)); - idsList = new ArrayList(); - - if (!userId.equals("")) - idsList.add(idCtrl.putId(new Id(list.get(1), list.get(2), userId))); - else - idsList.add(idCtrl.postId(new Id(list.get(1), list.get(2)))); - } - return idsList; - } - - public static ArrayList interpretMessages(List list) { - ArrayList messages = msgCtrl.getMessages(); - - if (list.size() == 3 && list.get(1).equals("seq")){ - messages = new ArrayList<>(); - messages.add(msgCtrl.getMessageForSequence(list.get(2))); - } - else if (list.size() == 2) { - Id myId = idCtrl.getIdByGit(list.get(1)); - messages = msgCtrl.getMessagesForId(myId); - } - else if (list.size() == 3) { - Id myId = idCtrl.getIdByGit(list.get(1)); - Id friendId = idCtrl.getIdByGit(list.get(2)); - messages = msgCtrl.getMessagesFromFriend(myId, friendId); - } - - return messages; - } - - public static ArrayList interpretSendMessage(List list, String commandLine) { - ArrayList messages = new ArrayList<>(); - String message = JsonUtils.buildMessage(list); - - if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9. ]+'")) - messages.add(msgCtrl.postMessage(list.get(1), "", message)); - - else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9 ]+' to [A-Za-z0-9]+")) - messages.add(msgCtrl.postMessage(list.get(1), list.get(list.size()-1), message));//webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); - - return messages; - } -} diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 8338894..8fdde4b 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -12,7 +12,6 @@ import controllers.MessageController; import models.Id; import models.Message; -import utils.ShellUtils; import youareell.YouAreEll; import utils.JsonUtils; @@ -68,7 +67,7 @@ public static void coolPrintMessage(String in) { public static void main(String[] args) throws java.io.IOException { -// YouAreEll webber = new YouAreEll(new MessageController(), new IdController()); + YouAreEll webber = new YouAreEll(new MessageController(), new IdController()); String commandLine; BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); @@ -100,7 +99,7 @@ public static void main(String[] args) throws java.io.IOException { list.add(commands[i]); } - System.out.print(list); //***check to see if list was added correctly*** + System.out.println(list); //***check to see if list was added correctly*** history.addAll(list); try { //display history of shell with index @@ -114,25 +113,25 @@ public static void main(String[] args) throws java.io.IOException { // ids if (list.contains("ids")) { - ArrayList ids = ShellUtils.interpretIds(list); + ArrayList ids = webber.interpretIds(list); decentPrintId(ids); continue; } - if (commandLine.matches("set id [A-Za-z0-9]+")) { - System.out.println(String.format("Setting myId to %s", list.get(2))); - continue; - } +// if (commandLine.matches("set id [A-Za-z0-9]+")) { +// System.out.println(String.format("Setting myId to %s", list.get(2))); +// continue; +// } // messages if (list.contains("messages")) { - ArrayList messages = ShellUtils.interpretMessages(list); + ArrayList messages = webber.interpretMessages(list); decentPrintMsg(messages); continue; } if (list.contains("send")) { - ArrayList messages = ShellUtils.interpretSendMessage(list, commandLine); + ArrayList messages = webber.interpretSendMessage(list, commandLine); decentPrintMsg(messages); continue; } diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index 50697d2..e918175 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -12,10 +12,7 @@ import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; +import java.util.*; public class YouAreEll { @@ -35,50 +32,53 @@ public static void main(String[] args) { System.out.println(urlhandler.MakeURLCall("/messages", "GET", "")); } -// public ArrayList get_ids() { -// return idCtrl.getIds(); -//// return MakeURLCall("/ids", "GET", ""); -// } -// -// public Id post_ids(String name, String git) { -//// String[] labels = {"name", "github"}; -//// String[] values = {name, git}; -//// String json = jsonBuilder(labels, values); -// Id id = new Id(name, git); -// return idCtrl.postId(id); -//// return MakeURLCall("/ids", "POST", json); -// } -// -// public Id put_ids(String userid, String name, String git) { -//// String[] labels = {"userid", "name", "github"}; -//// String[] values = {id, name, git}; -//// String json = JsonUtils.jsonBuilder(labels, values); -//// return MakeURLCall("/ids", "PUT", json); -// return idCtrl.putId(new Id(name, git, userid)); -// } -// -// public ArrayList get_messages() { -// return msgCtrl.getMessages();//MakeURLCall("/messages", "GET", ""); -// } -// -// public String get_messages_github(String github) { -// String mainurl = String.format("/ids/%s/messages", github); -// return MakeURLCall(mainurl, "GET", ""); -// } -// public String post_message() { -// String[] labels = {}; -// String[] values = {}; -// String json = JsonUtils.jsonBuilder(labels, values); -// return TransactionController.MakeURLCall("/messages","POST", json); -// } -// public String post_message_to_git(String fromid, String toid, String message) { -// String[] labels = {"sequence", "timestamp", "fromid", "toid", "message"}; -// String[] values = {"-", null, fromid, toid, message}; -// String json = JsonUtils.jsonBuilder(labels, values); -//// System.out.println("[JSON ALERT] "+json); -// String mainurl = String.format("/ids/%s/messages", fromid); -// return TransactionController.MakeURLCall(mainurl,"POST", json); -// } + public ArrayList interpretIds(List list) { + ArrayList idsList = idCtrl.getIds(); + + if (list.get(0).equals("ids") && list.size() == 3) { + String userId = JsonUtils.getId(idsList, list.get(2)); + idsList = new ArrayList(); + + if (!userId.equals("")) + idsList.add(idCtrl.putId(new Id(list.get(1), list.get(2), userId))); + else + idsList.add(idCtrl.postId(new Id(list.get(1), list.get(2)))); + } + return idsList; + } + + public ArrayList interpretMessages(List list) { + ArrayList messages = msgCtrl.getMessages(); + + if (list.size() == 3 && list.get(1).equals("seq")){ + messages = new ArrayList<>(); + messages.add(msgCtrl.getMessageForSequence(list.get(2))); + } + else if (list.size() == 2) { + Id myId = idCtrl.getIdByGit(list.get(1)); + messages = msgCtrl.getMessagesForId(myId); + } + else if (list.size() == 3) { + Id myId = idCtrl.getIdByGit(list.get(1)); + Id friendId = idCtrl.getIdByGit(list.get(2)); + messages = msgCtrl.getMessagesFromFriend(myId, friendId); + } + + return messages; + } + + public ArrayList interpretSendMessage(List list, String commandLine) { + ArrayList messages = new ArrayList<>(); + String message = JsonUtils.buildMessage(list); + + if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9,. ]+'")) + messages.add(msgCtrl.postMessage(list.get(1), "", message)); + + else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9., ]+' to [A-Za-z0-9]+")) + messages.add(msgCtrl.postMessage(list.get(1), list.get(list.size()-1), message));//webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); + + return messages; + } public String MakeURLCall(String mainurl, String method, String jpayload) { return TransactionController.MakeURLCall(mainurl, method, jpayload); From 0ba9982818856f3c0614a58734e2f5890a003dcb Mon Sep 17 00:00:00 2001 From: wes Date: Tue, 3 Dec 2019 23:30:04 -0500 Subject: [PATCH 16/16] buildMessage now parses messages better --- .../java/controllers/MessageController.java | 9 +++-- Client/src/main/java/utils/JsonUtils.java | 7 +++- Client/src/main/java/views/IdTextView.java | 10 ++--- .../src/main/java/views/MessageTextView.java | 7 +++- Client/src/main/java/views/SimpleShell.java | 40 +------------------ Client/src/main/java/youareell/YouAreEll.java | 4 +- .../src/test/java/views/testSimpleShell.java | 9 +++++ 7 files changed, 34 insertions(+), 52 deletions(-) diff --git a/Client/src/main/java/controllers/MessageController.java b/Client/src/main/java/controllers/MessageController.java index 9914580..195fb5e 100644 --- a/Client/src/main/java/controllers/MessageController.java +++ b/Client/src/main/java/controllers/MessageController.java @@ -32,9 +32,7 @@ public Message getMessageForSequence(String seq) { } public ArrayList getMessagesFromFriend(Id myId, Id friendId) { return (ArrayList) getMessages().stream() - .filter(m -> - (m.getFromId().equals(myId.getGithubId())) && - (m.getToId().equals(friendId.getGithubId()))) + .filter(m -> friendCondition(m, myId, friendId)) .collect(Collectors.toList()); } @@ -48,5 +46,10 @@ public Message postMessage(String fromid, String toid, String message) { String resp = TransactionController.MakeURLCall(mainurl,"POST", json); return JsonUtils.stringToMessage(resp); } + + public static Boolean friendCondition(Message m, Id myId, Id friendId) { + return ((m.getFromId().equals(myId.getGithubId())) && (m.getToId().equals(friendId.getGithubId()))); //|| + //((m.getFromId().equals(friendId.getGithubId())) && (m.getToId().equals(myId.getGithubId()))); + } } \ No newline at end of file diff --git a/Client/src/main/java/utils/JsonUtils.java b/Client/src/main/java/utils/JsonUtils.java index 1535670..f20a2dd 100644 --- a/Client/src/main/java/utils/JsonUtils.java +++ b/Client/src/main/java/utils/JsonUtils.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.regex.Pattern; public class JsonUtils { public static ArrayList buildBadChars() { @@ -82,6 +83,10 @@ public static ArrayList jsonSplitter(String json) { // return json; // } + public static String buildMessage(String commandLine) { + return commandLine.split("'")[1]; + } + public static String buildMessage(List list) { StringBuilder sb = new StringBuilder(); Boolean inTheMix = false; @@ -94,7 +99,7 @@ else if (inTheMix) { sb.append(" " + item); } else if (item.charAt(item.length()-1) == '\'') { -// inTheMix = false; + inTheMix = false; sb.append(item); break; } diff --git a/Client/src/main/java/views/IdTextView.java b/Client/src/main/java/views/IdTextView.java index 216c509..a3de18e 100644 --- a/Client/src/main/java/views/IdTextView.java +++ b/Client/src/main/java/views/IdTextView.java @@ -8,12 +8,12 @@ public class IdTextView { public IdTextView(Id idToDisplay) { this.id = idToDisplay; } - @Override public String toString() { - StringBuilder out = new StringBuilder(); - out.append(String.format("User:\n" + + + @Override + public String toString() { + return String.format("User:\n" + "\tname:\t\t%s\n" + "\tgithub:\t\t%s\n" + - "\tuserid:\t\t%s\n", id.getName(), id.getGithubId(), id.getUserId())); - return out.toString(); + "\tuserid:\t\t%s\n", id.getName(), id.getGithubId(), id.getUserId()); } } \ No newline at end of file diff --git a/Client/src/main/java/views/MessageTextView.java b/Client/src/main/java/views/MessageTextView.java index bee9096..a822d57 100644 --- a/Client/src/main/java/views/MessageTextView.java +++ b/Client/src/main/java/views/MessageTextView.java @@ -7,7 +7,9 @@ public class MessageTextView { public MessageTextView(Message msgToDisplay) { this.message = msgToDisplay; } - @Override public String toString() { + + @Override + public String toString() { StringBuilder out = new StringBuilder(); out.append(String.format("Message:\n" + "\tfromid:\t\t%s\n" + @@ -15,7 +17,8 @@ public MessageTextView(Message msgToDisplay) { "\tmessage:\t%s\n" + "\ttimestamp:\t%s\n" + "\tsequence:\t%s\n", - message.getFromId(), message.getToId(), message.getMessage(), message.getTimestamp(), message.getSequence())); + message.getFromId(), message.getToId(), message.getMessage(), + message.getTimestamp(), message.getSequence())); return out.toString(); } } \ No newline at end of file diff --git a/Client/src/main/java/views/SimpleShell.java b/Client/src/main/java/views/SimpleShell.java index 8fdde4b..6517bc0 100644 --- a/Client/src/main/java/views/SimpleShell.java +++ b/Client/src/main/java/views/SimpleShell.java @@ -13,20 +13,10 @@ import models.Id; import models.Message; import youareell.YouAreEll; -import utils.JsonUtils; +//import utils.JsonUtils; // Simple Shell is a Console view for youareell.YouAreEll. public class SimpleShell { - public static void coolPrintId(String in) { -// StringBuilder sb = new StringBuilder(); - ArrayList out = JsonUtils.jsonSplitter(in); - for (String s : out) { -// System.out.print("[STRING] "+s); - Id id = new Id(s); - IdTextView idv = new IdTextView(id); - System.out.println(idv.toString()); - } - } public static void decentPrintId(ArrayList ids) { for (Id id : ids) { @@ -42,29 +32,6 @@ public static void decentPrintMsg(ArrayList msgs) { } } - public static void coolPrintMessage(String in) { - ArrayList out = JsonUtils.jsonSplitter(in); - for (String s : out) { - Message msg = new Message(s); - MessageTextView mtv = new MessageTextView(msg); - System.out.println(mtv.toString()); - } - } - -// public static void prettyPrint(String output) { -// StringBuilder sb = new StringBuilder(); -// if (output != null && !output.equals("null")) { -// ArrayList out = JsonUtils.jsonSplitter(output); -// -// for (String str : out) { -// sb.append("\n\n=-==-==Entry==-====--===--====--===--====--===--=--"); -// sb.append(JsonUtils.jsonToFormattedString(str)); -// } -// sb.append("\n"); -// } -// System.out.print(sb.toString()); -// } - public static void main(String[] args) throws java.io.IOException { YouAreEll webber = new YouAreEll(new MessageController(), new IdController()); @@ -118,11 +85,6 @@ public static void main(String[] args) throws java.io.IOException { continue; } -// if (commandLine.matches("set id [A-Za-z0-9]+")) { -// System.out.println(String.format("Setting myId to %s", list.get(2))); -// continue; -// } - // messages if (list.contains("messages")) { ArrayList messages = webber.interpretMessages(list); diff --git a/Client/src/main/java/youareell/YouAreEll.java b/Client/src/main/java/youareell/YouAreEll.java index e918175..b94abdd 100644 --- a/Client/src/main/java/youareell/YouAreEll.java +++ b/Client/src/main/java/youareell/YouAreEll.java @@ -69,13 +69,13 @@ else if (list.size() == 3) { public ArrayList interpretSendMessage(List list, String commandLine) { ArrayList messages = new ArrayList<>(); - String message = JsonUtils.buildMessage(list); + String message = JsonUtils.buildMessage(commandLine); if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9,. ]+'")) messages.add(msgCtrl.postMessage(list.get(1), "", message)); else if (commandLine.matches("send [A-Za-z0-9]+ '[A-Za-z0-9., ]+' to [A-Za-z0-9]+")) - messages.add(msgCtrl.postMessage(list.get(1), list.get(list.size()-1), message));//webber.post_message_to_git(list.get(1), list.get(list.size()-1), message); + messages.add(msgCtrl.postMessage(list.get(1), list.get(list.size()-1), message)); return messages; } diff --git a/Client/src/test/java/views/testSimpleShell.java b/Client/src/test/java/views/testSimpleShell.java index c076bda..9861adf 100644 --- a/Client/src/test/java/views/testSimpleShell.java +++ b/Client/src/test/java/views/testSimpleShell.java @@ -4,6 +4,7 @@ import utils.JsonUtils; import java.util.ArrayList; +import java.util.Arrays; public class testSimpleShell { @Test @@ -27,4 +28,12 @@ public void testJsonStringParser() { System.out.println(item); } } + + @Test + public void testBuildMessage() { + String commandLine = "send wesjones15 'Hello there bud, abcde' to kaiiscool"; + String a1 = JsonUtils.buildMessage(Arrays.asList(commandLine.split(" "))); + String a2 = JsonUtils.buildMessage(commandLine); + System.out.println(a1 + "\n\n" + a2); + } }