14
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

Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

  • Upload
    others

  • View
    17

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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

Page 2: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

Í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

Page 3: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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.

Page 4: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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

Page 5: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

3

Agregar la consulta (NamedQuery) en ambas entidades

En Alumno.java:

En Materia.java:

Page 6: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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.

Page 7: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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/

Page 8: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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

Page 9: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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)

Page 10: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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)

Page 11: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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;

Page 12: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

10

}

}

Page 13: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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;

}

}

Page 14: Modificaciones a Servicio Web Netbeans-java,Glassfish MySQL

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;

}

}