m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw
diff options
context:
space:
mode:
authorMagdalena Grodzińska <mag.grodzinska@gmail.com>2019-11-20 16:19:25 +0100
committerMagdalena Grodzińska <mag.grodzinska@gmail.com>2019-11-20 16:19:25 +0100
commit906996114a16ef5d7576de7f48ea22fd1f680b97 (patch)
tree2539936d44e174f00974973262d433f35e0ec741 /src/main/java/pl/edu/mimuw
parentf7bc805b5e63269107ba87e8d2d3007737cb379e (diff)
Add contact submission backend
Diffstat (limited to 'src/main/java/pl/edu/mimuw')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java b/src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java
index bdc71df..31d1c06 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/client/ClientController.java
@@ -1,12 +1,21 @@
package pl.edu.mimuw.cloudatlas.client;
+import com.google.gson.Gson;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
import pl.edu.mimuw.cloudatlas.api.Api;
+import pl.edu.mimuw.cloudatlas.model.PathName;
+import pl.edu.mimuw.cloudatlas.model.ValueContact;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
/*
should enable reading attribute values stored by the agent
@@ -72,12 +81,43 @@ public class ClientController {
@GetMapping("/contacts")
public String contactPage(Model model) {
+ model.addAttribute("contactsObject" , new ContactsString());
return "contactsForm";
}
@PostMapping("/contacts")
- public String contactPage(@ModelAttribute String contactsObject, Model model) {
- model.addAttribute("homeMessage", "Contact list submitted successfully");
+ public String contactPage(@ModelAttribute ContactsString contactsObject, Model model) {
+ boolean success = true;
+ Gson gson = new Gson();
+ Map<String, ArrayList> contactStrings = gson.fromJson(contactsObject.getString(), Map.class);
+ Set<ValueContact> contactObjects = new HashSet<ValueContact>();
+ ArrayList<Double> cAddr;
+ byte[] inetArray = new byte[4];
+
+ try {
+ for (Map.Entry<String, ArrayList> cursor : contactStrings.entrySet()) {
+ cAddr = cursor.getValue(); // gson always reads numerical values as doubles
+ for (int i = 0; i < 4; i++) {
+ inetArray[i] = (byte) cAddr.get(i).doubleValue();
+ }
+ contactObjects.add(new ValueContact(
+ new PathName(cursor.getKey()),
+ InetAddress.getByAddress(inetArray))
+ );
+ }
+ this.api.setFallbackContacts(contactObjects);
+ } catch (Exception e) {
+ success = false;
+ System.err.println("Client exception:");
+ e.printStackTrace();
+ }
+
+ if (success) {
+ model.addAttribute("homeMessage", "Contact list submitted successfully");
+ } else {
+ model.addAttribute("homeMessage", "Contact list submission failed");
+ }
+
return "home";
}