Saltar la navegación

Ejercicio 4: CRUD

Objetivos

  • Construir un servicio Web "PersonaRecurso" que permita realizar las operaciones CRUD sobre datos de personas.

Arquitectura

ejercicio 4 arquitectura REST

Instrucciones

  • Crea un proyecto Dynamic Web Project. Lo llamaremos "rest_ejercicio3_CRUD"
    • Check en Descriptor de Despliegue (web.xml)
  • Copia los paquetes DAO, modelo y serviciosrest.persona del ejercicio anterior (rest_ejercicio2_formato) y pegados en el directorio "src" de este proyecto
  • En el fiero web.xml, copia el contenido del web.xml del ejercicio est_ejercicio2_formato
  • Elimina las clases dentro del paquete serviciosrest.persona
  • Crea el servicio Web:
    • Crea la clase PersonaRecurso.java en el paquete serviciosrest.persona
    • Implementa los métodos:
      • getPersonas (Path del método: ninguno)
      • getPersonaByPathParam(int id) (Path del método: /{id})
      • getPersinaByQueryParam(int id) (Path del método: /query)
      • guardarUsuario(Persona p) (Path del método: /add)
      • actualizarUsuario(int id) (Path del método: /update)
      • eliminarUsuario(int id) (Path del método: /delete/{id})

Código

Persona

package modelo.entidades;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Persona implements Serializable {

	private static final long serialVersionUID = 1L;

	private int id;
	private String nombre;
	private String password;
	
	

	public Persona () {
		
	}
	public Persona(int id, String nombre, String password) {
		this.id = id;
		this.nombre = nombre;
		this.password = password;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	
}



PersonaDAO

package modelo.dao;

import java.util.ArrayList;
import java.util.List;

import modelo.entidades.Persona;

public class PersonaDAO {

	private static List<Persona> personas = null;
	public PersonaDAO() {
		if (personas == null) {
			personas = new ArrayList<Persona>();
			personas.add(new Persona(1, "Carlos", "carlos123"));
			personas.add(new Persona(2, "Pedro", "pedro123"));
			personas.add(new Persona(3, "Maria", "maria123"));
		}
	}
	

	public Persona autorizar(String nombre, String clave) {
		Persona personaAutorizada = null;
		List<Persona> personas = getPersonas();
		for (Persona persona : personas) {
			if (persona.getNombre().equals(nombre) && persona.getPassword().equals(clave)) {

				personaAutorizada = persona;
				break;
			}
		}
		return personaAutorizada;

	}

	public Persona getPersona(int IdPersona) {
		Persona p = null;

		List<Persona> listPeronas = this.getPersonas();
		for (Persona persona : listPeronas) {
			if (persona.getId() == IdPersona) {
				p = persona;
				break;
			}
		}
		return p;
	}

	public boolean create(Persona p) {
		//Generación del id (numero mas alto + 1 en el array)
		int max = 0;
		for (Persona persona : personas) {
			if (max< persona.getId()) {
				max = persona.getId();
			}
		}
		p.setId(max + 1);
		
		
		return personas.add(p);
	}

	public void update(Persona p) {
		
		List<Persona> listPersonas = this.getPersonas();
		
		
		for (int i = 0; i < listPersonas.size(); i++) {
			if (listPersonas.get(i).getId() == p.getId()) {
				
				listPersonas.get(i).setNombre(p.getNombre());
				listPersonas.get(i).setPassword(p.getPassword());
				break;
			}
		}
	}

	public Persona delete(int id) throws Exception {
			
			int indice = 0;
			List<Persona> listPersonas = this.getPersonas();
			for (int i = 0; i < listPersonas.size(); i++) {
				if (listPersonas.get(i).getId() == id) {
					indice = i;
					break;
				}
			}
			return listPersonas.remove(indice);
		
	}


	public Persona getPersonaById(int id) {
		Persona personaEncontrada = null;
		for (Persona persona : this.getPersonas()) {
			if (persona.getId() == id) {
				personaEncontrada = persona;
				break;
			}
		}
		return personaEncontrada;

	}
	public List<Persona> getPersonas(){
		return personas;
	}
}