Añadidos comentarios a todos los métodos.

This commit is contained in:
Marcos Garcia Nuñez
2019-12-17 20:39:54 +01:00
parent 3b0640304e
commit 0741c7d766
2 changed files with 160 additions and 14 deletions

View File

@@ -22,6 +22,11 @@ import jpa.PrimaryHealthCareCenterJPA;
import jpa.QuestionJPA; import jpa.QuestionJPA;
import jpa.SpecialistDoctorJPA; import jpa.SpecialistDoctorJPA;
/***
*
* @author Marcos García Núñez (mgarcianun@uoc.edu)
*
*/
@Stateless @Stateless
public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal { public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
// Persistence Unit Context // Persistence Unit Context
@@ -29,7 +34,9 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
private EntityManager entman; private EntityManager entman;
/** /**
* Metodo que devuelve todas las especialidades medicas * Metodo que devuelve todas las especialidades medicas registradas en el sistema
*
* @return Devuelve una Lista de MedicalSpecialtyTO (Transfer Objects).
*/ */
public List<MedicalSpecialtyTO> listAllMedicalSpecialities() { public List<MedicalSpecialtyTO> listAllMedicalSpecialities() {
return this.listMedicalSpecialitiesPaged(0, 0); return this.listMedicalSpecialitiesPaged(0, 0);
@@ -38,14 +45,26 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
/** /**
* Metodo que devuelve las especialidades médicas de forma paginada * Metodo que devuelve las especialidades médicas de forma paginada
* *
* Acepta como parametro la página (comenzando en 0) y el número de elementos de * Acepta como parametro la página (comenzando en 0) y el número de elementos de cada página.
* cada página
* *
* si pageSize == 0, entonces se devuelven todas las especialidades registradas (Se ignora el parámetro).
*
* @return Devuelve una Lista de MedicalSpecialtyTO (Transfer Objects).
*/ */
public List<MedicalSpecialtyTO> listMedicalSpecialitiesPaged(int pageNumber, int pageSize) { public List<MedicalSpecialtyTO> listMedicalSpecialitiesPaged(int pageNumber, int pageSize) {
return listMedicalSpecialitiesFiltered(null, pageNumber, pageSize); return listMedicalSpecialitiesFiltered(null, pageNumber, pageSize);
} }
/**
* Método que devuelve una lista de espcialidades médicas que tienen una coincidencia parcial en el nombre o en la descripción con el termino de búsqueda (searchTerm)
* especificado.
*
* Además permite la paginacción de datos. Si pageSize == 0 no se realiza paginación y se devuelven todos los resultados.
*
* Si serachTerm es nulo o cadena vacía entonces no se tiene en cuenta el parámetro y devuelven todas las especialidades existentes.
*
* @return Devuelve una Lista de MedicalSpecialtyTO (Transfer Objects).
*/
public List<MedicalSpecialtyTO> listMedicalSpecialitiesFiltered(String searchTerm, int pageNumber, int pageSize) { public List<MedicalSpecialtyTO> listMedicalSpecialitiesFiltered(String searchTerm, int pageNumber, int pageSize) {
String strQuery = "SELECT ms from MedicalSpecialtyJPA ms %s order by ms.name, ms.description"; String strQuery = "SELECT ms from MedicalSpecialtyJPA ms %s order by ms.name, ms.description";
String strFilter = ""; String strFilter = "";
@@ -78,14 +97,36 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return allSpecialities; return allSpecialities;
} }
/**
* Método que devuelve todos los CAPs registrados en el sistema
*
* @return Devuelve una Lista de MedicalSpecialtyTO (Transfer Objects).
*/
public List<PrimaryHealthCareCenterTO> listAllCAPs() { public List<PrimaryHealthCareCenterTO> listAllCAPs() {
return this.listCAPsPaged(0, 0); return this.listCAPsPaged(0, 0);
} }
/**
* Método que devuelve una lista de CAPs (Centros de Atención Primarios) de forma paginada
*
* Si pageSize == 0 no se realiza paginación y se devuelven todos los resultados.
*
* @return Devuelve una Lista de MedicalSpecialtyTO (Transfer Objects).
*/
public List<PrimaryHealthCareCenterTO> listCAPsPaged(int pageNumber, int pageSize) { public List<PrimaryHealthCareCenterTO> listCAPsPaged(int pageNumber, int pageSize) {
return this.listCAPsFiltered(null, pageNumber, pageSize); return this.listCAPsFiltered(null, pageNumber, pageSize);
} }
/**
* Método que devuelve una lista de CAPs (Centros de Atención Primarios) que tienen una coincidencia parcial en el nombre o en la localización con el termino de búsqueda
* (searchTerm) especificado.
*
* Además permite la paginacción de datos. Si pageSize == 0 no se realiza paginación y se devuelven todos los resultados.
*
* Si serachTerm es nulo o cadena vacía entonces no se tiene en cuenta el parámetro y devuelven todos los CAPs existentes.
*
* @return Devuelve una Lista de PrimaryHealthCareCenterTO (Transfer Objects).
*/
public List<PrimaryHealthCareCenterTO> listCAPsFiltered(String searchTerm, int pageNumber, int pageSize) { public List<PrimaryHealthCareCenterTO> listCAPsFiltered(String searchTerm, int pageNumber, int pageSize) {
String strQuery = "SELECT phc from PrimaryHealthCareCenterJPA phc %s order by phc.name, phc.location"; String strQuery = "SELECT phc from PrimaryHealthCareCenterJPA phc %s order by phc.name, phc.location";
String strFilter = ""; String strFilter = "";
@@ -118,14 +159,35 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return allCAPs; return allCAPs;
} }
/**
* Método que devuelve una lista con todos los médicos de familia registrados en el sistema.
*
* @return Devuelve una Lista de FamilyDoctorTO (Transfer Objects).
*/
public List<FamilyDoctorTO> listAllFamilyDoctors() { public List<FamilyDoctorTO> listAllFamilyDoctors() {
return this.listFamilyDoctorsPaged(0, 0); return this.listFamilyDoctorsPaged(0, 0);
} }
/**
* Método que devuelve una lista con todos los médicos de familia registrados en el sistema de forma paginada.
*
* Si pageSize == 0 no se realiza paginación y se devuelven todos los resultados.
*
* @return Devuelve una Lista de FamilyDoctorTO (Transfer Objects).
*/
public List<FamilyDoctorTO> listFamilyDoctorsPaged(int pageNumber, int pageSize) { public List<FamilyDoctorTO> listFamilyDoctorsPaged(int pageNumber, int pageSize) {
return this.listFamilyDoctorsFiltered(null, pageNumber, pageSize); return this.listFamilyDoctorsFiltered(null, pageNumber, pageSize);
} }
/**
* Método que devuelve una lista de médicos de familia que tienen una coincidencia parcial en el nombre o en los apellidos con el termino de búsqueda (searchTerm) especificado.
*
* Además permite la paginacción de datos. Si pageSize == 0 no se realiza paginación y se devuelven todos los resultados.
*
* Si serachTerm es nulo o cadena vacía entonces no se tiene en cuenta el parámetro y devuelven todos los registros existentes.
*
* @return Devuelve una Lista de FamilyDoctorTO (Transfer Objects).
*/
public List<FamilyDoctorTO> listFamilyDoctorsFiltered(String searchTerm, int pageNumber, int pageSize) { public List<FamilyDoctorTO> listFamilyDoctorsFiltered(String searchTerm, int pageNumber, int pageSize) {
String strQuery = "SELECT fd FROM FamilyDoctorJPA fd %s order by fd.name, fd.surname"; String strQuery = "SELECT fd FROM FamilyDoctorJPA fd %s order by fd.name, fd.surname";
String strFilter = ""; String strFilter = "";
@@ -158,6 +220,11 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return allFDTOs; return allFDTOs;
} }
/**
* Método que convierte un objecto de tipo MedicalSpecialtyJPA (JPA) a su equivalente MedicalSpecialtyTO (Tranfer Object)
*
* @return MedicalSpecialtyTO (Transfer Object de una especialidad médica)
*/
public MedicalSpecialtyTO getPOJOforMedicalSpecialtyJPA(MedicalSpecialtyJPA ms) { public MedicalSpecialtyTO getPOJOforMedicalSpecialtyJPA(MedicalSpecialtyJPA ms) {
MedicalSpecialtyTO msTO = null; MedicalSpecialtyTO msTO = null;
@@ -168,6 +235,11 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return msTO; return msTO;
} }
/**
* Método que convierte un objecto de tipo PrimaryHealthCareCenterJPA (JPA) a su equivalente PrimaryHealthCareCenterTO (Tranfer Object)
*
* @return PrimaryHealthCareCenterTO (Transfer Object de un CAP)
*/
public PrimaryHealthCareCenterTO getPOJOforPrimaryHealthCareCenterJPA(PrimaryHealthCareCenterJPA phc) { public PrimaryHealthCareCenterTO getPOJOforPrimaryHealthCareCenterJPA(PrimaryHealthCareCenterJPA phc) {
PrimaryHealthCareCenterTO phcTO = null; PrimaryHealthCareCenterTO phcTO = null;
@@ -178,6 +250,14 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return phcTO; return phcTO;
} }
/**
* Método que convierte un objecto de tipo SpecialistDoctorJPA (JPA) a su equivalente SpecialistDoctorTO (Tranfer Object)
*
* El parámetro nestedProps es un valor entero que indica a que nivel de profundidad se debe navegar a través de las propiedades relacionadas para convertirlas de JPA a TO. Un
* valor 0 indica que no se convertirá ninguna propiedad que tenga un entidad JPA relacionada (tendrá valor null en el objeto TO).
*
* @return SpecialistDoctorTO (Transfer Object de un médico especialista)
*/
public SpecialistDoctorTO getPOJOforSpecialistDoctorJPA(SpecialistDoctorJPA sd, int nestedProps) { public SpecialistDoctorTO getPOJOforSpecialistDoctorJPA(SpecialistDoctorJPA sd, int nestedProps) {
SpecialistDoctorTO sdTO = null; SpecialistDoctorTO sdTO = null;
@@ -194,6 +274,14 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return sdTO; return sdTO;
} }
/**
* Método que convierte un objecto de tipo FamilyDoctorJPA (JPA) a su equivalente FamilyDoctorTO (Tranfer Object)
*
* El parámetro nestedProps es un valor entero que indica a que nivel de profundidad se debe navegar a través de las propiedades relacionadas para convertirlas de JPA a TO. Un
* valor 0 indica que no se convertirá ninguna propiedad que tenga un entidad JPA relacionada (tendrá valor null en el objeto TO).
*
* @return FamilyDoctorTO (Transfer Object de un médico especialista)
*/
public FamilyDoctorTO getPOJOforFamilyDoctorJPA(FamilyDoctorJPA fd, int nestedProps) { public FamilyDoctorTO getPOJOforFamilyDoctorJPA(FamilyDoctorJPA fd, int nestedProps) {
FamilyDoctorTO fdTO = null; FamilyDoctorTO fdTO = null;
@@ -210,6 +298,14 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return fdTO; return fdTO;
} }
/**
* Método que convierte un objecto de tipo PatientJPA (JPA) a su equivalente PatientTO (Tranfer Object)
*
* El parámetro nestedProps es un valor entero que indica a que nivel de profundidad se debe navegar a través de las propiedades relacionadas para convertirlas de JPA a TO. Un
* valor 0 indica que no se convertirá ninguna propiedad que tenga un entidad JPA relacionada (tendrá valor null en el objeto TO).
*
* @return PatientTO (Transfer Object de un médico especialista)
*/
public PatientTO getPOJOforPatientJPA(PatientJPA pat, int nestedProps) { public PatientTO getPOJOforPatientJPA(PatientJPA pat, int nestedProps) {
PatientTO paTO = null; PatientTO paTO = null;
@@ -226,11 +322,21 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return paTO; return paTO;
} }
/**
* Método que recupera un paciente a partir de su Identificador (Id) de base de datos.
*
* @return PatientTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public PatientTO findPatientById(int patientId) { public PatientTO findPatientById(int patientId) {
// Recuperamos propiedades anidadas 1 nivel! // Recuperamos propiedades anidadas 1 nivel!
return this.getPOJOforPatientJPA(entman.find(PatientJPA.class, patientId), 1); return this.getPOJOforPatientJPA(entman.find(PatientJPA.class, patientId), 1);
} }
/**
* Método que recupera un paciente a partir de su CIP (Código de Identificación de Paciente)
*
* @return PatientTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public PatientTO findPatientByCode(String code) { public PatientTO findPatientByCode(String code) {
TypedQuery<PatientJPA> query = entman.createQuery("from PatientJPA pat where pat.personalIdentificationCode=:code", PatientJPA.class); TypedQuery<PatientJPA> query = entman.createQuery("from PatientJPA pat where pat.personalIdentificationCode=:code", PatientJPA.class);
query.setMaxResults(1); query.setMaxResults(1);
@@ -243,10 +349,15 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return null; return null;
} }
public PatientTO findPatientByNif(String searchValue) { /**
* Método que recupera un paciente a partir de su NIF
*
* @return PatientTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public PatientTO findPatientByNif(String searchedNIF) {
TypedQuery<PatientJPA> query = entman.createQuery("from PatientJPA pat where pat.nif=:nif", PatientJPA.class); TypedQuery<PatientJPA> query = entman.createQuery("from PatientJPA pat where pat.nif=:nif", PatientJPA.class);
query.setMaxResults(1); query.setMaxResults(1);
query.setParameter("nif", searchValue); query.setParameter("nif", searchedNIF);
List<PatientJPA> results = query.getResultList(); List<PatientJPA> results = query.getResultList();
if (results.size() > 0) if (results.size() > 0)
@@ -255,10 +366,20 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return null; return null;
} }
/**
* Método que recupera un médico de familia a partir de su Identificador (Id) de base de datos.
*
* @return FamilyDoctorTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public FamilyDoctorTO findFamilyDoctorById(int ProfessionalNumberId) { public FamilyDoctorTO findFamilyDoctorById(int ProfessionalNumberId) {
return this.getPOJOforFamilyDoctorJPA(entman.find(FamilyDoctorJPA.class, ProfessionalNumberId), 1); return this.getPOJOforFamilyDoctorJPA(entman.find(FamilyDoctorJPA.class, ProfessionalNumberId), 1);
} }
/**
* Método que recupera un médico de familia a partir de su NP (Número de profesional)
*
* @return FamilyDoctorTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public FamilyDoctorTO findFamilyDoctorByCode(String code) { public FamilyDoctorTO findFamilyDoctorByCode(String code) {
TypedQuery<FamilyDoctorJPA> query = entman.createQuery("from FamilyDoctorJPA d where d.professionalNumber=:code", FamilyDoctorJPA.class); TypedQuery<FamilyDoctorJPA> query = entman.createQuery("from FamilyDoctorJPA d where d.professionalNumber=:code", FamilyDoctorJPA.class);
@@ -271,10 +392,15 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return null; return null;
} }
public FamilyDoctorTO findFamilyDoctorByNif(String searchValue) { /**
* Método que recupera un médico de familia a partir de su NIF
*
* @return FamilyDoctorTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public FamilyDoctorTO findFamilyDoctorByNif(String searchedNIF) {
TypedQuery<FamilyDoctorJPA> query = entman.createQuery("from FamilyDoctorJPA d where d.nif=:nif", FamilyDoctorJPA.class); TypedQuery<FamilyDoctorJPA> query = entman.createQuery("from FamilyDoctorJPA d where d.nif=:nif", FamilyDoctorJPA.class);
query.setMaxResults(1); query.setMaxResults(1);
query.setParameter("nif", searchValue); query.setParameter("nif", searchedNIF);
List<FamilyDoctorJPA> results = query.getResultList(); List<FamilyDoctorJPA> results = query.getResultList();
if (results.size() > 0) if (results.size() > 0)
@@ -283,10 +409,20 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return null; return null;
} }
/**
* Método que recupera un médico especialista a partir de su Identificador (Id) de base de datos.
*
* @return SpecialistDoctorTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public SpecialistDoctorTO findSpecialistDoctorById(int ProfessionalNumberId) { public SpecialistDoctorTO findSpecialistDoctorById(int ProfessionalNumberId) {
return this.getPOJOforSpecialistDoctorJPA(entman.find(SpecialistDoctorJPA.class, ProfessionalNumberId), 1); return this.getPOJOforSpecialistDoctorJPA(entman.find(SpecialistDoctorJPA.class, ProfessionalNumberId), 1);
} }
/**
* Método que recupera un médico especialista a partir de su NP (Número de profesional)
*
* @return SpecialistDoctorTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public SpecialistDoctorTO findSpecialistDoctorByCode(String code) { public SpecialistDoctorTO findSpecialistDoctorByCode(String code) {
TypedQuery<SpecialistDoctorJPA> query = entman.createQuery("from SpecialistDoctorJPA d where d.professionalNumber=:code", SpecialistDoctorJPA.class); TypedQuery<SpecialistDoctorJPA> query = entman.createQuery("from SpecialistDoctorJPA d where d.professionalNumber=:code", SpecialistDoctorJPA.class);
@@ -299,10 +435,15 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return null; return null;
} }
public SpecialistDoctorTO findSpecialistDoctorByNif(String searchValue) { /**
* Método que recupera un médico especialista a partir de su NIF
*
* @return SpecialistDoctorTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public SpecialistDoctorTO findSpecialistDoctorByNif(String searchedNIF) {
TypedQuery<SpecialistDoctorJPA> query = entman.createQuery("from SpecialistDoctorJPA d where d.nif=:nif", SpecialistDoctorJPA.class); TypedQuery<SpecialistDoctorJPA> query = entman.createQuery("from SpecialistDoctorJPA d where d.nif=:nif", SpecialistDoctorJPA.class);
query.setMaxResults(1); query.setMaxResults(1);
query.setParameter("nif", searchValue); query.setParameter("nif", searchedNIF);
List<SpecialistDoctorJPA> results = query.getResultList(); List<SpecialistDoctorJPA> results = query.getResultList();
if (results.size() > 0) if (results.size() > 0)
@@ -311,6 +452,14 @@ public class CommonFacadeBean implements CommonFacadeRemote, CommonFacadeLocal {
return null; return null;
} }
/**
* Método que convierte un objecto de tipo QuestionJPA (JPA) a su equivalente QuestionTO (Tranfer Object)
*
* El parámetro nestedProps es un valor entero que indica a que nivel de profundidad se debe navegar a través de las propiedades relacionadas para convertirlas de JPA a TO. Un
* valor 0 indica que no se convertirá ninguna propiedad que tenga un entidad JPA relacionada (tendrá valor null en el objeto TO).
*
* @return QuestionTO (Transfer Object del objeto recuperado) o null si no se encuentra el objeto buscado
*/
public QuestionTO getPOJOforQuestionJPA(QuestionJPA qs, int nestedProps) { public QuestionTO getPOJOforQuestionJPA(QuestionJPA qs, int nestedProps) {
QuestionTO qsTO = null; QuestionTO qsTO = null;

View File

@@ -32,6 +32,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote {
@PersistenceContext(unitName = "MyHealth") @PersistenceContext(unitName = "MyHealth")
private EntityManager entman; private EntityManager entman;
//Propiedad que permite el acceso local a los métodos del EJB de servicios comunes (para recuperar entidades, etc).
@EJB @EJB
CommonFacadeLocal commonServices; CommonFacadeLocal commonServices;
@@ -96,8 +97,6 @@ public class ProfileFacadeBean implements ProfileFacadeRemote {
* @return PatientTO Transfer Object correspondiente al paciente registrado. * @return PatientTO Transfer Object correspondiente al paciente registrado.
*/ */
public PatientTO registerPatient(int id, String nif, String name, String surname, String password, String email) { public PatientTO registerPatient(int id, String nif, String name, String surname, String password, String email) {
PatientTO paTO = null;
PatientJPA pat = new PatientJPA(this.getNextPersonalIdentificationCode(), nif, name, surname, HashUtils.hashMD5(password), email, null); PatientJPA pat = new PatientJPA(this.getNextPersonalIdentificationCode(), nif, name, surname, HashUtils.hashMD5(password), email, null);
entman.persist(pat); entman.persist(pat);
@@ -145,8 +144,6 @@ public class ProfileFacadeBean implements ProfileFacadeRemote {
* @return FamilyDoctorTO Transfer Object correspondiente al médico de familia registrado. * @return FamilyDoctorTO Transfer Object correspondiente al médico de familia registrado.
*/ */
public FamilyDoctorTO registerFamilyDoctor(int id, String nif, String name, String surname, String password, String email, PrimaryHealthCareCenterTO cap) throws Exception { public FamilyDoctorTO registerFamilyDoctor(int id, String nif, String name, String surname, String password, String email, PrimaryHealthCareCenterTO cap) throws Exception {
FamilyDoctorTO fdTO = null;
PrimaryHealthCareCenterJPA phcC = entman.find(PrimaryHealthCareCenterJPA.class, cap.getId()); PrimaryHealthCareCenterJPA phcC = entman.find(PrimaryHealthCareCenterJPA.class, cap.getId());
if (phcC == null) { if (phcC == null) {
throw new Exception("No se encuentra el centro de atención primaria con identificador: " + cap.getName()); throw new Exception("No se encuentra el centro de atención primaria con identificador: " + cap.getName());
@@ -272,7 +269,7 @@ public class ProfileFacadeBean implements ProfileFacadeRemote {
/*** /***
* Cambia el CAP (Centro de Atención Primaria) asignado a un médico de familia. * Cambia el CAP (Centro de Atención Primaria) asignado a un médico de familia.
* *
* Recibe como parametros el identificador del médico y el identificador del nuevo CAP a asginar. * Recibe como parametros el identificador del médico y el identificador del nuevo CAP a asginar.
* *
* Si el identificador del médico no corresponde a ningún médico de familia registrado se lanza una excepción. * Si el identificador del médico no corresponde a ningún médico de familia registrado se lanza una excepción.
* *