/* * Añade un elemento a la colección correcta * Obtiene la colección y comprueba si ya está en ella * Precondición: ninguna * Postcondición: devuelve true si se ha añadido con éxito y false en caso contrario */ public static bool anadir(T t) { //recorre la lista //si el t no esta en la lista lo añade y devuelve true //si está en la lista, devuelve false. Coleccion <T> aux = Persistencia <T> .obtenerColeccion(); if (aux == null) { return(false); } else { try { aux.Add(t); return(true); }catch (ArgumentException) { return(false); } } //borro las comprobaciones porque segun Vico es problema de la logica de negocio comprobar que existe }
public static Coleccion <T> getColeccion() { if (coleccion == null) { coleccion = new Coleccion <T>(); } return(coleccion as Coleccion <T>); }
//Para devolver una copia y que no sea afectada la capa de persistencia public Coleccion <TipoBasico> Copiar() { Coleccion <TipoBasico> aux = new Coleccion <TipoBasico>(); foreach (TipoBasico i in this) { aux.Add(i.copiar()); } return(aux); }
/* * Indica si un elemento está en la colección * Precondición: t es no nulo y tiene la clave del elemento a buscar * Postcondición: devuelve true si coincide, y false en caso contrario */ public static bool existe(T t) { Coleccion <T> aux = Persistencia <T> .obtenerColeccion(); if (aux == null) { return(false); } return(aux.Contains(t.Clave)); }
/* * Devuelve todos los elementos de una coleccion según el tipo pasado * Precondición: nada * Postcondición: devuelve la colección si los tipos coinciden, sino devuelve null; */ public static List <T> getTodos() { List <T> aux = new List <T>(); Coleccion <T> original = Persistencia <T> .obtenerColeccion(); foreach (T i in original) { aux.Add((T)i.copiar()); } return(aux); }
/* * Reemplaza la instancia vieja por la nueva * Precondición: el elemento t es no nulo y tiene la misma clave que el elemento a modificar * Postcondición: t se emplaza en el elemento que tenía la misma clave que él */ public static bool modificar(T t) { Coleccion <T> aux = Persistencia <T> .obtenerColeccion(); if (aux == null) { return(false); } else { int i = aux.IndexOf(t); aux.SetItem(i, t); return(true); } }
/* * Elimina un elemento de una colección * Precondición: t es no nulo y tiene la misma clave que el elemento a borrar * Postcondición: devuelve true si existía y se ha eliminado y false en cualquier otro caso */ public static bool borrar(T t) { Coleccion <T> aux = Persistencia <T> .obtenerColeccion(); if (aux == null) { return(false); } else { aux.Remove(t.Clave); return(true); } //borro las comprobaciones porque segun Vico es problema de la logica de negocio comprobar que existe }
/* * Devuelve un elemento concreto identificado por su clave * Precondición: t es no nulo y tiene la clave del elemento a buscar * Postcondición: devuelve el elemento o exepción */ public static T get(T t) { Coleccion <T> aux = Persistencia <T> .obtenerColeccion(); return((T)aux.Item(t.Clave).copiar()); }