Commit 2df8b52238e931eff627e5eb17bd03911e38b089
1 parent
f6a02b6c
Choix du fichier pour la sauvegarde d'une configuration
Seul les fichiers uploadés par l'utilisateur connecté sont affichés. Il faudra s'occuper du bouton : "Lancer la mise à jour" On peut imaginer lors de l'appuie, la création d'un fichier de métadonnées qui sera interprété par un autre programme pour faire le déploiement. Ce fichier serait détruit une fois traité.
Showing
6 changed files
with
47 additions
and
59 deletions
Show diff stats
PFE06/src/main/java/com/PFE/ServerManager/MainController.java
@@ -18,7 +18,8 @@ import org.springframework.security.core.Authentication; | @@ -18,7 +18,8 @@ import org.springframework.security.core.Authentication; | ||
18 | import javax.servlet.annotation.MultipartConfig; | 18 | import javax.servlet.annotation.MultipartConfig; |
19 | 19 | ||
20 | @Controller | 20 | @Controller |
21 | -@MultipartConfig(fileSizeThreshold = 20971520) | 21 | +@MultipartConfig(fileSizeThreshold = 20971520) //à changer, taille max des fichiers |
22 | + | ||
22 | public class MainController { | 23 | public class MainController { |
23 | 24 | ||
24 | @Autowired | 25 | @Autowired |
@@ -57,6 +58,25 @@ public class MainController { | @@ -57,6 +58,25 @@ public class MainController { | ||
57 | modelAndView.addObject("customerName", customer.getEmail().split("@")[0]); | 58 | modelAndView.addObject("customerName", customer.getEmail().split("@")[0]); |
58 | modelAndView.addObject("customerRole", customer.getRole()); | 59 | modelAndView.addObject("customerRole", customer.getRole()); |
59 | modelAndView.addObject("customerMaj", customer.getMaj()); | 60 | modelAndView.addObject("customerMaj", customer.getMaj()); |
61 | + | ||
62 | + File file = new File("files"); | ||
63 | + File[] dirs = file.listFiles(); | ||
64 | + List<String> filesName = new ArrayList<String>(); | ||
65 | + | ||
66 | + if (dirs != null) { | ||
67 | + for (int i = 0; i < dirs.length; i++) { | ||
68 | + if (dirs[i].isDirectory() == true) { | ||
69 | + if ((dirs[i].getName().split("_")[0]).equals(customer.getEmail().split("@")[0])) { | ||
70 | + File dir = new File(dirs[i].getAbsolutePath()); | ||
71 | + File[] f = dir.listFiles(); | ||
72 | + filesName.add(f[0].getName()); | ||
73 | + } | ||
74 | + } | ||
75 | + } | ||
76 | + } | ||
77 | + | ||
78 | + modelAndView.addObject("customerFiles", filesName); | ||
79 | + | ||
60 | modelAndView.setViewName("session"); | 80 | modelAndView.setViewName("session"); |
61 | return modelAndView; | 81 | return modelAndView; |
62 | } | 82 | } |
@@ -158,10 +178,6 @@ public class MainController { | @@ -158,10 +178,6 @@ public class MainController { | ||
158 | return modelAndView; | 178 | return modelAndView; |
159 | } | 179 | } |
160 | 180 | ||
161 | - /*@GetMapping(path="/all") | ||
162 | - public @ResponseBody Iterable<Customer> getAllUsers() { | ||
163 | - return customerRepository.findAll(); | ||
164 | - }*/ | ||
165 | @GetMapping(path="/all") | 181 | @GetMapping(path="/all") |
166 | public ModelAndView getAllUsers() { | 182 | public ModelAndView getAllUsers() { |
167 | ModelAndView modelAndView = new ModelAndView(); | 183 | ModelAndView modelAndView = new ModelAndView(); |
@@ -172,11 +188,6 @@ public class MainController { | @@ -172,11 +188,6 @@ public class MainController { | ||
172 | modelAndView.addObject("customerName", customer.getEmail().split("@")[0]); | 188 | modelAndView.addObject("customerName", customer.getEmail().split("@")[0]); |
173 | modelAndView.addObject("customerRole", customer.getRole()); | 189 | modelAndView.addObject("customerRole", customer.getRole()); |
174 | 190 | ||
175 | - /*List<Customer> list = new ArrayList<Customer>(); | ||
176 | - Iterator<Customer> listIterator = customerRepository.findAll().iterator(); | ||
177 | - while (listIterator.hasNext()) { | ||
178 | - list.add(listIterator.next()); | ||
179 | - }*/ | ||
180 | List<Customer> list = customerRepository.findAll(); // attention : la méthode findAll() de JpaRepository retourne une liste alors que celle de CrudRepository retourne un itérable | 191 | List<Customer> list = customerRepository.findAll(); // attention : la méthode findAll() de JpaRepository retourne une liste alors que celle de CrudRepository retourne un itérable |
181 | modelAndView.addObject("list", list); | 192 | modelAndView.addObject("list", list); |
182 | return modelAndView; | 193 | return modelAndView; |
@@ -194,13 +205,14 @@ public class MainController { | @@ -194,13 +205,14 @@ public class MainController { | ||
194 | } | 205 | } |
195 | 206 | ||
196 | @PostMapping(path="/savemaj") | 207 | @PostMapping(path="/savemaj") |
197 | - public String saveMaj(@RequestParam String name, @RequestParam String date, @RequestParam String nodes){ | 208 | + public String saveMaj(@RequestParam String name, @RequestParam String date, @RequestParam String nodes, @RequestParam String file){ |
198 | Authentication auth = SecurityContextHolder.getContext().getAuthentication(); | 209 | Authentication auth = SecurityContextHolder.getContext().getAuthentication(); |
199 | Customer customer = customerRepository.findByEmail(auth.getName()); | 210 | Customer customer = customerRepository.findByEmail(auth.getName()); |
200 | Maj maj_c = new Maj(); | 211 | Maj maj_c = new Maj(); |
201 | maj_c.setMaj(name); | 212 | maj_c.setMaj(name); |
202 | maj_c.setDate(date); | 213 | maj_c.setDate(date); |
203 | maj_c.setNodes(nodes); | 214 | maj_c.setNodes(nodes); |
215 | + maj_c.setFile(file); | ||
204 | maj_c.setMaj_id((int)(majRepository.count() + 1)); | 216 | maj_c.setMaj_id((int)(majRepository.count() + 1)); |
205 | majRepository.save(maj_c); // ajouter la mise a jour dans la table | 217 | majRepository.save(maj_c); // ajouter la mise a jour dans la table |
206 | HashSet<Maj> majs = new HashSet<Maj>(Arrays.asList(maj_c)); | 218 | HashSet<Maj> majs = new HashSet<Maj>(Arrays.asList(maj_c)); |
PFE06/src/main/java/com/PFE/ServerManager/Maj.java
@@ -16,13 +16,8 @@ public class Maj { | @@ -16,13 +16,8 @@ public class Maj { | ||
16 | @Column(name = "date") | 16 | @Column(name = "date") |
17 | private String date; | 17 | private String date; |
18 | 18 | ||
19 | - /* | ||
20 | - @Column(name = "nodes") | ||
21 | - private String nodes; | ||
22 | - | ||
23 | @Column(name = "file") | 19 | @Column(name = "file") |
24 | private String file; | 20 | private String file; |
25 | - */ | ||
26 | 21 | ||
27 | @Column(name = "nodes") | 22 | @Column(name = "nodes") |
28 | private String nodes; | 23 | private String nodes; |
@@ -48,4 +43,9 @@ public class Maj { | @@ -48,4 +43,9 @@ public class Maj { | ||
48 | public String getNodes() { | 43 | public String getNodes() { |
49 | return nodes; | 44 | return nodes; |
50 | } | 45 | } |
46 | + | ||
47 | + public void setFile(String file) { | ||
48 | + this.file = file; | ||
49 | + } | ||
50 | + public String getFile() { return file; } | ||
51 | } | 51 | } |
PFE06/src/main/java/com/PFE/ServerManager/MajRepository.java
@@ -5,7 +5,4 @@ import org.springframework.stereotype.Repository; | @@ -5,7 +5,4 @@ import org.springframework.stereotype.Repository; | ||
5 | 5 | ||
6 | @Repository | 6 | @Repository |
7 | public interface MajRepository extends JpaRepository<Maj, Integer> { | 7 | public interface MajRepository extends JpaRepository<Maj, Integer> { |
8 | - | ||
9 | - //Customer findByEmail(String email); | ||
10 | - | ||
11 | } | 8 | } |
PFE06/src/main/resources/static/js/home.js
1 | $(document).ready(function() { | 1 | $(document).ready(function() { |
2 | 2 | ||
3 | -/********** Tableau **********/ | ||
4 | - | ||
5 | -/* | ||
6 | - var tableNodes = $('#nodes-table').DataTable( { | ||
7 | - responsive: true, | ||
8 | - select: { | ||
9 | - style: 'multi' | ||
10 | - } | ||
11 | - } ); | ||
12 | - | ||
13 | - var nodeSet = new Set(); | ||
14 | - | ||
15 | - tableNodes.on('select', function (e, dt, type, indexes) { | ||
16 | - var rowData = tableNodes.rows(indexes).data().toArray()[0]; | ||
17 | - nodeSet.add(rowData[0]); | ||
18 | - } ); | ||
19 | - | ||
20 | - tableNodes.on('deselect', function (e, dt, type, indexes) { | ||
21 | - var rowData = tableNodes.rows(indexes).data().toArray()[0]; | ||
22 | - nodeSet.delete(rowData[0]); | ||
23 | - } ); | ||
24 | - | ||
25 | - document.getElementById("save_maj").addEventListener('click', function() { | ||
26 | - var req = new XMLHttpRequest(); | ||
27 | - req.open('POST','/test',true); | ||
28 | - req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); | ||
29 | - req.onreadystatechange = function() {//Call a function when the state changes. | ||
30 | - if(req.readyState == 4 && req.status == 200) { | ||
31 | - alert(req.responseText); | ||
32 | - } | ||
33 | - } | ||
34 | - req.send("salut"); | ||
35 | - }); | ||
36 | - | ||
37 | - */ | ||
38 | - | ||
39 | /********** Drop Zone **********/ | 3 | /********** Drop Zone **********/ |
40 | 4 | ||
41 | var formData = new FormData(); | 5 | var formData = new FormData(); |
PFE06/src/main/resources/static/js/session.js
@@ -28,9 +28,9 @@ $(document).ready(function() { | @@ -28,9 +28,9 @@ $(document).ready(function() { | ||
28 | form.setAttribute('method', 'post'); | 28 | form.setAttribute('method', 'post'); |
29 | 29 | ||
30 | var modalContent = document.getElementById("modal-content"); | 30 | var modalContent = document.getElementById("modal-content"); |
31 | - | ||
32 | var majName = document.getElementById("majName").value; | 31 | var majName = document.getElementById("majName").value; |
33 | var majDate = document.getElementById("majDate").value; | 32 | var majDate = document.getElementById("majDate").value; |
33 | + var majFile = document.getElementById("file_choice").value; | ||
34 | 34 | ||
35 | if(nodeSet.size == 0) { | 35 | if(nodeSet.size == 0) { |
36 | $("#warningFilesNumber").modal(); | 36 | $("#warningFilesNumber").modal(); |
@@ -46,9 +46,13 @@ $(document).ready(function() { | @@ -46,9 +46,13 @@ $(document).ready(function() { | ||
46 | $("#warningFilesNumber").modal(); | 46 | $("#warningFilesNumber").modal(); |
47 | } | 47 | } |
48 | 48 | ||
49 | + else if(majFile == "" || majFile == "--") { | ||
50 | + modalContent.innerHTML = "Veuillez choisir un fichier pour la mise à jour" | ||
51 | + $("#warningFilesNumber").modal(); | ||
52 | + } | ||
53 | + | ||
49 | else { | 54 | else { |
50 | var nodes = Array.from(nodeSet); | 55 | var nodes = Array.from(nodeSet); |
51 | - console.log(nodes); | ||
52 | 56 | ||
53 | var inputvar1 = document.createElement('input'); | 57 | var inputvar1 = document.createElement('input'); |
54 | inputvar1.setAttribute('type', 'hidden'); | 58 | inputvar1.setAttribute('type', 'hidden'); |
@@ -68,6 +72,12 @@ $(document).ready(function() { | @@ -68,6 +72,12 @@ $(document).ready(function() { | ||
68 | inputvar3.setAttribute('value', nodes.join(";")); | 72 | inputvar3.setAttribute('value', nodes.join(";")); |
69 | form.appendChild(inputvar3); | 73 | form.appendChild(inputvar3); |
70 | 74 | ||
75 | + var inputvar4 = document.createElement('input'); | ||
76 | + inputvar4.setAttribute('type', 'hidden'); | ||
77 | + inputvar4.setAttribute('name', 'file'); | ||
78 | + inputvar4.setAttribute('value', majFile); | ||
79 | + form.appendChild(inputvar4); | ||
80 | + | ||
71 | document.body.appendChild(form); | 81 | document.body.appendChild(form); |
72 | form.submit(); | 82 | form.submit(); |
73 | } | 83 | } |
PFE06/src/main/resources/templates/session.html
@@ -95,12 +95,17 @@ | @@ -95,12 +95,17 @@ | ||
95 | </tbody> | 95 | </tbody> |
96 | </table> | 96 | </table> |
97 | <div class="form-group"> | 97 | <div class="form-group"> |
98 | - <input type="text" class="form-control" id="majName" placeholder="Nom de la maj" name="maj"> | 98 | + <input type="text" class="form-control" id="majName" placeholder="Nom de la maj" name="maj" style="margin-top:20px;"> |
99 | </div> | 99 | </div> |
100 | <div class="form-group"> | 100 | <div class="form-group"> |
101 | <input type="date" class="form-control" id="majDate" placeholder="Date de la mise à jour" name="date"> | 101 | <input type="date" class="form-control" id="majDate" placeholder="Date de la mise à jour" name="date"> |
102 | </div> | 102 | </div> |
103 | - <!-- Ajouter une liste qui montre les differents fichiers disponibles --> | 103 | + |
104 | + <select multiple class="form-control" style="margin-bottom:20px;" id="file_choice"> | ||
105 | + <option value="">--</option> | ||
106 | + <option th:each="file : ${customerFiles}" th:value="${file}" th:utext="${file}"/> | ||
107 | + </select> | ||
108 | + | ||
104 | <button id="save_maj" type="submit" class="btn btn-primary">Sauvegarder la mise à jour</button> | 109 | <button id="save_maj" type="submit" class="btn btn-primary">Sauvegarder la mise à jour</button> |
105 | <button id="run_maj" type="submit" class="btn btn-primary">Lancer la mise à jour</button> | 110 | <button id="run_maj" type="submit" class="btn btn-primary">Lancer la mise à jour</button> |
106 | 111 |