Преглед на файлове

Meilleur gestion situation

Arthur Brandao преди 5 години
родител
ревизия
d746dbd49a

+ 26 - 13
WebContent/inscription.jsp

@@ -29,7 +29,7 @@
             </div>
         </div>
         <div class="row">
-        	<s:debug />
+        	<!--s:debug /-->
             <s:form action="inscription" validate="true" class="col s12" autocomplete="off">
                 <div class="row">
                     <div class="input-field col m6 s12">
@@ -65,15 +65,15 @@
                 <div class="row">
                     <div class="input-field col m6 s12">
                         <i class="material-icons prefix">location_city</i>
-                        <s:textfield id="ville" name="ville" class="validate autocomplete"  required="required" />
+                        <s:textfield id="ville" name="ville" class="validate autocomplete-ville"  required="required" />
                         <label for="ville">Ville*</label>
                         <span class="helper-text"></span>
                         <s:fielderror fieldName="ville" class="field-error hide" />
                     </div>
                     <div class="input-field col m6 s12">
                         <i class="material-icons prefix">work</i>
-                        <s:textfield id="situation" name="situation" class="validate"  required="required" />
-                        <label for="situation">Situation*</label>
+                        <s:textfield id="situation" name="situation" class="validate autocomplete-ecole"  required="required" />
+                        <label for="situation">&Eacute;cole*</label>
                         <span class="helper-text"></span>
                         <s:fielderror fieldName="situation" class="field-error hide" />
                     </div>
@@ -130,26 +130,39 @@
     <!-- Script -->
     <tag:script />
     <script type="text/javascript">
-    	$(document).ready(() => {
-    		const loader = M.Modal.getInstance($('#loader'));
-    		
-    		// Chargement autcomplete
-    		loader.open();
+    	function loadAutocomplete(source, callback = null) {
     		$.ajax({
                 type: "GET",
-                url: "${base}api/ville/list/all/autocomplete",
+                url: "${base}api/" + source + "/list/all/autocomplete",
                 error: () => {
-                	loader.close();
 					console.error("Impossible de charger l'autocomplete");
+					if (callback != null) {
+						callback();
+					}
                 },
                 success: (result) => {
-                	loader.close();
-                	$('input.autocomplete').autocomplete({
+                	$('input.autocomplete-' + source).autocomplete({
                 		data: result.data,
                 		limit: 5
                 	});
+                	if (callback != null) {
+						callback();
+					}
                 },
             });
+    	};
+    
+    	$(document).ready(() => {
+    		const loader = M.Modal.getInstance($('#loader'));
+    		
+    		// Chargement autcomplete
+    		loader.open();
+    		loadAutocomplete('ville', () => {
+    			loadAutocomplete('ecole', () => {
+    				loader.close();
+    			})
+    		});
+    		
     	});
     </script>
 </body>

+ 1 - 0
src/microfolie/entry/form/Inscription.java

@@ -101,6 +101,7 @@ public class Inscription extends ActionSupport {
 	@Override
 	public String execute() throws Exception {
 		ville = ville.substring(0, 1).toUpperCase() + ville.substring(1).toLowerCase();
+		situation = situation.substring(0, 1).toUpperCase() + situation.substring(1).toLowerCase();
 		UsagerDTO usager = new UsagerDTO(nom, prenom, genre, naissance, ville, situation, email, telephone, urgence);
 		service.add(usager);
 		return SUCCESS;

+ 48 - 0
src/microfolie/entry/rest/EcoleController.java

@@ -0,0 +1,48 @@
+package microfolie.entry.rest;
+
+import java.util.List;
+import java.util.logging.Logger;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import microfolie.service.EcoleService;
+import microfolie.service.dto.EcoleDTO;
+import microfolie.utils.JsonUtils;
+
+@Path("/ecole")
+@Produces("application/json")
+public class EcoleController {
+	
+	private static final Logger LOGGER = Logger.getLogger(BadgeController.class.getName());
+	
+	private EcoleService service = EcoleService.getInstance();
+	
+	@GET
+	@Path("/list/all")
+	public String getAll() {
+		JSONArray data = new JSONArray();
+		LOGGER.info("Begin: Ecole list all");
+		List<EcoleDTO> ecoles = service.getAll();
+		ecoles.forEach(elt -> data.put(elt.getLibelle()));
+		LOGGER.info("End: Ecole list all");
+		return JsonUtils.success(data).toString();
+	}
+	
+	@GET
+	@Path("/list/all/autocomplete")
+	public String getAllAutocomplete() {
+		JSONObject data = new JSONObject();
+		LOGGER.info("Begin: Ecole list all autocomplete");
+		List<EcoleDTO> ecoles = service.getAll();
+		data.put("Aucun", "");
+		ecoles.forEach(elt -> data.put(elt.getLibelle(), ""));
+		LOGGER.info("End: Ecole list all autocomplete");
+		return JsonUtils.success(data).toString();
+	}
+	
+}

+ 2 - 2
src/microfolie/entry/rest/VilleController.java

@@ -35,11 +35,11 @@ private static final Logger LOGGER = Logger.getLogger(VilleController.class.getN
 	@GET
 	@Path("/list/all/autocomplete")
 	public String listAllAutocomplete() {
-		LOGGER.info("Begin: Ville list all");
+		LOGGER.info("Begin: Ville list all autocomplete");
 		List<VilleDTO> villes = service.getAll();
 		JSONObject data = new JSONObject();
 		villes.forEach(elt -> data.put(elt.getLibelle(), ""));
-		LOGGER.info("End: Ville list all");
+		LOGGER.info("End: Ville list all autocomplete");
 		return JsonUtils.success(data).toString();
 	}
 

+ 19 - 0
src/microfolie/persistance/table/EcoleTable.java

@@ -1,5 +1,8 @@
 package microfolie.persistance.table;
 
+import java.util.List;
+import java.util.Optional;
+
 import db.DatabaseTable;
 import db.annotation.DbTable;
 import microfolie.persistance.entity.Ecole;
@@ -13,6 +16,22 @@ public class EcoleTable extends DatabaseTable<Ecole> {
 		// Private constructor for singleton
 	}
 	
+	public Ecole getByLibelle(String lib) {
+		List<Ecole> list = getByField("LIBELLE", lib);
+		if(list.isEmpty()) {
+			return null;
+		}
+		return list.get(0);
+	}
+	
+	public Optional<Ecole> findByLibelle(String lib) {
+		Ecole obj = getByLibelle(lib);
+		if (obj == null) {
+			return Optional.empty();
+		}
+		return Optional.of(obj);
+	}
+	
 	public static EcoleTable getInstance() {
 		if(instance == null) {
 			instance = new EcoleTable();

+ 19 - 0
src/microfolie/persistance/table/NiveauTable.java

@@ -1,5 +1,8 @@
 package microfolie.persistance.table;
 
+import java.util.List;
+import java.util.Optional;
+
 import db.DatabaseTable;
 import db.annotation.DbTable;
 import microfolie.persistance.entity.Niveau;
@@ -13,6 +16,22 @@ public class NiveauTable extends DatabaseTable<Niveau> {
 		// Private constructor for singleton
 	}
 	
+	public Niveau getByLibelle(String lib) {
+		List<Niveau> list = getByField("LIBELLE", lib);
+		if(list.isEmpty()) {
+			return null;
+		}
+		return list.get(0);
+	}
+	
+	public Optional<Niveau> findByLibelle(String lib) {
+		Niveau obj = getByLibelle(lib);
+		if (obj == null) {
+			return Optional.empty();
+		}
+		return Optional.of(obj);
+	}
+	
 	public static NiveauTable getInstance() {
 		if(instance == null) {
 			instance = new NiveauTable();

+ 32 - 0
src/microfolie/service/EcoleService.java

@@ -0,0 +1,32 @@
+package microfolie.service;
+
+import java.util.List;
+
+import microfolie.persistance.entity.Ecole;
+import microfolie.persistance.table.EcoleTable;
+import microfolie.service.dto.EcoleDTO;
+import microfolie.service.transformer.EcoleTransformer;
+
+public class EcoleService {
+	
+	private static EcoleService instance;
+	
+	private EcoleTable table = EcoleTable.getInstance();
+	
+	private EcoleService() {
+		// Constructeur privé pour singleton
+	}
+	
+	public List<EcoleDTO> getAll() {
+		List<Ecole> list = table.getAll();
+		return EcoleTransformer.entityToDto(list);
+	}
+	
+	public static EcoleService getInstance() {
+		if (instance == null) {
+			instance = new EcoleService();
+		}
+		return instance;
+	}
+
+}

+ 44 - 0
src/microfolie/service/dto/EcoleDTO.java

@@ -0,0 +1,44 @@
+package microfolie.service.dto;
+
+public class EcoleDTO {
+	
+	private String libelle;
+	private String ville;
+	private String niveau;
+	
+	public EcoleDTO() {
+		// Constructeur par defaut pour contruire un objet vide
+	}
+
+	public EcoleDTO(String libelle, String ville, String niveau) {
+		super();
+		this.libelle = libelle;
+		this.ville = ville;
+		this.niveau = niveau;
+	}
+
+	public String getLibelle() {
+		return libelle;
+	}
+
+	public void setLibelle(String libelle) {
+		this.libelle = libelle;
+	}
+
+	public String getVille() {
+		return ville;
+	}
+
+	public void setVille(String ville) {
+		this.ville = ville;
+	}
+
+	public String getNiveau() {
+		return niveau;
+	}
+
+	public void setNiveau(String niveau) {
+		this.niveau = niveau;
+	}
+
+}

+ 57 - 0
src/microfolie/service/transformer/EcoleTransformer.java

@@ -0,0 +1,57 @@
+package microfolie.service.transformer;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import microfolie.persistance.entity.Ecole;
+import microfolie.persistance.entity.Niveau;
+import microfolie.persistance.entity.Ville;
+import microfolie.persistance.table.NiveauTable;
+import microfolie.persistance.table.VilleTable;
+import microfolie.service.dto.EcoleDTO;
+
+public class EcoleTransformer {
+	
+	private static VilleTable villeTable = VilleTable.getInstance();
+	private static NiveauTable niveauTable = NiveauTable.getInstance();
+	
+	public static Ecole dtoToEntity(EcoleDTO dto) {
+		Ecole ecole = new Ecole();
+		ecole.libelle = dto.getLibelle();
+		Optional<Ville> optVille = villeTable.findByLibelle(dto.getVille());
+		Optional<Niveau> optNiveau = niveauTable.findByLibelle(dto.getNiveau());
+		if (optVille.isPresent()) {
+			ecole.ville = optVille.get();
+		}
+		if (optNiveau.isPresent()) {
+			ecole.niveau = optNiveau.get();
+		}
+		return ecole;
+	}
+	
+	public static List<Ecole> dtoToEntity(List<EcoleDTO> dto) {
+		List<Ecole> result = new ArrayList<>();
+		dto.forEach(elt -> result.add(dtoToEntity(elt)));
+		return result;
+	}
+	
+	public static EcoleDTO entityToDto(Ecole ecole) {
+		EcoleDTO dto = new EcoleDTO();
+		dto.setLibelle(ecole.libelle);
+		if (ecole.ville != null) {
+			dto.setVille(ecole.ville.libelle);
+		}
+		if (ecole.niveau != null) {
+			dto.setNiveau(ecole.niveau.libelle);
+		}
+		return dto;
+	}
+	
+	public static List<EcoleDTO> entityToDto(List<Ecole> ecole) {
+		List<EcoleDTO> result = new ArrayList<>();
+		ecole.forEach(elt -> result.add(entityToDto(elt)));
+		return result;
+	}
+
+}

+ 19 - 0
src/microfolie/service/transformer/UsagerTransformer.java

@@ -4,14 +4,17 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
+import microfolie.persistance.entity.Ecole;
 import microfolie.persistance.entity.Usager;
 import microfolie.persistance.entity.Ville;
+import microfolie.persistance.table.EcoleTable;
 import microfolie.persistance.table.VilleTable;
 import microfolie.service.dto.UsagerDTO;
 
 public class UsagerTransformer {
 	
 	private static VilleTable villeTable = VilleTable.getInstance();
+	private static EcoleTable ecoleTable = EcoleTable.getInstance();
 	
 	public static Usager dtoToEntity(UsagerDTO dto) {
 		Usager usager = new Usager();
@@ -29,6 +32,16 @@ public class UsagerTransformer {
 		if (optVille.isPresent()) {
 			usager.ville = optVille.get();
 		}
+		// Situation
+		if (!"aucun".equals(dto.getSituation().toLowerCase())) {
+			usager.scolaire = true;
+			Optional<Ecole> optEcole = ecoleTable.findByLibelle(dto.getSituation());
+			if (optEcole.isPresent()) {
+				usager.ecole = optEcole.get();
+			}
+		} else {
+			usager.scolaire = false;
+		}
 		return usager;
 	}
 	
@@ -52,6 +65,12 @@ public class UsagerTransformer {
 		if (usager.ville != null) {
 			dto.setVille(usager.ville.libelle);
 		}
+		// Si il y a une ecole
+		if (usager.scolaire && usager.ecole != null) {
+			dto.setSituation(usager.ecole.libelle);
+		} else {
+			dto.setSituation("Aucun");
+		}
 		return dto;
 	}