Commit 8134d85a1607447d800997f3f85268042d945558

Authored by sfeutrie
1 parent 5c2fe69f

Affichage des des valeurs des capteurs

PFE06/src/main/java/com/PFE/ServerManager/MainController.java
1 1 package com.PFE.ServerManager;
2 2  
3   -import org.omg.CORBA.SystemException;
4 3 import org.springframework.beans.factory.annotation.Autowired;
5 4 import org.springframework.http.HttpEntity;
6 5 import org.springframework.http.HttpStatus;
... ... @@ -25,6 +24,7 @@ import org.springframework.security.core.Authentication;
25 24 import org.yaml.snakeyaml.Yaml;
26 25 import org.yaml.snakeyaml.constructor.Constructor;
27 26  
  27 +import javax.persistence.EntityNotFoundException;
28 28 import javax.servlet.annotation.MultipartConfig;
29 29 import com.fasterxml.jackson.databind.ObjectMapper;
30 30  
... ... @@ -451,4 +451,70 @@ public class MainController {
451 451 return new ResponseEntity<String>(HttpStatus.OK);
452 452 }
453 453  
  454 + @GetMapping(path="/result")
  455 + public ModelAndView displayResults() {
  456 + ModelAndView modelAndView = new ModelAndView();
  457 + modelAndView.setViewName("result");
  458 + Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  459 + Customer customer = customerRepository.findByEmail(auth.getName());
  460 + modelAndView.addObject("customerName", customer.getEmail().split("@")[0]);
  461 + modelAndView.addObject("customerRole", customer.getRole());
  462 +
  463 + List<List<String>> files = new ArrayList<>();
  464 + File dir = new File("results");
  465 + if(dir.isDirectory()){
  466 + List<String> experiments = Arrays.asList(dir.list());
  467 + for(String experiment : experiments) {
  468 + //System.out.println(experiment);
  469 + File experimentDir = new File("results/" + experiment+"/");
  470 + if(experimentDir.isDirectory()) {
  471 + List<String> raspberrys = Arrays.asList(experimentDir.list());
  472 + for (String raspberry : raspberrys) {
  473 + //System.out.println(raspberry);
  474 + File raspberryDir = new File("results/" + experiment + "/" + raspberry + "/");
  475 + if(raspberryDir.isDirectory()) {
  476 + List<String> results = Arrays.asList(raspberryDir.list());
  477 + //System.out.println(results);
  478 + for (String result : results) {
  479 + //System.out.println(result);
  480 + String line = null;
  481 + FileReader fileReader = null;
  482 + try {
  483 + fileReader = new FileReader("results/" + experiment + "/" + raspberry + "/" + result);
  484 + } catch (FileNotFoundException e) {
  485 + e.printStackTrace();
  486 + }
  487 + BufferedReader bufferedReader = new BufferedReader(fileReader);
  488 + try {
  489 + List<String> listString = new ArrayList<>();
  490 + //System.out.println((result.split("_")[2]).split("\\.")[0]);
  491 + try {
  492 + listString.add((updateRepository.getOne(Integer.parseInt(experiment.split("_")[1]))).getUpdate());
  493 + listString.add(result.split("_")[2].split("\\.")[0]);
  494 + String s = "";
  495 + while ((line = bufferedReader.readLine()) != null) {
  496 + //System.out.println(line);
  497 + s+=line+"\n";
  498 + }
  499 + listString.add(s);
  500 + files.add(listString);
  501 + }
  502 + catch(EntityNotFoundException e){
  503 + e.printStackTrace();
  504 + }
  505 + } catch (IOException ex) {
  506 + ex.printStackTrace();
  507 + }
  508 +
  509 + }
  510 + }
  511 + }
  512 + }
  513 + }
  514 + }
  515 + modelAndView.addObject("files", files);
  516 +
  517 + return modelAndView;
  518 + }
  519 +
