Skip to content

Instantly share code, notes, and snippets.

@JoseluDAM2000
Last active January 19, 2017 09:04
Show Gist options
  • Save JoseluDAM2000/f0663f5ab0baa423c6f4a6f3b3fe435b to your computer and use it in GitHub Desktop.
Save JoseluDAM2000/f0663f5ab0baa423c6f4a6f3b3fe435b to your computer and use it in GitHub Desktop.
import java.util.ArrayList;
import java.util.Iterator;
import java.time.LocalDate;
/**
* Clase que crea colecciones que almacenan objetos de tipo Tarea.
*/
public class ListaTareas
{
// Colección que almacena objetos de la clase Tarea.
private ArrayList<Tarea> listaDeTareas;
// Almacena el id para la siguiente tarea.
private int id;
/**
* Constructor for objects of class ListaTareas
*/
public ListaTareas()
{
listaDeTareas = new ArrayList<Tarea>();
id = 0;
}
/**
* Añade una tarea nueva a la coleccion listaDeTareas.
*/
public void addTarea(String tarea)
{
if(id < 89){
Tarea nuevaTarea = new Tarea(tarea, id);
listaDeTareas.add(nuevaTarea);
id++;
}
}
/**
* Permite ver todas las tareas numeradas
* empezando en 1 pudiendo ver si estan
* completadas o no.
*/
public void verTareasNumeradas()
{
Iterator<Tarea> it = listaDeTareas.iterator();
while(it.hasNext()){
Tarea tarea = it.next();
System.out.println(tarea.toString());
}
}
/**
* Permite fijar una tarea como hecha
* indicando la posición de la misma.
*/
public void setTareaHecha(int id)
{
int comprobanteId = esValidoElId(id);
if(comprobanteId != -1){
listaDeTareas.get(comprobanteId).setTareaHecha();
}
}
///**
// * Comprueba si un indice es valido.
// */
//public boolean esValidoElIndice(int id)
//{
// return id >= 0 && id < this.id && !idEliminado.contains(String.valueOf(id));
//}
/**
* Mostrar todas las tareas cuyo
* nombre contenga un determinado texto.
*/
public void mostrarTareasCoincidentes(String texto)
{
int numeroCabecera = 1;
int tareasCoincidentes = 0;
Iterator<Tarea> it = listaDeTareas.iterator();
while(it.hasNext()){
Tarea tarea = it.next();
if(tarea.getNombreTarea().contains(texto)){
System.out.println(numeroCabecera + " " + tarea.toString());
tareasCoincidentes++;
}
numeroCabecera++;
}
if(tareasCoincidentes == 0){
System.out.println("Error, no hay coincidencias.");
}
else{
System.out.println("Tareas coincidentes: " + tareasCoincidentes);
}
}
/**
* Elimina una tarea indicando su numero.
*/
public void eliminarTarea(int id)
{
int comprobanteId = esValidoElId(id);
if(comprobanteId != -1){
listaDeTareas.remove(comprobanteId);
}
}
/**
* Fija la prioridad de una tarea.
*/
public void setPrioridad(int id, int prioridad)
{
int comprobanteId = esValidoElId(id);
if(comprobanteId != -1){
listaDeTareas.get(comprobanteId).setPrioridad(prioridad);
}
}
/**
* Se muestra por pantalla todos los elementos
* de la colección ordenados de mayor a menor prioridad.
*/
public void tareasOrdenadas()
{
int i = 0;
int buscarPrioridad = 5;
Tarea tareaLocal;
while(buscarPrioridad >= 0){
while(i < listaDeTareas.size()){
tareaLocal = listaDeTareas.get(i);
if(tareaLocal.getPrioridad() == buscarPrioridad){
System.out.println(tareaLocal);
}
i++;
}
i = 0;
buscarPrioridad--;
}
}
/**
* Fija la fecha de vencimiento de una tarea.
*/
public void fijarFechaVencimiento(int id, int dia, int mes, int anyo)
{
int comprobanteId = esValidoElId(id);
if(comprobanteId != -1){
listaDeTareas.get(comprobanteId).fijarFechaVencimiento(dia, mes, anyo);
}
}
/**
* Muestra por pantalla el listado de
* tareas con fecha de vencimiento hoy.
*/
public void mostrarHoy()
{
int index = 0;
LocalDate ahora = LocalDate.now();
Iterator<Tarea> it = listaDeTareas.iterator();
while(it.hasNext()){
Tarea tarea = it.next();
if(tarea.devolverFechaVencimiento() != null){
if(tarea.devolverFechaVencimiento().isEqual(ahora)){
System.out.println((index + 1) + " " + tarea.toString());
}
}
index++;
}
}
/**
* Muestra por pantallas el listado
* de tareas con fechas vencidas.
*/
public void mostrarVencidas()
{
int index = 0;
LocalDate ahora = LocalDate.now();
Iterator<Tarea> it = listaDeTareas.iterator();
while(it.hasNext()){
Tarea tarea = it.next();
if(tarea.devolverFechaVencimiento() != null){
if(tarea.devolverFechaVencimiento().isBefore(ahora)){
System.out.println((index + 1) + " " + tarea.toString());
}
}
index++;
}
}
/**
* Muestra la tarea con mas alta prioridad,
* si hay varias empatadas muestra todas.
*/
public void verTareaMasPrioritaria()
{
int i = 0;
int buscarPrioridad = 5;
boolean encontrado = false;
Tarea tareaLocal;
while(buscarPrioridad >= 0 && !encontrado){
while(i < listaDeTareas.size()){
tareaLocal = listaDeTareas.get(i);
if(tareaLocal.getPrioridad() == buscarPrioridad){
System.out.println((i + 1) + " " + tareaLocal.toString());
encontrado = true;
}
i++;
}
i = 0;
buscarPrioridad--;
}
}
/**
* Muestra la tarea con mayor prioridad.
* En caso de empate muestra solo la ultima.
*/
public void verTareaMasPrioritaria2()
{
if(listaDeTareas.size() > 0){
int prioridadMaxima = listaDeTareas.get(0).getPrioridad();
Tarea tareaGuardada = listaDeTareas.get(0);
for(Tarea tarea : listaDeTareas){
if(tarea.getPrioridad() >= prioridadMaxima){
tareaGuardada = tarea;
prioridadMaxima = tarea.getPrioridad();
}
}
System.out.println(tareaGuardada);
}
}
/**
* Devuelve la posicion dentro del ArrayList
* de la tarea con el id que se ha pasado por
* parametro, o -1 en caso de que no exista
* ninguna tarea con dicho id.
*/
public int esValidoElId(int id)
{
int index = 0;
int indexGuardado = -1;
for(Tarea tarea : listaDeTareas){
if(tarea.getId() == id){
indexGuardado = index;
}
index++;
}
return indexGuardado;
}
/**
* Devuelve el id de la tarea mas antigua
* de nuestra lista que aun no esta completada.
*/
public int tareaMasViejaPendiente()
{
int index = 0;
int id = -1;
boolean buscando = true;
while(index < listaDeTareas.size() && buscando){
if(!listaDeTareas.get(index).getTareaHecha()){
buscando = false;
id = listaDeTareas.get(index).getId();
}
index++;
}
return id;
}
/**
* Devuelve el numero de tareas sin terminar.
*/
public int numeroTareasSinTerminar()
{
int contador = 0;
for(Tarea tarea : listaDeTareas){
if(!tarea.getTareaHecha()){
contador++;
}
}
return contador;
}
/**
* Devuelve true en caso de que haya dos tareas
* con la misma descripcion o false en caso contrario.
*/
public boolean hayTareasDuplicadas()
{
boolean buscando = true;
int indexAConsultar = 0;
int indexConsultado = 1;
while(buscando && indexAConsultar < listaDeTareas.size()){
String tareaAConsultar = listaDeTareas.get(indexAConsultar).getNombreTarea();
while(buscando && indexConsultado < listaDeTareas.size()){
if(tareaAConsultar.equals(listaDeTareas.get(indexConsultado).getNombreTarea())){
buscando = false;
}
indexConsultado++;
}
indexAConsultar++;
indexConsultado = indexAConsultar + 1;
}
return !buscando;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment