diff --git a/README.md b/README.md
index a9bf51e..b7760f8 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,17 @@ mvn clean verify
This command also runs all the tests and checks configured for the code.
+## Running the Executable
+
+You can execute generated jar by:
+
+```
+java -jar ./target/assignment-1.0-SNAPSHOT.jar
+```
+
+It will load input data from file at path `./input.json`. `input.json` in the repository contains sample input.
+
+
## Documentation
The documentation is [available](https://dd2480-group14.github.io/Assignment-1/) online. It is generated via Javadoc from comments in the source code and deployed automatically after pull request merges into main branch.
diff --git a/format.xml b/format.xml
index d9ed5bd..c1d169a 100644
--- a/format.xml
+++ b/format.xml
@@ -312,7 +312,7 @@
-
+
diff --git a/input.json b/input.json
new file mode 100644
index 0000000..b0fec3a
--- /dev/null
+++ b/input.json
@@ -0,0 +1,281 @@
+{
+ "POINTS": [
+ [0.0, 0.0],
+ [1.0, 1.0]
+ ],
+ "LENGTH1": 2.0,
+ "PUV": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true
+ ],
+ "LCM": [
+ [
+ "ANDD",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ],
+ [
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED",
+ "NOTUSED"
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index bd21ffa..2a92ddc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,6 +20,11 @@
4.13.2
test
+
+ org.json
+ json
+ 20220924
+
@@ -55,14 +60,31 @@
org.apache.maven.plugins
- maven-jar-plugin
- 3.3.0
+ maven-shade-plugin
+ 3.4.1
+
+
+ package
+
+ shade
+
+
+
-
-
+ false
+
+
+ org.json:json
+
+ META-INF/MANIFEST.MF
+
+
+
+
+
assignment.Main
-
-
+
+
diff --git a/src/main/java/assignment/Main.java b/src/main/java/assignment/Main.java
index d7c6f54..ffd0e31 100644
--- a/src/main/java/assignment/Main.java
+++ b/src/main/java/assignment/Main.java
@@ -1,31 +1,135 @@
package assignment;
import assignment.Input.Connect;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.io.IOException;
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.json.JSONException;
public class Main {
public static void main(String[] args) {
- double[][] points = new double[50][2];
- for (int i = 0; i != points.length; ++i) {
- points[i][0] = i;
- points[i][1] = i / 2.0;
+ JSONObject json;
+ try {
+ String content = new String(Files.readAllBytes(Paths.get("input.json")));
+ json = new JSONObject(content);
+ } catch (IOException e) {
+ System.out.println("Unable to read and parse JSON from input.json.");
+ return;
+ } catch (JSONException e) {
+ System.out.println("Unable to read and parse JSON from input.json.");
+ return;
}
- Parameters params =
- new Parameters(points.length, 5, 5, 1, 5, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5);
+ ParametersBuilder builder = new ParametersBuilder();
+ try {
+ builder.length1 = json.getDouble("LENGTH1");
+ } catch (JSONException e) {}
+ try {
+ builder.radius1 = json.getDouble("RADIUS1");
+ } catch (JSONException e) {}
+ try {
+ builder.epsilon = json.getDouble("EPSILON");
+ } catch (JSONException e) {}
+ try {
+ builder.area1 = json.getDouble("AREA1");
+ } catch (JSONException e) {}
+ try {
+ builder.q_pts = json.getInt("Q_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.quads = json.getInt("QUADS");
+ } catch (JSONException e) {}
+ try {
+ builder.dist = json.getDouble("DIST");
+ } catch (JSONException e) {}
+ try {
+ builder.n_pts = json.getInt("N_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.k_pts = json.getInt("K_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.a_pts = json.getInt("A_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.b_pts = json.getInt("B_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.c_pts = json.getInt("C_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.d_pts = json.getInt("D_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.e_pts = json.getInt("E_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.f_pts = json.getInt("F_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.g_pts = json.getInt("G_PTS");
+ } catch (JSONException e) {}
+ try {
+ builder.length2 = json.getDouble("LENGTH2");
+ } catch (JSONException e) {}
+ try {
+ builder.radius2 = json.getDouble("RADIUS2");
+ } catch (JSONException e) {}
+ try {
+ builder.area2 = json.getDouble("AREA2");
+ } catch (JSONException e) {}
+
+ double[][] points;
+ try {
+ JSONArray jsonPoints = json.getJSONArray("POINTS");
+ points = new double[jsonPoints.length()][2];
+ for (int i = 0; i != jsonPoints.length(); ++i) {
+ JSONArray point = jsonPoints.getJSONArray(i);
+ points[i][0] = point.getInt(0);
+ points[i][1] = point.getInt(1);
+ }
+ } catch (JSONException e) {
+ System.out.println("Unable to load POINTS from input.json.");
+ return;
+ }
+
+ int numpoints;
+ try {
+ numpoints = json.getInt("NUMPOINTS");
+ } catch (JSONException e) {
+ numpoints = points.length;
+ }
+
+ Parameters params = builder.build(numpoints);
Connect[][] lcm = new Connect[15][15];
- for (int i = 0; i != 15; ++i) {
- for (int j = 0; j != 15; ++j) {
- lcm[i][j] = Connect.ANDD;
+ try {
+ JSONArray jsonLcm = json.getJSONArray("LCM");
+ for (int i = 0; i != 15; ++i) {
+ JSONArray row = jsonLcm.getJSONArray(i);
+ for (int j = 0; j != 15; ++j) {
+ lcm[i][j] = row.getEnum(Connect.class, j);
+ }
}
+ } catch (JSONException e) {
+ System.out.println("Unable to load LCM from input.json.");
+ return;
}
boolean[] puv = new boolean[15];
- for (int i = 0; i != 15; ++i) {
- puv[i] = true;
+ try {
+ JSONArray jsonLcm = json.getJSONArray("PUV");
+ for (int i = 0; i != 15; ++i) {
+ puv[i] = jsonLcm.getBoolean(i);
+ }
+ } catch (JSONException e) {
+ System.out.println("Unable to load PUV from input.json.");
+ return;
}
- Input input = new Input(points.length, points, params, lcm, puv);
+ Input input = new Input(numpoints, points, params, lcm, puv);
System.out.println(Decide.decide(input));
}
}