From cc51b4d33b7749c82f4289d74c0445e13b4f1e96 Mon Sep 17 00:00:00 2001
From: "navid.sassan" <navid.sassan@linuxfabrik.ch>
Date: Sun, 8 Nov 2020 20:09:30 +0100
Subject: [PATCH] solved s07 ex03

---
 .../main/java/ch/zhaw/ads/AdjListGraph.java   |  2 +-
 07/src/main/java/ch/zhaw/ads/RouteServer.java | 40 +++++++++++++++++++
 .../java/ch/zhaw/ads/RouteServerTest.java     | 38 ++++++++++++++++++
 3 files changed, 79 insertions(+), 1 deletion(-)
 create mode 100644 07/src/main/java/ch/zhaw/ads/RouteServer.java
 create mode 100644 07/src/test/java/ch/zhaw/ads/RouteServerTest.java

diff --git a/07/src/main/java/ch/zhaw/ads/AdjListGraph.java b/07/src/main/java/ch/zhaw/ads/AdjListGraph.java
index c764693..17588f3 100644
--- a/07/src/main/java/ch/zhaw/ads/AdjListGraph.java
+++ b/07/src/main/java/ch/zhaw/ads/AdjListGraph.java
@@ -51,4 +51,4 @@ public class AdjListGraph<N extends Node,E extends Edge>
     public Iterable<N> getNodes() {
         return nodes;
     }
-}
\ No newline at end of file
+}
diff --git a/07/src/main/java/ch/zhaw/ads/RouteServer.java b/07/src/main/java/ch/zhaw/ads/RouteServer.java
new file mode 100644
index 0000000..653f2c5
--- /dev/null
+++ b/07/src/main/java/ch/zhaw/ads/RouteServer.java
@@ -0,0 +1,40 @@
+package ch.zhaw.ads;
+
+import java.util.Scanner;
+
+public class RouteServer implements CommandExecutor {
+
+    @Override
+    public String execute(String command) {
+        Graph<DijkstraNode, Edge> graph = this.readInput(command);
+        StringBuffer result = new StringBuffer(100);
+        for (Node node : graph.getNodes()) {
+            result.append(node.getName() + "\n");
+        }
+        result.append("\"\n");
+        return result.toString();
+    }
+
+    private Graph<DijkstraNode, Edge> readInput(String input) {
+        int dist;
+        String line, src, dest;
+        String[] values;
+
+        Scanner scanner = new Scanner(input);
+        Graph<DijkstraNode, Edge> graph = new AdjListGraph<DijkstraNode, Edge>(DijkstraNode.class, Edge.class);
+        while (scanner.hasNextLine()) {
+            line = scanner.nextLine();
+
+            try {
+                values = line.split(" ");
+                graph.addEdge(values[0], values[1], Integer.valueOf(values[2]));
+                graph.addEdge(values[1], values[0], Integer.valueOf(values[2]));
+            } catch (Throwable e) {
+                System.err.println("Error.");
+                continue;
+            }
+        }
+        scanner.close();
+        return graph;
+    }
+}
diff --git a/07/src/test/java/ch/zhaw/ads/RouteServerTest.java b/07/src/test/java/ch/zhaw/ads/RouteServerTest.java
new file mode 100644
index 0000000..05eeacc
--- /dev/null
+++ b/07/src/test/java/ch/zhaw/ads/RouteServerTest.java
@@ -0,0 +1,38 @@
+package ch.zhaw.ads;
+
+import org.junit.Test;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import java.util.*;
+import java.io.*;
+
+public class RouteServerTest {
+
+    RouteServer routeServer;
+    String input;
+
+    @Before
+    public void setUp() throws Exception {
+        routeServer = new RouteServer();
+        input = openFile("./build/resources/main/Swiss.txt");
+    }
+
+    @Test
+    public void test1() {
+        System.out.println(routeServer.execute(input));
+    }
+
+    // helper functions
+    private String openFile(String name) throws Exception {
+		BufferedReader br = new BufferedReader(
+				new InputStreamReader(new FileInputStream(name), "ISO-8859-1"));
+		StringBuffer b = new StringBuffer();
+		String line;
+		while ((line = br.readLine()) != null) {
+			b.append(line);
+			b.append('\n');
+		}
+		return b.toString();
+    }
+}
+