From c3896c0d812f38cea16ee7b4c06a20fb558998fc Mon Sep 17 00:00:00 2001 From: anondinh Date: Tue, 6 Mar 2018 12:59:06 +0100 Subject: [PATCH] java integration for scriptwriters --- java/Attribute.java | 24 ++++++++++++++++++++ java/FormDataBuilder.java | 46 +++++++++++++++++++++++++++++++++++++++ java/PostBuilder.java | 28 ++++++++++++++++++++++++ java/PostUtility.java | 46 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 java/Attribute.java create mode 100644 java/FormDataBuilder.java create mode 100644 java/PostBuilder.java create mode 100644 java/PostUtility.java diff --git a/java/Attribute.java b/java/Attribute.java new file mode 100644 index 0000000..cbc9210 --- /dev/null +++ b/java/Attribute.java @@ -0,0 +1,24 @@ +package java; + +/** + * Created by: Niklas + * Date: 06.03.2018 + * Alias: Dinh + * Time: 12:07 + */ + +public class Attribute { + + private String task; + private int amount; + + Attribute(String task, int amount) { + this.amount = amount; + this.task = task; + } + + @Override + public String toString() { + return "{\"task\":\"" + task + "\",\"amount\":" + amount + "}"; + } +} diff --git a/java/FormDataBuilder.java b/java/FormDataBuilder.java new file mode 100644 index 0000000..005f731 --- /dev/null +++ b/java/FormDataBuilder.java @@ -0,0 +1,46 @@ +package java; + +/** + * Created by: Niklas + * Date: 02.03.2018 + * Alias: Dinh + * Time: 14:10 + */ + +public class FormDataBuilder { + private StringBuilder builder = new StringBuilder(); + private DataBuilder data = new DataBuilder(this); + private String url; + + class DataBuilder { + private FormDataBuilder formDataBuilder; + + DataBuilder(FormDataBuilder formDataBuilder) { + this.formDataBuilder = formDataBuilder; + } + + DataBuilder append(String key, String value) { + builder.append(key).append("=").append(value).append("&"); + return this; + } + + FormDataBuilder get() { + return formDataBuilder; + } + } + + FormDataBuilder(String url) { + this.url = url; + builder.append("?"); + } + + DataBuilder getBuilder() { + return data; + } + + @Override + public String toString() { + String current = builder.toString(); + return url + current.substring(0, current.length() - 1); + } +} diff --git a/java/PostBuilder.java b/java/PostBuilder.java new file mode 100644 index 0000000..af26d67 --- /dev/null +++ b/java/PostBuilder.java @@ -0,0 +1,28 @@ +package java; + +/** + * Created by: Niklas + * Date: 06.03.2018 + * Alias: Dinh + * Time: 12:36 + */ + +public class PostBuilder { + + private StringBuilder builder = new StringBuilder("{\"commit\":{ \"script_id\":\"\",\"user_id\":\"\",\"runtime\":,\"stats_attributes\":[]}}"); + + PostBuilder(String script_id, String user_id, String runtime, Attribute... attributes) { + for (Attribute attribute : attributes) { + builder.insert(71, "," + attribute.toString()); + } + builder.replace(71, 72, ""); + builder.insert(50, runtime); + builder.insert(38, user_id); + builder.insert(25, script_id); + } + + @Override + public String toString() { + return builder.toString(); + } +} diff --git a/java/PostUtility.java b/java/PostUtility.java new file mode 100644 index 0000000..27e92b8 --- /dev/null +++ b/java/PostUtility.java @@ -0,0 +1,46 @@ +package java; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; + +/** + * Created by: Niklas + * Date: 06.03.2018 + * Alias: Dinh + * Time: 12:07 + */ + +public class PostUtility implements Runnable { + + + private final String ENDPOINT = "http://pure-woodland-47666.herokuapp.com/api/v1/commits"; + + private PostBuilder post; + + public PostUtility(String script_id, String user_id, String runtime, Attribute... attributes) throws NumberFormatException { + if (!runtime.matches("([0-9]*\\.[0-9]+|[0-9]+)")) { + throw new NumberFormatException(runtime + " is not a valid floating point number"); + } + post = new PostBuilder(script_id, user_id, runtime, attributes); + } + + + @Override + public void run() { + FormDataBuilder builder = new FormDataBuilder(ENDPOINT).getBuilder().append("user_email", "mail").append("user_token", "token").get(); + URLConnection connection; + try { + connection = new URL(builder.toString()).openConnection(); + connection.setDoOutput(true); + + DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); + outputStream.writeBytes(post.toString()); + outputStream.flush(); + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } +}