From 572a7b228292672848be8f7bd4f608ab31f4f609 Mon Sep 17 00:00:00 2001 From: Geoffrey POUZET Date: Wed, 14 Oct 2020 21:47:09 +0200 Subject: [PATCH] First try of progression by me filter page. --- .../controller/AnimalController.java | 30 ++++++ .../controller/IndexController.java | 1 + .../dao/IProgressionDao.java | 4 +- .../dao/bdd/postgres/ProgressionDao.java | 92 +++++++++++++++++++ .../dao/bean/Progression.java | 6 +- .../services/IServiceAnimal.java | 2 + .../services/ServiceAnimal.java | 9 ++ src/main/webapp/vue/animal_care.jsp | 6 +- src/main/webapp/vue/animal_list.jsp | 11 ++- src/main/webapp/vue/animal_progression.jsp | 54 +++++++++++ src/main/webapp/vue/base/navbar.jsp | 5 +- 11 files changed, 210 insertions(+), 10 deletions(-) create mode 100644 src/main/webapp/vue/animal_progression.jsp diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/controller/AnimalController.java b/src/main/java/fr/geoffrey/medical_training_tracker/controller/AnimalController.java index 15d4b34..61c1e47 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/controller/AnimalController.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/controller/AnimalController.java @@ -22,6 +22,7 @@ public class AnimalController { public static final String MODEL_MAP_ANIMAL = "MODEL_MAP_ANIMAL"; public static final String MODEL_MAP_ANIMAL_CARE_ID = "MODEL_MAP_ANIMAL_CARE_ID"; public static final String MODEL_MAP_ANIMAL_CONSENT_BEHAVIOR_ID = "MODEL_MAP_ANIMAL_CONSENT_BEHAVIOR_ID"; + public static final String MODEL_MAP_PROGRESSION = "MODEL_MAP_PROGRESSION"; @Autowired IServiceAnimal serviceAnimal; @@ -269,4 +270,33 @@ public class AnimalController { return ret; } + + @RequestMapping(value = IndexController.URL_ANIMAL_PROGRESSION_BY_ME, method = RequestMethod.GET) + public String doGetAnimalProgressionByMe(final ModelMap pModel, HttpSession httpSession, + @PathVariable(value = "animal_id") final int animalId, + @PathVariable(value = "progression_value") final String progressionByMeValue) { + String ret; + + if (LoginController.isUserAlreadyAuth(httpSession)) { + Authentication authentication = (Authentication) httpSession.getAttribute(IndexController.SESSION_ATTRIBUTE_AUTHENTICATION); + Object oUserDetails = authentication.getPrincipal(); + if (oUserDetails instanceof UserDetails) { + UserDetails userDetails = (UserDetails) oUserDetails; + + Animal animal = serviceAnimal.getAnimalProgressionByMe(userDetails.getUsername(), animalId, progressionByMeValue); + pModel.addAttribute(MODEL_MAP_ANIMAL, animal); + + List animals = serviceAnimal.getAnimals(userDetails.getUsername()); + pModel.addAttribute(MODEL_MAP_ANIMAL_LIST, animals); + + pModel.addAttribute(MODEL_MAP_PROGRESSION, progressionByMeValue); + } + + ret = IndexController.PAGE_ANIMAL_PROGRESSION; + } else { + ret = IndexController.URL_REDIRECT + IndexController.URL_LOGIN; + } + + return ret; + } } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/controller/IndexController.java b/src/main/java/fr/geoffrey/medical_training_tracker/controller/IndexController.java index c8244d2..d3d3cd2 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/controller/IndexController.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/controller/IndexController.java @@ -44,6 +44,7 @@ public class IndexController { public static final String URL_ANIMAL_CARES_AND_BEHAVIORS_LIST = "/animal/{animal_id}/cares_and_behaviors"; public static final String URL_ANIMAL_CARE = "/animal/{animal_id}/care/{care_id}"; public static final String URL_ANIMAL_BEHAVIOR = "/animal/{animal_id}/consent_behavior/{consent_behavior_id}"; + public static final String URL_ANIMAL_PROGRESSION_BY_ME = "/animal/{animal_id}/progression_by_me/{progression_value}"; public static final String URL_ANIMAL_PROGRESSIONS_LIST = "/animal/{animal_id}/progressions"; // Add URL diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionDao.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionDao.java index 7a33e04..81a4ddf 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionDao.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionDao.java @@ -15,6 +15,8 @@ public interface IProgressionDao extends CommonDao { public void deleteAllAnimalConsentBehaviorProgression(int animalId, String owner, int consentBehaviorId); public void fillAnimalProgressionByCare(Animal animal, int careId); - public void fillAnimalProgressionByConsentBehavior(Animal animal, int consentBehaviorId); + public void fillAnimalProgressionByMe(Animal animal, String progressionByMe); + public void fillAnimalProgressionBySomeoneElse(Animal animal, String progressionBySomeoneElse); + public void fillAnimalProgressionByVeterinary(Animal animal, String progressionByVeterinary); } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionDao.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionDao.java index cf05c2e..36e20e4 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionDao.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionDao.java @@ -254,6 +254,98 @@ public class ProgressionDao extends PostgresSqlDao implements IProgressionDao { } } } + + @Override + public void fillAnimalProgressionByMe(Animal animal, String progressionByMe) { + Connection conn = null; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + conn = mDataSource.getConnection(); + statement = conn.prepareStatement("select " + + AnimalDao.TABLE_NAME+".id as animal_id, "+AnimalDao.TABLE_NAME+".name as animal_name, "+AnimalDao.TABLE_NAME+".owner as animal_owner, " + + TABLE_NAME+".id as progression_id, "+TABLE_NAME+".progression_by_me as prog_by_me, "+TABLE_NAME+".progression_by_someone_else as prog_by_someone_else, "+TABLE_NAME+".progression_by_veterinary as prog_by_vet, " + + TABLE_NAME+".care as care_id, "+TABLE_NAME+".consent_behavior as consent_behavior_id, " + + CareDao.TABLE_NAME+".name as care_name, "+CareDao.TABLE_NAME+".description as care_desc, " + + ConsentBehaviorDao.TABLE_NAME+".name as consent_behavior_name, "+ConsentBehaviorDao.TABLE_NAME+".description as consent_behavior_desc " + + "from "+TABLE_NAME+" " + + "left join "+AnimalDao.TABLE_NAME+" on "+TABLE_NAME+".animal = "+AnimalDao.TABLE_NAME+".id " + + "left join "+CareDao.TABLE_NAME+" on "+TABLE_NAME+".care = "+CareDao.TABLE_NAME+".id " + + "left join "+ConsentBehaviorDao.TABLE_NAME+" on "+TABLE_NAME+".consent_behavior = "+ConsentBehaviorDao.TABLE_NAME+".id " + + "where "+AnimalDao.TABLE_NAME+".owner = ? and "+AnimalDao.TABLE_NAME+".id = ? and "+TABLE_NAME+".progression_by_me = ?;"); + statement.setString(1, animal.getOwner()); + statement.setInt(2, animal.getId()); + statement.setString(3, progressionByMe); + System.out.println(IndexController.LOG_TAG + " SQL -> " + statement.toString()); + resultSet = statement.executeQuery(); + + if (resultSet != null) { + while (resultSet.next()) { + Progression progression = new Progression(); + progression.setId(resultSet.getInt("progression_id")); + progression.setProgressionByMe(resultSet.getString("prog_by_me")); + progression.setProgressionBySomeoneElse(resultSet.getString("prog_by_someone_else")); + progression.setProgressionByVeterinary(resultSet.getString("prog_by_vet")); + + int careId = resultSet.getInt("care_id"); + if (!animal.containsCareKey(careId)) { + Care care = new Care(); + care.setId(careId); + care.setName(resultSet.getString("care_name")); + care.setDescription(resultSet.getString("care_desc")); + animal.addCare(care); + } + progression.setCare(animal.getCareById(careId)); + + int consentBehaviorId = resultSet.getInt("consent_behavior_id"); + if (!animal.containsConsentBehaviorKey(consentBehaviorId)) { + ConsentBehavior consentBehavior = new ConsentBehavior(); + consentBehavior.setId(consentBehaviorId); + consentBehavior.setName(resultSet.getString("consent_behavior_name")); + consentBehavior.setDescription(resultSet.getString("consent_behavior_desc")); + animal.addConsentBehavior(consentBehavior); + } + progression.setConsentBehavior(animal.getConsentBehaviorById(consentBehaviorId)); + + animal.addProgression(progression); + } + resultSet.close(); + } + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " SQLException -> fillAnimalProgressionByMe() - " + ex.getMessage()); + ex.printStackTrace(); + } finally { + if (resultSet != null) { + try { + resultSet.close(); + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " Failed close ResultSet -> fillAnimalProgressionByMe()"); + } + } + if (statement != null) { + try { + statement.close(); + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " Failed close statement -> fillAnimalProgressionByMe()"); + } + } + if (conn != null) { + try { + conn.close(); + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " Failed close connection -> fillAnimalProgressionByMe()"); + } + } + } + } + + @Override + public void fillAnimalProgressionBySomeoneElse(Animal animal, String progressionBySomeoneElse) { + } + + @Override + public void fillAnimalProgressionByVeterinary(Animal animal, String progressionByVeterinary) { + } // // diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/Progression.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/Progression.java index 1e7eb56..cb13202 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/Progression.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/Progression.java @@ -6,9 +6,9 @@ package fr.geoffrey.medical_training_tracker.dao.bean; */ public class Progression { - private static final String PROGRESSION_VALUE_NOT_TRAINED = "NOT_TRAINED"; - private static final String PROGRESSION_VALUE_CURRENTLY_TRAINING = "CURRENTLY_TRAINING"; - private static final String PROGRESSION_VALUE_TRAINED = "TRAINED"; + public static final String PROGRESSION_VALUE_NOT_TRAINED = "NOT_TRAINED"; + public static final String PROGRESSION_VALUE_CURRENTLY_TRAINING = "CURRENTLY_TRAINING"; + public static final String PROGRESSION_VALUE_TRAINED = "TRAINED"; private int id; private ConsentBehavior consentBehavior; diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/services/IServiceAnimal.java b/src/main/java/fr/geoffrey/medical_training_tracker/services/IServiceAnimal.java index 0fc35a3..9b8ab52 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/services/IServiceAnimal.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/services/IServiceAnimal.java @@ -9,6 +9,7 @@ public interface IServiceAnimal { public Animal getAnimalProgression(String owner, int animalId); public Animal getAnimalCareProgression(String owner, int animalId, int careId); public Animal getAnimalConsentBehaviorProgression(String owner, int animalId, int consentBehaviorId); + public Animal getAnimalProgressionByMe(String username, int animalId, String progressionValue); public void addAnimal(String name, String owner); public void addCare(int animalId, String name, String description); @@ -19,4 +20,5 @@ public interface IServiceAnimal { public void deleteAnimalCare(int animalId, String owner, int careId); public void deleteAnimalConsentBehavior(int animalId, String owner, int consentBehaviorId); public void deleteAnimalProgression(int animalId, String owner, int progressionId); + } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/services/ServiceAnimal.java b/src/main/java/fr/geoffrey/medical_training_tracker/services/ServiceAnimal.java index 1afbb36..13e4dd9 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/services/ServiceAnimal.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/services/ServiceAnimal.java @@ -106,4 +106,13 @@ public class ServiceAnimal implements IServiceAnimal { } return animal; } + + @Override + public Animal getAnimalProgressionByMe(String username, int animalId, String progressionValue) { + Animal animal = animalDao.getAnimal(username, animalId); + if (animal != null) { + progressionDao.fillAnimalProgressionByMe(animal, progressionValue); + } + return animal; + } } diff --git a/src/main/webapp/vue/animal_care.jsp b/src/main/webapp/vue/animal_care.jsp index 5be6311..880a42d 100644 --- a/src/main/webapp/vue/animal_care.jsp +++ b/src/main/webapp/vue/animal_care.jsp @@ -51,7 +51,11 @@ success info active - ">${progression.getProgressionByMe()} + "> + + ${progression.getProgressionByMe()} + + success info diff --git a/src/main/webapp/vue/animal_list.jsp b/src/main/webapp/vue/animal_list.jsp index 32d35ae..7ff258b 100644 --- a/src/main/webapp/vue/animal_list.jsp +++ b/src/main/webapp/vue/animal_list.jsp @@ -36,13 +36,18 @@

List de vos animaux

diff --git a/src/main/webapp/vue/animal_progression.jsp b/src/main/webapp/vue/animal_progression.jsp new file mode 100644 index 0000000..da19476 --- /dev/null +++ b/src/main/webapp/vue/animal_progression.jsp @@ -0,0 +1,54 @@ +<%@page import="fr.geoffrey.medical_training_tracker.dao.bean.Animal"%> +<%@page import="java.util.List"%> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> +<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> +<%@ page isELIgnored="false" %> + +<%@ include file="base/language.jsp" %> + + + + + <%@ include file="base/header.jsp" %> + + + +
+ <%@ include file="base/navbar.jsp" %> +

Feuille de ${MODEL_MAP_ANIMAL.getName()}

+

Progression par moi ${MODEL_MAP_PROGRESSION}

+ + + + + + + + + + + + + + + +
SoinComportement de consentement
${progression.getCare().getName()}${progression.getConsentBehavior().getName()}
+ <%@ include file="base/footer.jsp" %> +
+ + diff --git a/src/main/webapp/vue/base/navbar.jsp b/src/main/webapp/vue/base/navbar.jsp index 9299154..d29c586 100644 --- a/src/main/webapp/vue/base/navbar.jsp +++ b/src/main/webapp/vue/base/navbar.jsp @@ -29,13 +29,14 @@