Estoy realizando un proyecto de estructuras de datos en el cual se crean procesos, actividades y tareas al agregar una actividad a una ListaDoble el constructor de la super clase tiene en ella una cola tareas que quiere decir al crear una actividad esta agregara Tareas a una cola que haran parte de la actividad una imagen como guia (El problema dudo que sea que la cola no exista ya que en el metodo de agregarActividad encolo las tareas:
Ahora mi clase Actividad en código lo demas que hacen parte de ella son simples Setters y getters:
public class Actividad {
public int id = 0;
public String nombre = "";
public String descripcion = "";
public boolean obligatorio = true;
Cola<Tarea> colaTareas = new Cola<Tarea>();
public Actividad(int id, String nombre, String descripcion, boolean obligatorio) {
super();
this.id = id;
this.nombre = nombre;
this.descripcion = descripcion;
this.obligatorio = obligatorio;
colaTareas = new Cola<Tarea>();
}
public Actividad() {
}
Ahora el metodo que se encuentra en mi clase controladora desde donde se maneja la informacion involucrada con la interfaz (JAVAFX):
public void agregarActividad() {
int idActividad;
String nombreActividad, descripcionActivi;
boolean obligatorioActi = false;
idActividad = Integer.parseInt(ID_ACTIVIDAD.getText());
nombreActividad = Nombre_Actividad.getText();
descripcionActivi = Descripcion_Actividad.getText();
if (comboObligatoria_Actividad.getSelectionModel().getSelectedItem().toString().equalsIgnoreCase("Si"))
obligatorioActi = true;
if (comboObligatoria_Actividad.getSelectionModel().getSelectedItem().toString().equalsIgnoreCase("No"))
obligatorioActi = false;
modelFactoryController.getMiPrincipal().agregarActividad(idActividad, nombreActividad, descripcionActivi,
obligatorioActi);
Actividad act = new Actividad(idActividad, nombreActividad, descripcionActivi, obligatorioActi);
NodoDoble<Actividad> guia = modelFactoryController.getMiPrincipal().getListaActividades().buscarNodo(act);
Nodo<Actividad> nodo = new Nodo<Actividad>(act);
for (Tarea tarea : arrayTareasSeleccionadas) {
nodo.getValorNodo().getColaTareas().encolar(tarea);
}
JOptionPane.showMessageDialog(null, "ACTIVIDAD AGREGADA!");
limpiarCamposActividades();
arrayTareasSeleccionadas.clear();
observableAuxSeleccionadas.clear();
actualizarTabla();
}
Ahora mi metodo de agregarActividad en mi ModelFactoryController de el patron singleton:
public void agregarActividad(int id, String nombre, String descripcion, boolean obligatorio) {
listaActividades.agregarInicio(new Actividad(id, nombre, descripcion, obligatorio));
System.out.println("ACTIVIDAD AGREGADA");
}
// Agregar al inicio de la lista
public void agregarInicio(T valorNodo) {
NodoDoble<T> nuevoNodo = new NodoDoble<>(valorNodo);
if (estaVacia()) {
nodoPrimero = nodoUltimo = nuevoNodo;
} else {
nuevoNodo.setSiguienteNodo(nodoPrimero);
nodoPrimero = nuevoNodo;
}
tamanio++;
}
El problema empieza cuando quiero listar el nombre de las tareas de la cola que hacen parte de el Item (Actividad) seleccionada, aqui una imagen de guia y metodo:
public void listarTareasColas() {
int idActividad = tablaActividades.getSelectionModel().getSelectedItem().getId();
String nombreActividad = tablaActividades.getSelectionModel().getSelectedItem().getNombre();
String descripcionActivi = tablaActividades.getSelectionModel().getSelectedItem().getDescripcion();
boolean obligatorioActi = tablaActividades.getSelectionModel().getSelectedItem().isObligatorio();
String info = "Los ID y nombres que hay en la cola son: \n";
Actividad index = new Actividad(idActividad, nombreActividad, descripcionActivi, obligatorioActi);
System.out.println("NOMBRE ACTIVIDAD SELECCIONADA" + index.getNombre().toString());
NodoDoble<Actividad> nododoble = modelFactoryController.getMiPrincipal().getListaActividades()
.buscarNodo(index);
System.out.println(cola.mostrarCola(nododoble.getValorNodo().getColaTareas()));
System.out.println();
System.out.println(info);
JOptionPane.showMessageDialog(null, info);
}
/**
* Devuelve un nodo que contenga un dato específico
*
* @param dato Dato a buscar
* @return Nodo
*/
public NodoDoble<T> buscarNodo(T dato) {
NodoDoble<T> aux = nodoPrimero;
while (aux != null) {
if (aux.getValorNodo().equals(dato)) {
return aux;
}
aux = aux.getSiguienteNodo();
}
return aux;
}
public String mostrarCola(Cola<T> cola) {
String info = "";
while (nodoPrimero != null) {
info += nodoPrimero.getValorNodo();
nodoPrimero = nodoPrimero.getSiguienteNodo();
}
return info;
}