454 520 }
455 521 \ No newline at end of file
... ...
PFE06/src/main/resources/static/js/update.js
... ... @@ -141,6 +141,14 @@ $(document).ready(function() {
141 141 var majTime = document.getElementById("majTime").value;
142 142 var majFile = document.getElementById("file_choice").value;
143 143  
  144 + var majNameExisting = document.getElementById("maj_name").options;
  145 + var error = 0;
  146 + for(var i=0;i<majNameExisting.length;i++)
  147 + {
  148 + if(majName === majNameExisting[i].value){
  149 + error=1;
  150 + }
  151 + }
144 152 if(nodeSet.size == 0) {
145 153 $("#warningFilesNumber").modal();
146 154 }
... ... @@ -164,6 +172,10 @@ $(document).ready(function() {
164 172 modalContent.innerHTML = "Veuillez choisir un fichier pour la mise à jour"
165 173 $("#warningFilesNumber").modal();
166 174 }
  175 + else if(error === 1) {
  176 + modalContent.innerHTML = "Deux mises à jour ne peuvent pas avoir le même nom";
  177 + $("#warningFilesNumber").modal();
  178 + }
167 179  
168 180 else {
169 181 var nodes = Array.from(nodeSet);
... ...
PFE06/src/main/resources/templates/all.html
... ... @@ -21,13 +21,15 @@
21 21 <div th:remove="tag" th:switch="${customerRole}">
22 22 <div th:remove="tag" th:case="'ADMIN'">
23 23 <a class="nav-item nav-link" th:href="@{/registration}">Enregistrer des utilisateurs</a>
24   - <a class="nav-item nav-link active" th:href="@{/all}">Liste des utilisateurs</a>
25   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
26   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  24 + <a class="nav-item nav-link active" th:href="@{/all}">Base utilisateur</a>
  25 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  26 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  27 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
27 28 </div>
28 29 <div th:remove="tag" th:case="'USER'">
29   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
30   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  30 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  31 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  32 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
31 33 </div>
32 34 </div>
33 35 </div>
... ...
PFE06/src/main/resources/templates/history.html
... ... @@ -21,13 +21,15 @@
21 21 <div th:remove="tag" th:switch="${customerRole}">
22 22 <div th:remove="tag" th:case="'ADMIN'">
23 23 <a class="nav-item nav-link" th:href="@{/registration}">Enregistrer des utilisateurs</a>
24   - <a class="nav-item nav-link" th:href="@{/all}">Liste des utilisateurs</a>
25   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
26   - <a class="nav-item nav-link active" th:href="@{/history}">Etat du réseau</a>
  24 + <a class="nav-item nav-link" th:href="@{/all}">Base utilisateur</a>
  25 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  26 + <a class="nav-item nav-link active" th:href="@{/history}">Réseau</a>
  27 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
27 28 </div>
28 29 <div th:remove="tag" th:case="'USER'">
29   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
30   - <a class="nav-item nav-link active" th:href="@{/history}">Etat du réseau</a>
  30 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  31 + <a class="nav-item nav-link active" th:href="@{/history}">Réseau</a>
  32 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
31 33 </div>
32 34 </div>
33 35 </div>
... ...
PFE06/src/main/resources/templates/home.html
... ... @@ -26,13 +26,15 @@
26 26 <div th:remove="tag" th:switch="${customerRole}">
27 27 <div th:remove="tag" th:case="'ADMIN'">
28 28 <a class="nav-item nav-link" th:href="@{/registration}">Enregistrer des utilisateurs</a>
29   - <a class="nav-item nav-link" th:href="@{/all}">Liste des utilisateurs</a>
30   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
31   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  29 + <a class="nav-item nav-link" th:href="@{/all}">Base utilisateur</a>
  30 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  31 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  32 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
32 33 </div>
33 34 <div th:remove="tag" th:case="'USER'">
34   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
35   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  35 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  36 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  37 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
36 38 </div>
37 39 </div>
38 40 </div>
... ...
PFE06/src/main/resources/templates/registration.html
... ... @@ -20,13 +20,15 @@
20 20 <div th:remove="tag" th:switch="${customerRole}">
21 21 <div th:remove="tag" th:case="'ADMIN'">
22 22 <a class="nav-item nav-link active" th:href="@{/registration}">Enregistrer des utilisateurs</a>
23   - <a class="nav-item nav-link" th:href="@{/all}">Liste des utilisateurs</a>
24   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
25   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  23 + <a class="nav-item nav-link" th:href="@{/all}">Base utilisateur</a>
  24 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  25 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  26 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
26 27 </div>
27 28 <div th:remove="tag" th:case="'USER'">
28   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
29   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  29 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  30 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  31 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
30 32 </div>
31 33 </div>
32 34 </div>
... ...
PFE06/src/main/resources/templates/result.html 0 → 100644
... ... @@ -0,0 +1,62 @@
  1 +<!DOCTYPE html>
  2 +<html xmlns:th="http://www.thymeleaf.org">
  3 +<head>
  4 + <meta charset="utf-8">
  5 + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  6 + <link rel="stylesheet" th:href="@{/css/all.css}">
  7 + <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
  8 + <title>Listes des utilisateurs dans la base de données</title>
  9 +</head>
  10 +<body>
  11 +<!-- NAV BAR -->
  12 +<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  13 + <div class="container">
  14 + <a th:href="@{/home}"><span class="navbar-brand"><img style="max-width:32px;" src="/pfelogo.png"></span></a>
  15 + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
  16 + <span class="navbar-toggler-icon"></span>
  17 + </button>
  18 + <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
  19 + <div class="navbar-nav mr-auto">
  20 + <a class="nav-item nav-link" th:href="@{/upload}">Uploader un fichier</a>
  21 + <div th:remove="tag" th:switch="${customerRole}">
  22 + <div th:remove="tag" th:case="'ADMIN'">
  23 + <a class="nav-item nav-link" th:href="@{/registration}">Enregistrer des utilisateurs</a>
  24 + <a class="nav-item nav-link" th:href="@{/all}">Base utilisateur</a>
  25 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  26 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  27 + <a class="nav-item nav-link active" th:href="@{/result}">Résultats</a>
  28 + </div>
  29 + <div th:remove="tag" th:case="'USER'">
  30 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  31 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  32 + <a class="nav-item nav-link active" th:href="@{/result}">Résultats</a>
  33 + </div>
  34 + </div>
  35 + </div>
  36 + </div>
  37 + <div class="collapse navbar-collapse ml-3" id="navbarNavAltMarkup2" >
  38 + <div class="navbar-nav ml-auto">
  39 + <a class="nav-item nav-link btn btn-danger active" th:href="@{/logout}">Déconnexion</a>
  40 + </div>
  41 + </div>
  42 + </div>
  43 +</nav>
  44 +
  45 +
  46 +<!-- TABLE PART -->
  47 +<div class="container">
  48 + <h1 style="margin-bottom:50px; margin-top:50px; border-bottom:1px solid #CCC; padding-bottom:20px;">Résultats des expérimentations</h1>
  49 +
  50 + <div th:each="file,status : ${files}">
  51 + <h5 th:utext="${'Mise à jour : '+file.get(0)}"></h5>
  52 + <h3 th:utext="${'Capteur : '+file.get(1)}"></h3>
  53 + <textarea class="form-control" rows="5" th:utext="${file.get(2)}"></textarea>
  54 + <br/>
  55 + <div>
  56 +</div>
  57 +
  58 +<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  59 +<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  60 +<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
  61 +</body>
  62 +</html>
... ...
PFE06/src/main/resources/templates/update.html
... ... @@ -26,13 +26,15 @@
26 26 <div th:remove="tag" th:switch="${customerRole}">
27 27 <div th:remove="tag" th:case="'ADMIN'">
28 28 <a class="nav-item nav-link" th:href="@{/registration}">Enregistrer des utilisateurs</a>
29   - <a class="nav-item nav-link" th:href="@{/all}">Liste des utilisateurs</a>
30   - <a class="nav-item nav-link active" th:href="@{/update}">Paramétrer une mise à jour</a>
31   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  29 + <a class="nav-item nav-link" th:href="@{/all}">Base utilisateur</a>
  30 + <a class="nav-item nav-link active" th:href="@{/update}">Experimentations</a>
  31 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  32 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
32 33 </div>
33 34 <div th:remove="tag" th:case="'USER'">
34   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
35   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  35 + <a class="nav-item nav-link active" th:href="@{/update}">Experimentations</a>
  36 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  37 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
36 38 </div>
37 39 </div>
38 40 </div>
... ...
PFE06/src/main/resources/templates/upload.html
... ... @@ -26,13 +26,15 @@
26 26 <div th:remove="tag" th:switch="${customerRole}">
27 27 <div th:remove="tag" th:case="'ADMIN'">
28 28 <a class="nav-item nav-link" th:href="@{/registration}">Enregistrer des utilisateurs</a>
29   - <a class="nav-item nav-link" th:href="@{/all}">Liste des utilisateurs</a>
30   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
31   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  29 + <a class="nav-item nav-link" th:href="@{/all}">Base utilisateur</a>
  30 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  31 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  32 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
32 33 </div>
33 34 <div th:remove="tag" th:case="'USER'">
34   - <a class="nav-item nav-link" th:href="@{/update}">Paramétrer une mise à jour</a>
35   - <a class="nav-item nav-link" th:href="@{/history}">Etat du réseau</a>
  35 + <a class="nav-item nav-link" th:href="@{/update}">Experimentations</a>
  36 + <a class="nav-item nav-link" th:href="@{/history}">Réseau</a>
  37 + <a class="nav-item nav-link" th:href="@{/result}">Résultats</a>
36 38 </div>
37 39 </div>
38 40 </div>
... ...