From b64485f3bdddb3aa7974dbf0a4929565e522d969 Mon Sep 17 00:00:00 2001 From: Geoffrey POUZET Date: Wed, 3 Mar 2021 14:59:32 +0100 Subject: [PATCH] Add progression note. --- .../medical_training_tracker/Servlet.java | 12 ++ .../controller/AnimalController.java | 35 +++++ .../controller/IndexController.java | 23 ++- .../dao/IProgressionDao.java | 2 + .../dao/IProgressionsNoteDao.java | 17 +++ .../dao/bdd/BddConnectionManager.java | 3 + .../dao/bdd/postgres/ProgressionDao.java | 32 ++++ .../dao/bdd/postgres/ProgressionsNoteDao.java | 137 ++++++++++++++++++ .../dao/bean/Progression.java | 14 ++ .../dao/bean/ProgressionsNote.java | 72 +++++++++ .../services/IServiceAnimal.java | 1 + .../services/ServiceAnimal.java | 107 +++++++++----- src/main/resources/messages.properties | 8 + src/main/resources/messages_en.properties | 8 + src/main/resources/messages_fr.properties | 8 + .../webapp/WEB-INF/applicationContext.xml | 4 + src/main/webapp/WEB-INF/web.xml | 4 + src/main/webapp/vue/animal_behavior.jsp | 67 +++++++++ src/main/webapp/vue/animal_care.jsp | 67 +++++++++ 19 files changed, 580 insertions(+), 41 deletions(-) create mode 100644 src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionsNoteDao.java create mode 100644 src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionsNoteDao.java create mode 100644 src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/ProgressionsNote.java diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/Servlet.java b/src/main/java/fr/geoffrey/medical_training_tracker/Servlet.java index 4b652d3..2a55503 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/Servlet.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/Servlet.java @@ -4,12 +4,14 @@ import fr.geoffrey.medical_training_tracker.dao.IAnimalDao; import fr.geoffrey.medical_training_tracker.dao.ICareDao; import fr.geoffrey.medical_training_tracker.dao.IConsentBehaviorDao; import fr.geoffrey.medical_training_tracker.dao.IProgressionDao; +import fr.geoffrey.medical_training_tracker.dao.IProgressionsNoteDao; import fr.geoffrey.medical_training_tracker.dao.IUserDao; import fr.geoffrey.medical_training_tracker.dao.bdd.BddConnectionManager; import fr.geoffrey.medical_training_tracker.dao.bdd.postgres.AnimalDao; import fr.geoffrey.medical_training_tracker.dao.bdd.postgres.CareDao; import fr.geoffrey.medical_training_tracker.dao.bdd.postgres.ConsentBehaviorDao; import fr.geoffrey.medical_training_tracker.dao.bdd.postgres.ProgressionDao; +import fr.geoffrey.medical_training_tracker.dao.bdd.postgres.ProgressionsNoteDao; import fr.geoffrey.medical_training_tracker.dao.bdd.postgres.UserBddDao; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; @@ -40,6 +42,9 @@ public class Servlet implements ServletContextListener { @Autowired IProgressionDao progressionDao; + + @Autowired + IProgressionsNoteDao progressionsNoteDao; @Override public void contextInitialized(ServletContextEvent sce) { @@ -82,6 +87,13 @@ public class Servlet implements ServletContextListener { if (!progressionDao.isStorageExist()) { progressionDao.createStorage(); } + + if (progressionsNoteDao instanceof ProgressionsNoteDao) { + ((ProgressionsNoteDao) progressionsNoteDao).setBddConnectionManager(bddConnectionManager); + } + if (!progressionsNoteDao.isStorageExist()) { + progressionsNoteDao.createStorage(); + } } @Override 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 2e0db0d..4140702 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 @@ -328,6 +328,41 @@ public class AnimalController { return ret; } + @RequestMapping(value = IndexController.URL_ANIMAL_PROGRESSIONS_NOTE_ADD, method = RequestMethod.POST) + public String doPostAddProgressionsNote(final ModelMap pModel, HttpSession httpSession, + @PathVariable(value = "animal_id") final int animalId, + @PathVariable(value = "progression_id") final int progressionId, + @RequestParam(name = "note_content", required = true) final String noteContent, + @RequestParam(name = "care_or_consent_behavior_id", required = true) int careOrConsentBehaviorId, + @RequestParam(value = "page", required = true) final String pageFrom) { + 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; + + serviceAnimal.addProgressionsNote(animalId, progressionId, noteContent); + } + + if (pageFrom.equals("care")) { + ret = IndexController.URL_REDIRECT + IndexController.URL_ANIMAL_CARE + .replaceAll("\\{care_id\\}", careOrConsentBehaviorId + ""); + } else if (pageFrom.equals("consent_behavior")) { + ret = IndexController.URL_REDIRECT + IndexController.URL_ANIMAL_BEHAVIOR + .replaceAll("\\{consent_behavior_id\\}", careOrConsentBehaviorId + ""); + } else { + ret = IndexController.URL_REDIRECT + IndexController.URL_ANIMAL_CARES_AND_BEHAVIORS_LIST; + } + ret = ret.replaceAll("\\{animal_id\\}", animalId + ""); + } else { + ret = IndexController.URL_REDIRECT + IndexController.URL_LOGIN; + } + + return ret; + } + @RequestMapping(value = IndexController.URL_ANIMAL_EDIT_PROGRESSION, method = RequestMethod.POST) public String doPostEditProgression(final ModelMap pModel, HttpSession httpSession, @PathVariable(value = "animal_id") final int animalId, 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 5f3dc16..e5a4329 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 @@ -3,6 +3,7 @@ package fr.geoffrey.medical_training_tracker.controller; import fr.geoffrey.medical_training_tracker.dao.bean.Animal; import fr.geoffrey.medical_training_tracker.services.IServiceAnimal; import java.util.List; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; @@ -54,6 +55,7 @@ public class IndexController { public static final String URL_ANIMAL_CARES_ADD = "/animal/{animal_id}/add/care"; public static final String URL_ANIMAL_CONSENT_BEHAVIOR_ADD = "/animal/{animal_id}/add/consent_behavior"; public static final String URL_ANIMAL_PROGRESSION_ADD = "/animal/{animal_id}/add/progression"; + public static final String URL_ANIMAL_PROGRESSIONS_NOTE_ADD = "/animal/{animal_id}/add/progressions_note/{progression_id}"; // Delete URL public static final String URL_ANIMAL_DELETE = "/animal/delete/{animal_id}"; public static final String URL_ANIMAL_CARES_DELETE = "/animal/{animal_id}/delete/care/{care_id}"; @@ -68,7 +70,6 @@ public class IndexController { public static final String URL_REDIRECT = "redirect:"; // - public static final String SESSION_ATTRIBUTE_LOGIN = "user"; public static final String SESSION_ATTRIBUTE_AUTHENTICATION = "authentication"; @@ -91,4 +92,24 @@ public class IndexController { } return IndexController.PAGE_INDEX; } + + @RequestMapping(value = "errors", method = RequestMethod.GET) + public String renderErrorPage(HttpServletRequest httpRequest) { + String ret = "errors/error"; + int httpErrorCode = (Integer) httpRequest.getAttribute("javax.servlet.error.status_code"); + + switch (httpErrorCode) { + case 400: + break; + + case 404: + ret = "errors/404"; + break; + + case 500: + ret = "errors/500"; + break; + } + return ret; + } } 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 0cb30b9..3e090f8 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 @@ -8,6 +8,8 @@ import fr.geoffrey.medical_training_tracker.dao.bean.Animal; */ public interface IProgressionDao extends CommonDao { + public boolean isProgressionExist(int animalId, int progressionId); + public void fillAnimalProgression(Animal animal); public void deleteProgression(int progressionId, int animalId, String owner); public void deleteAllAnimalProgression(int animalId, String owner); diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionsNoteDao.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionsNoteDao.java new file mode 100644 index 0000000..8100695 --- /dev/null +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionsNoteDao.java @@ -0,0 +1,17 @@ +package fr.geoffrey.medical_training_tracker.dao; + +import fr.geoffrey.medical_training_tracker.dao.bean.Animal; + +/** + * + * @author Geoffrey + */ +public interface IProgressionsNoteDao extends CommonDao { + public void fillProgressionNote(Animal animal); + public void addProgressionsNote(int progressionId, String noteContent); + + public void deleteAllProgressionsNoteByProgressionId(int progressionId); + public void deleteAllProgressionsNoteByConsentBehaviorId(int consentBehaviorId); + public void deleteAllProgressionsNoteByCareId(int careId); + public void deleteAllProgressionsNoteByAnimalId(int animalId); +} diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/BddConnectionManager.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/BddConnectionManager.java index c4692b1..edabd0d 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/BddConnectionManager.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/BddConnectionManager.java @@ -5,6 +5,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Timestamp; import java.util.Map; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; @@ -129,6 +130,8 @@ public abstract class BddConnectionManager extends Thread { statement.setString(index, (String) param); } else if (param instanceof Integer) { statement.setInt(index, (int) param); + } else if (param instanceof Timestamp) { + statement.setTimestamp(index, (Timestamp) param); } } } 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 59d5904..8482f5d 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 @@ -31,6 +31,38 @@ public class ProgressionDao extends PostgresSqlDao implements IProgressionDao { _createSequence(SEQUENCE_NAME); } + @Override + public boolean isProgressionExist(int animalId, int progressionId) { + boolean ret = false; + Map params = new HashMap<>(); + String sql = "SELECT * FROM "+TABLE_NAME+" WHERE id = ? AND animal = ?;"; + params.put(1, progressionId); + params.put(2, animalId); + + ResultSet resultSet = bddConnectionManager.executeQuery(sql, params); + + try { + if (resultSet != null) { + while (resultSet.next()) { + ret = true; + } + } + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " SQLException -> isProgressionExist() - " + ex.getMessage()); + ex.printStackTrace(); + } finally { + if (resultSet != null) { + try { + resultSet.close(); + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " Failed close ResultSet -> isProgressionExist()"); + } + } + } + + return ret; + } + // @Override public void fillAnimalProgression(Animal animal) { diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionsNoteDao.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionsNoteDao.java new file mode 100644 index 0000000..83667c3 --- /dev/null +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionsNoteDao.java @@ -0,0 +1,137 @@ +package fr.geoffrey.medical_training_tracker.dao.bdd.postgres; + +import fr.geoffrey.medical_training_tracker.controller.IndexController; +import fr.geoffrey.medical_training_tracker.dao.IProgressionsNoteDao; +import fr.geoffrey.medical_training_tracker.dao.bean.Animal; +import fr.geoffrey.medical_training_tracker.dao.bean.Progression; +import fr.geoffrey.medical_training_tracker.dao.bean.ProgressionsNote; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author Geoffrey + */ +public class ProgressionsNoteDao extends PostgresSqlDao implements IProgressionsNoteDao { + + public static final String TABLE_NAME = "progressions_note"; + private static final String SEQUENCE_NAME = "progressions_note_id_seq"; + + @Override + public boolean isStorageExist() { + return _isTableExist(TABLE_NAME); + } + + @Override + public void createStorage() { + _createTable("CREATE TABLE "+TABLE_NAME+" (id int8 NOT NULL, progression int8 NOT NULL, horodate_insertion timestamp NOT NULL, note text NOT NULL, CONSTRAINT progressions_note_pk PRIMARY KEY (id), CONSTRAINT progressions_note_fk FOREIGN KEY (progression) REFERENCES progression(id));"); + _createSequence(SEQUENCE_NAME); + } + + @Override + public void fillProgressionNote(Animal animal) { + for (Progression progression: animal.getProgressionList()) { + Map params = new HashMap<>(); + String sql = "select * from "+TABLE_NAME+" where progression = ?"; + params.put(1, progression.getId()); + + ResultSet resultSet = bddConnectionManager.executeQuery(sql, params); + + try { + if (resultSet != null) { + while (resultSet.next()) { + ProgressionsNote note = new ProgressionsNote(); + note.setId(resultSet.getInt("id")); + note.setContent(resultSet.getString("note")); + note.setHorodate(resultSet.getTimestamp("horodate_insertion")); + + progression.addNote(note); + } + } + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " SQLException -> fillProgressionNote() - " + ex.getMessage()); + ex.printStackTrace(); + } finally { + if (resultSet != null) { + try { + resultSet.close(); + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " Failed close ResultSet -> fillProgressionNote()"); + } + } + } + } + } + + @Override + public void addProgressionsNote(int progressionId, String noteContent) { + Map params = new HashMap<>(); + String sql = "INSERT INTO "+TABLE_NAME+" (id, progression, horodate_insertion, note) VALUES (nextval(?), ?, ?, ?);"; + + params.put(1, SEQUENCE_NAME); + params.put(2, progressionId); + params.put(3, new Timestamp(new Date().getTime())); + params.put(4, formatNoteContent(noteContent)); + + bddConnectionManager.executeUpdate(sql, params); + } + + private String formatNoteContent(String noteContent) { + String ret = noteContent; + + ret = ret.replaceAll("\r\n", "
"); + ret = ret.replaceAll("\r", "
"); + ret = ret.replaceAll("\n", "
"); + + return ret; + } + + // + @Override + public void deleteAllProgressionsNoteByProgressionId(int progressionId) { + Map params = new HashMap<>(); + String sql = "DELETE FROM "+TABLE_NAME+" WHERE progression = ?;"; + + params.put(1, progressionId); + + bddConnectionManager.executeUpdate(sql, params); + } + + @Override + public void deleteAllProgressionsNoteByConsentBehaviorId(int consentBehaviorId) { + Map params = new HashMap<>(); + String sql = "DELETE FROM "+TABLE_NAME+" WHERE progression IN (" + + "SELECT id FROM "+ProgressionDao.TABLE_NAME+" WHERE consent_behavior = ? );"; + + params.put(1, consentBehaviorId); + + bddConnectionManager.executeUpdate(sql, params); + } + + @Override + public void deleteAllProgressionsNoteByCareId(int careId) { + Map params = new HashMap<>(); + String sql = "DELETE FROM "+TABLE_NAME+" WHERE progression IN (" + + "SELECT id FROM "+ProgressionDao.TABLE_NAME+" WHERE care = ? );"; + + params.put(1, careId); + + bddConnectionManager.executeUpdate(sql, params); + } + + @Override + public void deleteAllProgressionsNoteByAnimalId(int animalId) { + Map params = new HashMap<>(); + String sql = "DELETE FROM "+TABLE_NAME+" WHERE progression IN (" + + "SELECT id FROM "+ProgressionDao.TABLE_NAME+" WHERE animal = ? );"; + + params.put(1, animalId); + + bddConnectionManager.executeUpdate(sql, params); + } + // +} 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 dfcd880..cc751d3 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 @@ -1,5 +1,10 @@ package fr.geoffrey.medical_training_tracker.dao.bean; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.TreeMap; + /** * * @author Geoffrey @@ -17,6 +22,7 @@ public class Progression { private String progressionByMe; private String progressionBySomeoneElse; private String progressionByVeterinary; + private final Map mapNotes = new TreeMap<>(Collections.reverseOrder()); public int getId() { return id; @@ -110,4 +116,12 @@ public class Progression { } } } + + public Collection getNotes() { + return mapNotes.values(); + } + + public void addNote(ProgressionsNote note) { + mapNotes.put(note.getId(), note); + } } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/ProgressionsNote.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/ProgressionsNote.java new file mode 100644 index 0000000..9fe9fbd --- /dev/null +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/ProgressionsNote.java @@ -0,0 +1,72 @@ +package fr.geoffrey.medical_training_tracker.dao.bean; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * + * @author Geoffrey + */ +public class ProgressionsNote implements Comparable { + + private static final String DATE_FORMAT = "YYYY/MM/dd HH:mm"; + + private int id; + private String content; + private Date horodate; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getHorodateString() { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); + return sdf.format(horodate); + } + + public void setHorodate(Date date) { + this.horodate = date; + } + + @Override + public int hashCode() { + int hash = 3; + hash = 83 * hash + this.id; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final ProgressionsNote other = (ProgressionsNote) obj; + if (this.id != other.id) { + return false; + } + return true; + } + + @Override + public int compareTo(ProgressionsNote o) { + return id - o.id; + } +} 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 1fa3d49..bfec49f 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 @@ -21,6 +21,7 @@ public interface IServiceAnimal { public void addCare(int animalId, String name, String description); public void addConsentBehavior(int animalId, String name, String description); public void addProgression(int animalId, int careId, int consentBehaviorId); + public void addProgressionsNote(int animalId, int progressionId, String noteContent); public void deleteAnimal(int animalId, String owner); public void deleteAnimalCare(int animalId, String owner, int careId); 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 a84145c..5f83f42 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 @@ -4,6 +4,7 @@ import fr.geoffrey.medical_training_tracker.dao.IAnimalDao; import fr.geoffrey.medical_training_tracker.dao.ICareDao; import fr.geoffrey.medical_training_tracker.dao.IConsentBehaviorDao; import fr.geoffrey.medical_training_tracker.dao.IProgressionDao; +import fr.geoffrey.medical_training_tracker.dao.IProgressionsNoteDao; import fr.geoffrey.medical_training_tracker.dao.bean.Animal; import fr.geoffrey.medical_training_tracker.dao.bean.Care; import fr.geoffrey.medical_training_tracker.dao.bean.ConsentBehavior; @@ -19,6 +20,7 @@ public class ServiceAnimal implements IServiceAnimal { private ICareDao careDao; private IConsentBehaviorDao consentBehaviorDao; private IProgressionDao progressionDao; + private IProgressionsNoteDao progressionsNoteDao; public void setAnimalDao(IAnimalDao animalDao) { this.animalDao = animalDao; @@ -32,7 +34,11 @@ public class ServiceAnimal implements IServiceAnimal { public void setProgressionDao(IProgressionDao progressionDao) { this.progressionDao = progressionDao; } + public void setProgressionsNoteDao(IProgressionsNoteDao progressionsNoteDao) { + this.progressionsNoteDao = progressionsNoteDao; + } + // @Override public List getAnimals(String owner) { return animalDao.getAnimals(owner); @@ -49,52 +55,13 @@ public class ServiceAnimal implements IServiceAnimal { return animal; } - @Override - public void addAnimal(String name, String owner) { - animalDao.addAnimal(name, owner); - } - - @Override - public void addCare(int animalId, String name, String description) { - careDao.addCare(animalId, name, description); - } - - @Override - public void addConsentBehavior(int animalId, String name, String description) { - consentBehaviorDao.addConsentBehavior(animalId, name, description); - } - - @Override - public void deleteAnimal(int animalId, String owner) { - progressionDao.deleteAllAnimalProgression(animalId, owner); - careDao.deleteAllAnimalCares(animalId, owner); - consentBehaviorDao.deleteAllAnimalConsentBehavior(animalId, owner); - animalDao.deleteAnimal(animalId, owner); - } - - @Override - public void deleteAnimalCare(int animalId, String owner, int careId) { - progressionDao.deleteAllAnimalCareProgression(animalId, owner, careId); - careDao.deleteCare(careId, animalId, owner); - } - - @Override - public void deleteAnimalConsentBehavior(int animalId, String owner, int consentBehaviorId) { - progressionDao.deleteAllAnimalConsentBehaviorProgression(animalId, owner, consentBehaviorId); - consentBehaviorDao.deleteConsentBehavior(consentBehaviorId, animalId, owner); - } - - @Override - public void deleteAnimalProgression(int animalId, String owner, int progressionId) { - progressionDao.deleteProgression(progressionId, animalId, owner); - } - @Override public Animal getAnimalCareProgression(String owner, int animalId, int careId) { Animal animal = animalDao.getAnimal(owner, animalId); if (animal != null) { animal.addCare(careDao.getAnimalCare(owner, animalId, careId)); progressionDao.fillAnimalProgressionByCare(animal, careId); + progressionsNoteDao.fillProgressionNote(animal); } return animal; } @@ -105,6 +72,7 @@ public class ServiceAnimal implements IServiceAnimal { if (animal != null) { animal.addConsentBehavior(consentBehaviorDao.getAnimalConsentBehavior(owner, animalId, consentBehaviorId)); progressionDao.fillAnimalProgressionByConsentBehavior(animal, consentBehaviorId); + progressionsNoteDao.fillProgressionNote(animal); } return animal; } @@ -145,12 +113,69 @@ public class ServiceAnimal implements IServiceAnimal { public List getAnimalCares(String username, int animalId) { return careDao.getAllAnimalCares(username, animalId); } + // + + // + @Override + public void addAnimal(String name, String owner) { + animalDao.addAnimal(name, owner); + } + + @Override + public void addCare(int animalId, String name, String description) { + careDao.addCare(animalId, name, description); + } + + @Override + public void addConsentBehavior(int animalId, String name, String description) { + consentBehaviorDao.addConsentBehavior(animalId, name, description); + } @Override public void addProgression(int animalId, int careId, int consentBehaviorId) { progressionDao.addProgression(animalId, careId, consentBehaviorId); } + @Override + public void addProgressionsNote(int animalId, int progressionId, String noteContent) { + if (progressionDao.isProgressionExist(animalId, progressionId)) { + progressionsNoteDao.addProgressionsNote(progressionId, noteContent); + } + } + // + + // + @Override + public void deleteAnimal(int animalId, String owner) { + progressionsNoteDao.deleteAllProgressionsNoteByAnimalId(animalId); + progressionDao.deleteAllAnimalProgression(animalId, owner); + careDao.deleteAllAnimalCares(animalId, owner); + consentBehaviorDao.deleteAllAnimalConsentBehavior(animalId, owner); + animalDao.deleteAnimal(animalId, owner); + } + + @Override + public void deleteAnimalCare(int animalId, String owner, int careId) { + progressionsNoteDao.deleteAllProgressionsNoteByCareId(careId); + progressionDao.deleteAllAnimalCareProgression(animalId, owner, careId); + careDao.deleteCare(careId, animalId, owner); + } + + @Override + public void deleteAnimalConsentBehavior(int animalId, String owner, int consentBehaviorId) { + progressionsNoteDao.deleteAllProgressionsNoteByConsentBehaviorId(consentBehaviorId); + progressionDao.deleteAllAnimalConsentBehaviorProgression(animalId, owner, consentBehaviorId); + consentBehaviorDao.deleteConsentBehavior(consentBehaviorId, animalId, owner); + } + + @Override + public void deleteAnimalProgression(int animalId, String owner, int progressionId) { + progressionsNoteDao.deleteAllProgressionsNoteByProgressionId(progressionId); + progressionDao.deleteProgression(progressionId, animalId, owner); + } + // + + // @Override public void changeAnimalName(int animalId, String owner, String name) { animalDao.changeName(animalId, owner, name); @@ -170,4 +195,6 @@ public class ServiceAnimal implements IServiceAnimal { public void updateProgression(int animalId, String owner, int progressionId, String progressionByMe, String progressionBySomeoneElse, String progressionByVeterinary) { progressionDao.updateProgression(animalId, owner, progressionId, progressionByMe, progressionBySomeoneElse, progressionByVeterinary); } + // + } diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index ee6cc29..9aa93df 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -14,6 +14,7 @@ animal_care.add_behavior=Add a consent behavior to this care animal_care.button.add.tooltip=Add animal_care.button.delete.tooltip=Delete animal_care.button.edit.tooltip=Edit +animal_care.button.note.tooltip=Note list animal_care.subtitle=Progression of "{0}" animal_care.table.behavior=Consent behavior animal_care.table.executed_by_me=Execute by me @@ -50,6 +51,7 @@ animal_cares_and_behaviors.delete.modal_body.behavior=Do you want to delete this animal_cares_and_behaviors.delete.modal_body.care=Do you want to delete this care? animal_consent_behavior.button.edit.tooltip=Edit +animal_consent_behavior.button.note.tooltip=Note list animal_list.animal.add.label=Animal's name: animal_list.animal.add.placeholder=Name @@ -86,6 +88,7 @@ footer.source_code = Source code modal_button.cancel=Cancel modal_button.delete=Delete modal_button.edit=Edit +modal_button.add=Add navbar.cares_and_behaviors = Care and Behaviors navbar.language = Language @@ -97,6 +100,11 @@ navbar.signup = Sign up progression.by_me=Progression by me progression.by_someone_else=Progression by someone else progression.by_veterinary=Done by veterinary +progression.modale.notes.add.label=Add new note +progression.modale.notes.add.placeholder=Content of the note +progression.modale.notes.title=Notes +progression.modale.notes.title.care_name=Care: +progression.modale.notes.title.consent_behavior_name=Consent behavior: progression.table.column.behavior=Consent behavior progression.table.column.care=Care progression.title={0} sheet diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 5f7fd0d..1a4a88e 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -14,6 +14,7 @@ animal_care.add_behavior=Add a consent behavior to this care animal_care.button.add.tooltip=Add animal_care.button.delete.tooltip=Delete animal_care.button.edit.tooltip=Edit +animal_care.button.note.tooltip=Note list animal_care.subtitle=Progression of "{0}" animal_care.table.behavior=Consent behavior animal_care.table.executed_by_me=Execute by me @@ -50,6 +51,7 @@ animal_cares_and_behaviors.delete.modal_body.behavior=Do you want to delete this animal_cares_and_behaviors.delete.modal_body.care=Do you want to delete this care? animal_consent_behavior.button.edit.tooltip=Edit +animal_consent_behavior.button.note.tooltip=Note list animal_list.animal.add.label=Animal's name: animal_list.animal.add.placeholder=Name @@ -86,6 +88,7 @@ footer.source_code=Source code modal_button.cancel=Cancel modal_button.delete=Delete modal_button.edit=Edit +modal_button.add=Add navbar.cares_and_behaviors = Care and Behaviors navbar.language = Language @@ -97,6 +100,11 @@ navbar.signup = Sign up progression.by_me=Progression by me progression.by_someone_else=Progression by someone else progression.by_veterinary=Done by veterinary +progression.modale.notes.add.label=Add new note +progression.modale.notes.add.placeholder=Content of the note +progression.modale.notes.title=Notes +progression.modale.notes.title.care_name=Care: +progression.modale.notes.title.consent_behavior_name=Consent behavior: progression.table.column.behavior=Consent behavior progression.table.column.care=Care progression.title={0} sheet diff --git a/src/main/resources/messages_fr.properties b/src/main/resources/messages_fr.properties index 6a5d96c..e611714 100644 --- a/src/main/resources/messages_fr.properties +++ b/src/main/resources/messages_fr.properties @@ -14,6 +14,7 @@ animal_care.add_behavior=Ajouter un comportement de consentement \u00e0 ce soin animal_care.button.add.tooltip=Ajouter animal_care.button.delete.tooltip=Supptimer animal_care.button.edit.tooltip=Modifier +animal_care.button.note.tooltip=Liste des notes animal_care.subtitle=Progression de "{0}" animal_care.table.behavior=Comportement de consentement animal_care.table.executed_by_me=Ex\u00e9cut\u00e9 par moi @@ -50,6 +51,7 @@ animal_cares_and_behaviors.delete.modal_body.behavior=Voulez-vous vraiment suppr animal_cares_and_behaviors.delete.modal_body.care=Voulez-vous vraiment supprimer ce soin ? animal_consent_behavior.button.edit.tooltip=Modifier +animal_consent_behavior.button.note.tooltip=Liste des notes animal_list.animal.add.label=Nom de l'animal : animal_list.animal.add.placeholder=Nom @@ -86,6 +88,7 @@ footer.source_code=Code source modal_button.cancel=Annuler modal_button.delete=Supprimer modal_button.edit=Modifier +modal_button.add=Ajouter navbar.cares_and_behaviors = Soins et Comportements navbar.language = Langue @@ -97,6 +100,11 @@ navbar.signup = Cr\u00e9er un compte progression.by_me=Progression par moi progression.by_someone_else=Progression par quelqu'un d'autre progression.by_veterinary=R\u00e9alis\u00e9 par le v\u00e9t\u00e9rinaire +progression.modale.notes.add.label=Ajouter une nouvelle note +progression.modale.notes.add.placeholder=Contenue de la note +progression.modale.notes.title=Notes +progression.modale.notes.title.care_name=Soin : +progression.modale.notes.title.consent_behavior_name=Comportement de consentement : progression.table.column.behavior=Comportement de consentement progression.table.column.care=Soin progression.title=Feuille de {0} diff --git a/src/main/webapp/WEB-INF/applicationContext.xml b/src/main/webapp/WEB-INF/applicationContext.xml index 906b5cd..f53fd38 100644 --- a/src/main/webapp/WEB-INF/applicationContext.xml +++ b/src/main/webapp/WEB-INF/applicationContext.xml @@ -40,6 +40,7 @@ + @@ -54,6 +55,9 @@ + + + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index ca9f144..b644b0c 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -15,6 +15,10 @@ fr.geoffrey.medical_training_tracker.Servlet + + + /errors + diff --git a/src/main/webapp/vue/animal_behavior.jsp b/src/main/webapp/vue/animal_behavior.jsp index 450dc70..1da9159 100644 --- a/src/main/webapp/vue/animal_behavior.jsp +++ b/src/main/webapp/vue/animal_behavior.jsp @@ -6,6 +6,7 @@ + <%@ include file="base/language.jsp" %> @@ -105,6 +106,14 @@ + +
+ + + + + +
@@ -212,6 +221,47 @@ + +