Ahora creamos el repositorio donde vamos a explotar nuestros datos de mongodb
creamos el paquete mx.com.tutosoftware.medicalconsulting.repository y en este
paquete creamos una Interface ProfesionalRepository que extienda de PagingAndSortingRepository
package mx.com.tutosoftware.medicalconsulting.repository;
import java.util.List;
import org.springframework.data.repository.PagingAndSortingRepository;
import mx.com.tutosoftware.medicalconsulting.domain.Profesional;
public interface ProfesionalRepository extends PagingAndSortingRepository<Profesional,String> {
List<Profesional> findByMail(String mail);
public void agregarProfesional(Profesional p);
List<Profesional> mostrarProfesionales();
public void actualizarProfesional(Profesional p);
public void eliminarProfesional(Profesional p);
}
En este mismo paquete creamos la Interface PacienteRepository tambien que
extienda o herede de PagingAndSortingRepository
package mx.com.tutosoftware.medicalconsulting.repository;
import java.util.List;
import org.springframework.data.repository.PagingAndSortingRepository;
import mx.com.tutosoftware.medicalconsulting.domain.Paciente;
public interface PacienteRepository extends PagingAndSortingRepository<Paciente,String> {
List<Paciente> findByMail(String mail);
public void agregarPaciente(Paciente p);
List<Paciente> mostrarPacientes();
public void actualizarPaciente(Paciente p);
public void eliminarPaciente(Paciente p);
}
Creamos la Interface TurnoRepositorytambien que
extienda o herede de PagingAndSortingRepository
package mx.com.tutosoftware.medicalconsulting.repository;
import java.util.List;
import org.springframework.data.repository.PagingAndSortingRepository;
import mx.com.tutosoftware.medicalconsulting.domain.Turno;
public interface TurnoRepository extends PagingAndSortingRepository<Turno,String> {
public void agregarTurno(Turno t);
List<Turno> mostrarTurnos(String dni);
public List<Turno> mostrarTurnoFechaMayorHoyDni (String dni);
}
Creamos la Interface CitaRepositorytambien que
extienda o herede de PagingAndSortingRepository
package mx.com.tutosoftware.medicalconsulting.repository;
import java.util.Date;
import java.util.List;
import org.springframework.data.repository.PagingAndSortingRepository;
import mx.com.tutosoftware.medicalconsulting.domain.Cita;
public interface CitaRepository extends PagingAndSortingRepository<Cita,String> {
public void agregarCita(Cita c);
public List<Cita> busquedaCitaHorarioDni(Date horarioInicio,Date horarioFinal,String dni);
public void actualizarCita(Cita c);
public List<Cita> mostrarCitasAgendadas(String dni,String nombrePaciente);
public List<Cita> mostrarCitasAgendadas(String nombrePaciente);
public List<Cita> busquedaCitas(Date horarioInicio,Date horarioFinal,String dni);
}
Lo que sigue es crear las implementaciones agregamos el paquete mx.com.tutosoftware.medicalconsulting.repository.impl
aqui creamos la clase ProfesionalRepositoryImpl y implemente la interface ProfesionalRepository
package mx.com.tutosoftware.medicalconsulting.repository.impl;
import java.util.List;
import java.util.Optional;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import mx.com.tutosoftware.medicalconsulting.domain.Profesional;
import mx.com.tutosoftware.medicalconsulting.repository.ProfesionalRepository;
public class ProfesionalRepositoryImpl implements ProfesionalRepository {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public Iterable<Profesional> findAll(Sort sort) {
// TODO Auto-generated method stub
return null;
}
@Override
public Page<Profesional> findAll(Pageable pageable) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Profesional> S save(S entity) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Profesional> Iterable<S> saveAll(Iterable<S> entities) {
// TODO Auto-generated method stub
return null;
}
@Override
public Optional<Profesional> findById(String id) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean existsById(String id) {
// TODO Auto-generated method stub
return false;
}
@Override
public Iterable<Profesional> findAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public Iterable<Profesional> findAllById(Iterable<String> ids) {
// TODO Auto-generated method stub
return null;
}
@Override
public long count() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void deleteById(String id) {
// TODO Auto-generated method stub
}
@Override
public void delete(Profesional entity) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll(Iterable<? extends Profesional> entities) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll() {
// TODO Auto-generated method stub
}
@Override
public List<Profesional> findByMail(String mail) {
// TODO Auto-generated method stub
Query query = new Query();
Criteria c = Criteria.where("mail").is(mail);
query.addCriteria(c);
return mongoTemplate.find(query, Profesional.class);
}
@Override
public void agregarProfesional(Profesional p) {
// TODO Auto-generated method stub
mongoTemplate.save(p,"profesional");
}
@Override
public List<Profesional> mostrarProfesionales() {
// TODO Auto-generated method stub
return mongoTemplate.findAll(Profesional.class);
}
@Override
public void actualizarProfesional(Profesional p) {
// TODO Auto-generated method stub
Query query = new Query(Criteria.where("dni").is(p.getDni()));
Document doc = new Document();
mongoTemplate.getConverter().write(p,doc);
Update update = Update.fromDocument(doc);
mongoTemplate.upsert(query, update, "profesional");
}
@Override
public void eliminarProfesional(Profesional p) {
// TODO Auto-generated method stub
Query query = new Query();
query.addCriteria(Criteria.where("dni").is(p.getDni()));
mongoTemplate.remove(query,"profesional");
}
}
Creamos la clase PacienteRepositoryImpl que implamente de PacienteRepository
package mx.com.tutosoftware.medicalconsulting.repository.impl;
import java.util.List;
import java.util.Optional;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import mx.com.tutosoftware.medicalconsulting.domain.Paciente;
import mx.com.tutosoftware.medicalconsulting.repository.PacienteRepository;
public class PacienteRepositoryImpl implements PacienteRepository {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public Iterable<Paciente> findAll(Sort sort) {
// TODO Auto-generated method stub
return null;
}
@Override
public Page<Paciente> findAll(Pageable pageable) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Paciente> S save(S entity) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Paciente> Iterable<S> saveAll(Iterable<S> entities) {
// TODO Auto-generated method stub
return null;
}
@Override
public Optional<Paciente> findById(String id) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean existsById(String id) {
// TODO Auto-generated method stub
return false;
}
@Override
public Iterable<Paciente> findAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public Iterable<Paciente> findAllById(Iterable<String> ids) {
// TODO Auto-generated method stub
return null;
}
@Override
public long count() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void deleteById(String id) {
// TODO Auto-generated method stub
}
@Override
public void delete(Paciente entity) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll(Iterable<? extends Paciente> entities) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll() {
// TODO Auto-generated method stub
}
@Override
public List<Paciente> findByMail(String mail) {
// TODO Auto-generated method stub
Query query = new Query();
Criteria c = Criteria.where("mail").is(mail);
query.addCriteria(c);
return mongoTemplate.find(query, Paciente.class);
}
@Override
public void agregarPaciente(Paciente p) {
// TODO Auto-generated method stub
mongoTemplate.save(p,"paciente");
}
@Override
public List<Paciente> mostrarPacientes() {
// TODO Auto-generated method stub
return mongoTemplate.findAll(Paciente.class);
}
@Override
public void actualizarPaciente(Paciente p) {
// TODO Auto-generated method stub
Query query = new Query(Criteria.where("dni").is(p.getDni()));
Document doc = new Document();
mongoTemplate.getConverter().write(p,doc);
Update update = Update.fromDocument(doc);
mongoTemplate.upsert(query, update, "paciente");
}
@Override
public void eliminarPaciente(Paciente p) {
// TODO Auto-generated method stub
Query query = new Query();
query.addCriteria(Criteria.where("dni").is(p.getDni()));
mongoTemplate.remove(query,"paciente");
}
}
Creamos la clase TurnoRepositoryImpl que implamente de TurnoRepository
package mx.com.tutosoftware.medicalconsulting.repository.impl;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import mx.com.tutosoftware.medicalconsulting.domain.Turno;
import mx.com.tutosoftware.medicalconsulting.repository.TurnoRepository;
public class TurnoRepositoryImpl implements TurnoRepository {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public Iterable<Turno> findAll(Sort sort) {
// TODO Auto-generated method stub
return null;
}
@Override
public Page<Turno> findAll(Pageable pageable) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Turno> S save(S entity) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Turno> Iterable<S> saveAll(Iterable<S> entities) {
// TODO Auto-generated method stub
return null;
}
@Override
public Optional<Turno> findById(String id) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean existsById(String id) {
// TODO Auto-generated method stub
return false;
}
@Override
public Iterable<Turno> findAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public Iterable<Turno> findAllById(Iterable<String> ids) {
// TODO Auto-generated method stub
return null;
}
@Override
public long count() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void deleteById(String id) {
// TODO Auto-generated method stub
}
@Override
public void delete(Turno entity) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll(Iterable<? extends Turno> entities) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll() {
// TODO Auto-generated method stub
}
@Override
public void agregarTurno(Turno t) {
// TODO Auto-generated method stub
mongoTemplate.save(t,"turno");
}
public List<Turno> mostrarTurnos(String dni){
Query query = new Query();
Criteria c = Criteria.where("dni").is(dni);
query.addCriteria(c);
return mongoTemplate.find(query,Turno.class);
}
@Override
public List<Turno> mostrarTurnoFechaMayorHoyDni(String dni){
Date fechaHoy = new Date();
System.out.println("La Fecha de hoy es:"+fechaHoy);
final Query query=new Query();
query.addCriteria(Criteria.where("horarioInicio").gt(fechaHoy).and("dni").is(dni));
return mongoTemplate.find(query,Turno.class);
}
}
Creamos la clase CitaRepositoryImpl que implamente de CitaRepository
package mx.com.tutosoftware.medicalconsulting.repository.impl;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import mx.com.tutosoftware.medicalconsulting.domain.Cita;
import mx.com.tutosoftware.medicalconsulting.repository.CitaRepository;
public class CitaRepositoryImpl implements CitaRepository {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public Iterable<Cita> findAll(Sort sort) {
// TODO Auto-generated method stub
return null;
}
@Override
public Page<Cita> findAll(Pageable pageable) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Cita> S save(S entity) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Cita> Iterable<S> saveAll(Iterable<S> entities) {
// TODO Auto-generated method stub
return null;
}
@Override
public Optional<Cita> findById(String id) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean existsById(String id) {
// TODO Auto-generated method stub
return false;
}
@Override
public Iterable<Cita> findAll() {
// TODO Auto-generated method stub
return null;
}
@Override
public Iterable<Cita> findAllById(Iterable<String> ids) {
// TODO Auto-generated method stub
return null;
}
@Override
public long count() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void deleteById(String id) {
// TODO Auto-generated method stub
}
@Override
public void delete(Cita entity) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll(Iterable<? extends Cita> entities) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll() {
// TODO Auto-generated method stub
}
@Override
public void agregarCita(Cita c) {
// TODO Auto-generated method stub
mongoTemplate.save(c,"cita");
}
@Override
public List<Cita> busquedaCitaHorarioDni(Date horarioInicio,Date horarioFinal,String dni){
final Query query=new Query();
query.addCriteria(Criteria.where("horario").gte(horarioInicio).lte(horarioFinal).and("dni").is(dni).and("status").is("Disponible"));
return mongoTemplate.find(query,Cita.class);
}
@Override
public void actualizarCita(Cita c) {
Query query = new Query(Criteria.where("dni").is(c.getDni()).and("horario").is(c.getHorario()));
Document doc = new Document();
mongoTemplate.getConverter().write(c,doc);
Update update = Update.fromDocument(doc);
mongoTemplate.upsert(query, update, "cita");
}
public List<Cita> mostrarCitasAgendadas(String dni,String nombrePaciente){
Date fechaHoy = new Date();
System.out.println("La Fecha de hoy es:"+fechaHoy);
final Query query=new Query();
query.addCriteria(Criteria.where("horario").gt(fechaHoy).and("dni").is(dni).and("nombrePaciente").is(nombrePaciente));
return mongoTemplate.find(query,Cita.class);
}
public List<Cita> mostrarCitasAgendadas(String nombrePaciente){
Date fechaHoy = new Date();
System.out.println("La Fecha de hoy es:"+fechaHoy);
final Query query=new Query();
query.addCriteria(Criteria.where("horario").gt(fechaHoy).and("nombrePaciente").is(nombrePaciente));
return mongoTemplate.find(query,Cita.class);
}
public List<Cita> busquedaCitas(Date horarioInicio,Date horarioFinal,String dni){
final Query query=new Query();
query.addCriteria(Criteria.where("horario").gte(horarioInicio).lte(horarioFinal).and("dni").is(dni));
return mongoTemplate.find(query,Cita.class);
}
}
Servicios
Creamos los servicios que vamos a mandar invocar.Creamos el paquete
mx.com.tutosoftware.medicalconsulting.service creamos la clase
ProfesionalService
package mx.com.tutosoftware.medicalconsulting.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import mx.com.tutosoftware.medicalconsulting.domain.Profesional;
import mx.com.tutosoftware.medicalconsulting.repository.ProfesionalRepository;
@Service
public class ProfesionalService {
@Autowired
ProfesionalRepository profesionalRepository;
public List<Profesional> obtenerProfesional(String mail) {
return profesionalRepository.findByMail(mail);
}
public void agregarProfesional(Profesional p) {
System.out.println("Este es servicio save");
profesionalRepository.agregarProfesional(p);
}
public List<Profesional> mostrarProfesionales(){
return profesionalRepository.mostrarProfesionales();
}
public void actualizarProfesional(Profesional p) {
profesionalRepository.actualizarProfesional(p);
}
public void eliminarProfesional(Profesional p) {
profesionalRepository.eliminarProfesional(p);
}
}
Creamos la clase PacienteService
package mx.com.tutosoftware.medicalconsulting.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import mx.com.tutosoftware.medicalconsulting.domain.Paciente;
import mx.com.tutosoftware.medicalconsulting.repository.PacienteRepository;
@Service
public class PacienteService {
@Autowired
PacienteRepository pacienteRepository;
public List<Paciente> obtenerPaciente(String email){
return pacienteRepository.findByMail(email);
}
public void agregarPaciente(Paciente p) {
pacienteRepository.agregarPaciente(p);
}
public List<Paciente> mostrarPacientes(){
return pacienteRepository.mostrarPacientes();
}
public void actualizarPaciente(Paciente p) {
pacienteRepository.actualizarPaciente(p);
}
public void eliminarPaciente(Paciente p) {
pacienteRepository.eliminarPaciente(p);
}
}
Creamos la clase TurnoService
package mx.com.tutosoftware.medicalconsulting.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import mx.com.tutosoftware.medicalconsulting.domain.Turno;
import mx.com.tutosoftware.medicalconsulting.repository.TurnoRepository;
@Service
public class TurnoService {
@Autowired
TurnoRepository turnoRepository;
public void agregarTurno(Turno t) {
turnoRepository.agregarTurno(t);
}
public List<Turno> mostrarTurno(String dni){
return turnoRepository.mostrarTurnos(dni);
}
public List<Turno> mostrarTurnoFechaMayorHoyDni(String dni){
return turnoRepository.mostrarTurnoFechaMayorHoyDni(dni);
}
}
Creamos la clase CitaService
package mx.com.tutosoftware.medicalconsulting.service;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import mx.com.tutosoftware.medicalconsulting.domain.Cita;
import mx.com.tutosoftware.medicalconsulting.repository.CitaRepository;
@Service
public class CitaService {
@Autowired
CitaRepository citaRepository;
public void agregarCita(Cita c) {
citaRepository.agregarCita(c);
}
public List<Cita> busquedaCitaHorarioDni(Date horarioInicio,Date horarioFinal,String dni){
return citaRepository.busquedaCitaHorarioDni(horarioInicio, horarioFinal, dni);
}
public void actualizarCita(Cita c) {
citaRepository.actualizarCita(c);
}
public List<Cita> mostrarCitasAgendadas(String dni,String nombrePaciente){
return citaRepository.mostrarCitasAgendadas(dni,nombrePaciente);
}
public List<Cita> mostrarCitasAgendadas(String nombrePaciente){
return citaRepository.mostrarCitasAgendadas(nombrePaciente);
}
public List<Cita> busquedaCitas(Date horarioInicio,Date horarioFinal,String dni){
return citaRepository.busquedaCitas(horarioInicio, horarioFinal, dni);
}
}
Ahora creamos el paquete mx.com.tutosoftware.medicalconsulting.util
En este paquete cremos la clase SessionUtils
package mx.com.tutosoftware.medicalconsulting.util;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
public class SessionUtils {
public static HttpSession getSession() {
return (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
}
public static HttpServletRequest getRequest() {
return (HttpServletRequest) FacesContext.getCurrentInstance()
.getExternalContext().getRequest();
}
public static String getUserName() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
return session.getAttribute("username").toString();
}
public static String getUserId() {
HttpSession session = getSession();
if (session != null)
return (String) session.getAttribute("userid");
else
return null;
}
}
A continuación creamos el paquete mx.com.tutosoftware.medicalconsulting.filter y creamos la
clase AuthorizationFilter implenta de la Interfaz Filter
Creamos un paquete llamado mx.com.tutosoftware.medicalconsulting.bean donde vamos
a colocar las clases de Bean o controllers para la vistas.Creamos la clase llamada
DashboardView