Post on 16-Jul-2022
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS
PROGRAMACION PARA DISPOSITIVOS MOVILES
PDM115 Ciclo I-2014
GUIA DE LABORATORIO N° 10 A
Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL
Objetivo:
Modificar los servicios web realizados en la guía 9a para que permitir consumo desde
movil.
Requerimientos previos:
Desarrollar guia 9a
Índice
Contenido Servicios para Encontrar Alumno y Materia por fecha .............................................................................. 1
Agregar los campos de fecha a la tabla Alumno y Materia en el Gestor de Base de Datos(MySQL)..... 1
Agregar los campos de fecha a la tabla Alumno y Materia en las clases Asociadas ............................. 1
Modificar la clase entidad Alumno.java con el nuevo atributo fecha. .................................................. 1
Agregar los métodos set y get del nuevo atributo. ................................................................................ 2
Agregar la consulta (NamedQuery) en ambas entidades ...................................................................... 3
Probar los servicios en el plugin rest de Mozilla .................................................................................... 5
Servicio de Promedio ................................................................................................................................. 6
Insertar más Notas de alumnos(POST) .................................................................................................. 6
Obtener el Promedio de Notas de un Alumno ....................................................................................... 7
Verificar que se han insertado las librerías correctas. ........................................................................... 8
Probar los servicios en el plugin rest de Mozilla .................................................................................... 8
Anexo1 ....................................................................................................................................................... 9
Anexo2 ..................................................................................................................................................... 11
Anexo 3 ..................................................................................................................................................... 12
1
Servicios para Encontrar Alumno y Materia por fecha
Agregar los campos de fecha a la tabla Alumno y Materia en el Gestor de Base de
Datos(MySQL)
*Si ya se tienen datos hacer el update
ALTER TABLE materia ADD FECHAACT DATE NULL;
UPDATE materia SET FECHAACT = '2014-05-05' ;
ALTER TABLE alumno ADD FECHAACT DATE NULL;
UPDATE alumno SET FECHAACT = '2014-05-05' ;
Script de insercion
INSERT INTO ALUMNO VALUES ('NN00003','Nuevo','Nuevo','M',0,'2014-05-05');
INSERT INTO MATERIA VALUES('PRN215','PROGRAMACION 2',4,'2014-05-05');
INSERT INTO NOTA VALUES('PRN215', 'NN00003','1',2);
Agregar los campos de fecha a la tabla Alumno y Materia en las clases Asociadas
Modificar la clase entidad Alumno.java con el nuevo atributo fecha.
2
Verificar que se han insertado las librerías correctas en ambas clases.
Agregar los métodos set y get del nuevo atributo. a) Podemos agregarlos con asistente:
Sombreamos fechaact y presionamos clic derecho insert code,
Luego clic en Getter and Setter
o
b) Simplemente los digitamos:
Repetir lo anterior en la clase Materia.java
3
Agregar la consulta (NamedQuery) en ambas entidades
En Alumno.java:
En Materia.java:
4
Escribir el siguiente método en la clase AlumnoFacadeREST.java
Ver anexo 1 (código fuente)
Verificar que se han insertado las librerías correctas.
5
De igual manera para la clase MateriaFacadeREST.java
Ver anexo2 (código fuente)
Probar los servicios en el plugin rest de Mozilla
Consultar materias creadas una fecha http://localhost:8080/CarnetWebApplicationDB2/webresources/sv.ues.fia.carnet.entidad.materia/by?fechaact=2014-05-05/
Consultar alumnos creados desde una fecha http://localhost:8080/CarnetWebApplicationDB2/webresources/sv.ues.fia.carnet.entidad.alumno/by?fechaact=2014-05-05/
6
Servicio de Promedio
Insertar más Notas de alumnos(POST)
http://localhost:8080/CarnetWebApplicationDB2/webresources/sv.ues.fia.carnet.entidad.nota
Cabecera (Content Type= application/json)
Body
{
"notaPK":
{
"carnet":"NN00001","codmateria":"PRN215","ciclo":"1"
},
"notafinal":"8"
}
Puede insertarlos también con comandos insert
7
Obtener el Promedio de Notas de un Alumno
Agregar el siguiente NamedQuery a la entidad Nota.java
Agregar el siguiente método a la clase NotaFacadeREST.java
Ver anexo3 (código fuente)
8
Verificar que se han insertado las librerías correctas.
Probar los servicios en el plugin rest de Mozilla Consultar Notas agrupadas por carnet
http://localhost:8080/CarnetWebApplicationDB2/webresources/sv.ues.fia.car
net.entidad.nota/prom/NN00001/
Notas:
*Suba el proyecto en la opción correspondiente del aula.
*Puede hacer pruebas de los servicios con las ips de prueba en el servidor de la eisi
En Lcomp3 u otro computo de la LAN EISI (172.16.14.14)
O desde otro dominio externo como desde su casa(168.243.8.13)
*El proyecto original esta descargable en el aula (CarnetWebApplicationDB2.rar)
9
Anexo1 @GET
@Path("by")
@Produces({"application/json"})
public List<Alumno> findByFecha(@QueryParam("fechaact") String fechaact) {
//Obtenemos la fecha actual
Calendar calendario = GregorianCalendar.getInstance();
Date fechaActual = calendario.getTime();
SimpleDateFormat formatoFecha = new SimpleDateFormat("yyyy-MM-dd");
try {
//Parseamos la fecha a tipo DATE
Date fechaInicial = formatoFecha.parse(fechaact);
//Realizamos la consulta
Query q = getEntityManager().createNamedQuery("Alumno.findByFecha");
q.setParameter("fechaInicial", fechaInicial);
q.setParameter("fechaActual", fechaActual);
//Retornamos el resultado
return q.getResultList();
} catch (ParseException ex) {
//String de fecha con formato incorrecto
Logger.getLogger(AlumnoFacadeREST.class.getName()).log(Level.SEVERE, null, ex);
return null;
10
}
}
11
Anexo2 @GET
@Path("by")
@Produces({"application/xml", "application/json"})
public List<Materia> findByFecha(@QueryParam("fechaact") String fechaact) {
//Obtenemos la fecha actual
Calendar calendario = GregorianCalendar.getInstance();
Date fechaActual = calendario.getTime();
SimpleDateFormat formatoFecha = new SimpleDateFormat("yyyy-MM-dd");
try {
//Parseamos la fecha a tipo DATE
Date fechaInicial = formatoFecha.parse(fechaact);
//Realizamos la consulta
Query q = getEntityManager().createNamedQuery("Materia.findByFecha");
q.setParameter("fechaInicial", fechaInicial);
q.setParameter("fechaActual", fechaActual);
//Retornamos el resultado
return q.getResultList();
} catch (ParseException ex) {
//String de fecha con formato incorrecto
Logger.getLogger(MateriaFacadeREST.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
12
Anexo 3
@GET
@Path("prom/{carnet}")
@Produces({"application/json"})
public JSONObject getPromedio(@PathParam("carnet") String carnet) {
Query q = getEntityManager().createNamedQuery("Nota.findAvg");
q.setParameter("carnet", carnet);
List<Nota> notas = q.getResultList();
Float promedio = new Float(0);
for (Nota n : notas) {
promedio = promedio + n.getNotafinal();
}
JSONObject jo = new JSONObject();
try {
if (notas.isEmpty()) {
jo.put("promedio", Float.valueOf(0));
return jo;
} else {
Float prom = promedio / notas.size();
jo.put("promedio", prom);
return jo;
}
} catch (JSONException ex) {
Logger.getLogger(NotaFacadeREST.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}