El enunciado es el siguiente:
TALLER DE PROGRAMACIÓN IEjercicio 1Necesitamos implementar una caché de objetos de tipo Mensaje en un servidor. Los mensajes tienen un id, un texto (el mensaje propiamente dicho), una prioridad asociada (la cual debe ser implementada utilizando enums), una fecha y hora de recepción.
El servidor de caché tiene un límite de la cantidad de objetos que puede guardar, una vez alcanzado ese límite, y frente a la llegada de otro mensaje, el mismo procede a descartar el de menor prioridad y entre los de menor prioridad el más viejo de todos.
Si la condición anterior se repitiera 3 veces el servidor debe lanzar una excepción verificada informando del problema.
El usuario de la caché puede realizar dos operaciones:
1) Pedir todos los objetos de una determinada prioridad
2) Pedir una Set de todos los elementos ordenados por prioridad
Ejercicio 2Modifique el ejercicio anterior para que la caché pueda funcionar con otros elementos además del Mensaje y que sea validado en tiempo de compilación.
Les muestro lo que hice, y luego le digo en que parte me quede.
public class Mensaje {
private String id;
private Prioridad prio;
private String fecha;
private String hora;
public Mensaje (String id, Prioridad prio, String fecha, String hora) {
this.id = id;
this.prio = prio;
this.fecha = fecha;
this.hora = hora;
}
public String getId () {
return id;
}
public Prioridad getPrio () {
return prio;
}
public String getFecha () {
return fecha;
}
public String getHora () {
return hora;
}
}
import java.util.ArrayList;
public class Menu {
ArrayList <Mensaje> lista = new ArrayList <Mensaje> ();
public Menu () {
}
public void agregarMensajes (Mensaje m) {
lista.add (m);
}
public void cantidadMensajes (){
System.out.println(lista.size ());
}
public void borrarMensajes (){
int limite, cant;
cant = lista.size ();
limite = 3;
if (cant == limite){
lista.remove (Prioridad.BAJA);
}
}
}
public enum Prioridad {
BAJA, MEDIA, ALTA;
}
public class Test {
public static void main(String[] args) {
Menu tester = new Menu ();
Mensaje m1 = new Mensaje ("18-8fg2-87hg",Prioridad.BAJA,"14/8/15","14:32 AM.");
Mensaje m2 = new Mensaje ("92-555j7-32g",Prioridad.ALTA,"4/9/15","11:25 AM.");
Mensaje m3 = new Mensaje ("66-785Y-32g",Prioridad.MEDIA,"6/3/15","22:15 AM.");
Mensaje m4 = new Mensaje ("92-555j7-32g",Prioridad.ALTA,"4/9/15","11:25 AM.");
tester.agregarMensajes (m1);
tester.agregarMensajes (m2);
tester.agregarMensajes (m3);
tester.agregarMensajes (m4);
tester.cantidadMensajes ();
tester.borrarMensajes();
tester.cantidadMensajes();
}
}
Yo hice hasta ahi, me quede en como borrar el mensaje que tenga la PRIORIDAD.BAJA... Nose como hacer para que el mensaje tenga la prioridad baja, al excederse del limite de 3 mensajes se elimine. Me podrian ayudar como hacer?