proyecto.utilidades
Class TableModelGeneral

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by proyecto.utilidades.TableModelGeneral
All Implemented Interfaces:
java.io.Serializable, java.util.Comparator, javax.swing.table.TableModel

public class TableModelGeneral
extends javax.swing.table.AbstractTableModel
implements java.util.Comparator

Descripción:

Esta clase hereda de AbstractTableModel para su uso como modelo de cualquier JTable que vaya a mostrar un array de objetos.

See Also:
Serialized Form

Field Summary
static short ASCENDENTE
           
static short DESCENDENTE
           
protected  java.util.ArrayList ialFiltrados
          Los objetos que tiene la tabla en un momento
protected  java.util.ArrayList ialMostrados
          Objetos que se muestran (no filtrados).
protected  boolean[] ibEditable
           
protected  boolean ibHayOrdenacion
           
protected  boolean ibOrdenacionAscendente
           
protected  java.util.HashSet ihsBorrados
           
protected  java.util.HashSet ihsInsertados
           
protected  java.util.HashSet ihsModificados
           
protected  int iiColumnaOrdenacion
           
protected  java.lang.String[] isAtributos
           
protected  java.lang.String[] isCabecera
           
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
TableModelGeneral(java.lang.Object[] aoDatos, java.lang.Object[] aoColumnas)
          Constructor del TableModelGeneral al cual se le pasa el array de objetos de los datos que apareceran en la tabla, y ademas otra lista que contendrá listas de los elementos necesarios para cargar el modelo.
TableModelGeneral(java.lang.Object[] aoDatos, java.lang.String[] asCabecera, java.lang.String[] asAtributos)
          Constructor TableModelGeneral.
 
Method Summary
 void addTableModelListener(javax.swing.event.TableModelListener tabla)
           
 void borrarFila(int aiFila)
          Borra del Jtable la fila indicada en el argumento
 int compare(java.lang.Object p1, java.lang.Object p2)
          Compara los objetos
 boolean equals(java.lang.Object p1)
          Siempre se devuelve true
protected  java.lang.Object getAtributo(java.lang.Object aoDatos, int aiIndice)
          Sabiendo la columna del JTable y el nombre del metodo (sin la palabra get por delante) se invocará este metodo (por reflexion) para obtener el valor del atributo en una fila y mostrarlo en el JTable.
 java.util.HashSet getBorrados()
          Devuelve un HashSet con todos los objetos borrados
 java.lang.String[] getCabecera()
          Devuelve la cabecera de la tabla.
 boolean getCambios()
          Devuelve verdadero si se ha insertado, borrado o actualizdo algún objeto de la tabla.
 java.lang.Class getColumnClass(int aiColumna)
           
 int getColumnCount()
          Devuelve el número de columnas que se va a mostrar en el JTable.
 java.lang.String getColumnName(int aiIndice)
           
 boolean[] getEditable()
           
 boolean getHayOrdenacion()
           
 java.util.HashSet getInsertados()
          Devuelve un HashSet con todos los objetos insertados
 java.util.ArrayList getListaObjetos()
          Devuelve una lista con todos los objetos(incluido los filtrados) en el mismo orden en el que se mostrarian en el jtable.
 java.util.ArrayList getListaObjetosVisibles()
          Devuelve un ArrayList con los objetos que se visualizan en el jtable, en el mismo orden en el que se muestran en el jtable.
 java.util.HashSet getModificados()
          Devuelve un HashSet con todos los objetos modificados
 java.lang.Object[] getObjetos()
          Devuelve un array con todos los objetos(incluido los filtrados) en el mismo orden en el que se mostrarian en el jtable.
 java.lang.Object[] getObjetosVisibles()
          Devuelve un array con los objetos que se visualizan en el jtable,en el mismo orden en el que se muestran en el jtable.
 int getRowCount()
          Devuelve el número de filas que se visualizan en el Jtable.Cuando se va a dibujar el Jtable se dibujaran el numero de filas que devuelva este metodo.
 java.lang.Object getValueAt(int aiFila)
          Devuelve el valor de la fila indicado como un objeto.
 java.lang.Object getValueAt(int aiFila, int aiColumna)
          Este método se llama para dibujar todo el contenido del jtable.
 void insertarFila(java.lang.Object ao)
          Inserta una nueva fila con el valor del objeto pasado en el argumento
 void insertarFila(java.lang.Object ao, int posicion)
           
 boolean isCellEditable(int aiFila, int aiColumna)
           
static void main(java.lang.String[] args)
           
 void ordenar(int aiColumna)
          El método permite ordenar el JTable que tiene como modelo este Table Model para la ordenación se utiliza la columna que recibe como primer parámetro.
 void ordenar(int aiColumna, int aiTipoOrdenacion)
          El método permite ordenar el JTable que tiene como modelo este Table Model para la ordenación se utiliza la columna que recibe como primer parámetro.
 void resetCambios()
          La tabla tiene listas para mantener los objetos que se han añadido, borrado y modificado.
protected  void setAtributo(java.lang.Object aoDatos, int aiFila, int aiColumna)
          Actualiza los valores del array de datos con los cambios del JTable
 void setAtributos(java.lang.String[] aasAtributos)
          actualiza el array de atributos del Modelo de la tabla
 void setCabecera(java.lang.String[] asCabecera)
          Asigna como cabecera de la tabla la lista dada como argumento.
 void setEditable(boolean[] abEditable)
           
 void setFiltrados(java.lang.Object[] aoDatosMostrar)
          Filtra el Jtable, mostrando solo las filas que tengan el mismo valor que las pasadas en el argumento
 void setHayOrdenacion(boolean aOrdenacion)
           
 void setObjetos(java.lang.Object[] aao)
           
 void setValueAt(java.lang.Object aoAtributo, int aiFila)
          Reemplaza el objeto de la fila indicada con el objeto del argumento
 void setValueAt(java.lang.Object aoAtributo, int aiFila, int aiColumna)
          Reemplaza el valor de la fila,columna indicada.Este metodo se llama cada vez que se modifica el valor de una columna.
 
Methods inherited from class javax.swing.table.AbstractTableModel
findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ASCENDENTE

public static final short ASCENDENTE
See Also:
Constant Field Values

DESCENDENTE

public static final short DESCENDENTE
See Also:
Constant Field Values

ialFiltrados

protected java.util.ArrayList ialFiltrados
Los objetos que tiene la tabla en un momento


ialMostrados

protected java.util.ArrayList ialMostrados
Objetos que se muestran (no filtrados).


isCabecera

protected java.lang.String[] isCabecera

isAtributos

protected java.lang.String[] isAtributos

ibEditable

protected boolean[] ibEditable

ihsBorrados

protected java.util.HashSet ihsBorrados

ihsInsertados

protected java.util.HashSet ihsInsertados

ihsModificados

protected java.util.HashSet ihsModificados

iiColumnaOrdenacion

protected int iiColumnaOrdenacion

ibOrdenacionAscendente

protected boolean ibOrdenacionAscendente

ibHayOrdenacion

protected boolean ibHayOrdenacion
Constructor Detail

TableModelGeneral

public TableModelGeneral(java.lang.Object[] aoDatos,
                         java.lang.String[] asCabecera,
                         java.lang.String[] asAtributos)
Constructor TableModelGeneral.

Parameters:
aoDatos - Una lista de objetos, donde cada objeto estará en una fila del modelo.
asCabecera - Una lista de los nombres de las cabeceras que se va a mostrar.
asAtributos -

Una lista de los nombres de las funciones que se vayan a llamar para obtener los datos correspondientes a cada atributo en cada fila.


TableModelGeneral

public TableModelGeneral(java.lang.Object[] aoDatos,
                         java.lang.Object[] aoColumnas)
Constructor del TableModelGeneral al cual se le pasa el array de objetos de los datos que apareceran en la tabla, y ademas otra lista que contendrá listas de los elementos necesarios para cargar el modelo.

Parameters:
aoDatos - Una lista de los objetos de datos que apareceran en la tabla
aoColumnas - Una lista de objetos que nos dira las propiedades de las columnas: aoColumnas[0] = una lista de cadenas que corresponden a las cabeceras de la tabla las cabecera aparecerá en el orden en que aparezca en esta lista aoColumnas[1] = una lista de cadenas que corresponden a los nombres de las funciones que se vayan a llamar para obtener los datos correspondientes a cada atributo en cada fila. aoColumnas[2] = una lista de booleanos que nos dirá si la columna es editable o no. Si este objeto es nulo las celdas no seran editables.
Method Detail

addTableModelListener

public void addTableModelListener(javax.swing.event.TableModelListener tabla)
Specified by:
addTableModelListener in interface javax.swing.table.TableModel
Overrides:
addTableModelListener in class javax.swing.table.AbstractTableModel

setHayOrdenacion

public void setHayOrdenacion(boolean aOrdenacion)

getHayOrdenacion

public boolean getHayOrdenacion()

getEditable

public boolean[] getEditable()

setEditable

public void setEditable(boolean[] abEditable)

getColumnCount

public int getColumnCount()
Devuelve el número de columnas que se va a mostrar en el JTable.

Specified by:
getColumnCount in interface javax.swing.table.TableModel

getRowCount

public int getRowCount()
Devuelve el número de filas que se visualizan en el Jtable.Cuando se va a dibujar el Jtable se dibujaran el numero de filas que devuelva este metodo.

Specified by:
getRowCount in interface javax.swing.table.TableModel
Returns:
El numero de filas que se visualizan en el Jtable.

getAtributo

protected java.lang.Object getAtributo(java.lang.Object aoDatos,
                                       int aiIndice)
Sabiendo la columna del JTable y el nombre del metodo (sin la palabra get por delante) se invocará este metodo (por reflexion) para obtener el valor del atributo en una fila y mostrarlo en el JTable. Primero se busca el método en el propio objeto (dado como argumento), añadiendolo la palabra get. Es decir, si en la posición (columna) correspondiente de los atributos tenemos la palabra "Nombre" (con la primera letra en mayúscula, dado que asi estará escrita en la clase), se buscará en el objeto aoDatos el método getNombre() (haciendo la llamada aoDatos.getNombre()). Si el método no se encuentra en este objeto se buscará en otra clase : Computados. Por ejemplo: Supongamos que en el JTable se mostrará una lista de Paciente. Como cabecera tendremos {"Nombre", "NASS"} y como atributos tendremos {"Nombre", "NassCompleto"}. Para rellenar el Nombre de cada paciente se hará una llamada a getNombre() en el objeto Paciente. Para rellenar el NASS primero se hará una llamada a "getNassCompleto" en el objeto Paciente. Al no encontrarlo aqui lo buscará en la clase "PacienteComputados". Es responsabilidad del programador tener bien escritos los nombres de los métodos. Si no existe alguno de los métodos dados se mostrará un mensaje de error.


setAtributos

public void setAtributos(java.lang.String[] aasAtributos)
actualiza el array de atributos del Modelo de la tabla


getValueAt

public java.lang.Object getValueAt(int aiFila,
                                   int aiColumna)
Este método se llama para dibujar todo el contenido del jtable.

Specified by:
getValueAt in interface javax.swing.table.TableModel
Parameters:
aiFila - La fila a pintar.
aiColumna - La columna a pintar.

getValueAt

public java.lang.Object getValueAt(int aiFila)
Devuelve el valor de la fila indicado como un objeto.

Parameters:
aiFila - La fila de la que se quiere obtener el valor.
Returns:
El valor de la fila indicada.

setValueAt

public void setValueAt(java.lang.Object aoAtributo,
                       int aiFila)
Reemplaza el objeto de la fila indicada con el objeto del argumento

Parameters:
aoAtributo - El valor para la fila indicada
aiFila - La fila reemplazar el valor

setValueAt

public void setValueAt(java.lang.Object aoAtributo,
                       int aiFila,
                       int aiColumna)
Reemplaza el valor de la fila,columna indicada.Este metodo se llama cada vez que se modifica el valor de una columna.

Specified by:
setValueAt in interface javax.swing.table.TableModel
Overrides:
setValueAt in class javax.swing.table.AbstractTableModel
Parameters:
aoAtributo - El nueva valor para la columna
aiFila - La fila
aiColumna - La columna

setAtributo

protected void setAtributo(java.lang.Object aoDatos,
                           int aiFila,
                           int aiColumna)
Actualiza los valores del array de datos con los cambios del JTable


getColumnClass

public java.lang.Class getColumnClass(int aiColumna)
Specified by:
getColumnClass in interface javax.swing.table.TableModel
Overrides:
getColumnClass in class javax.swing.table.AbstractTableModel

getColumnName

public java.lang.String getColumnName(int aiIndice)
Specified by:
getColumnName in interface javax.swing.table.TableModel
Overrides:
getColumnName in class javax.swing.table.AbstractTableModel

isCellEditable

public boolean isCellEditable(int aiFila,
                              int aiColumna)
Specified by:
isCellEditable in interface javax.swing.table.TableModel
Overrides:
isCellEditable in class javax.swing.table.AbstractTableModel

getCabecera

public java.lang.String[] getCabecera()
Devuelve la cabecera de la tabla.

Returns:
String[] una lista de nombres que apareceran en la cabecera de la tabla.

setCabecera

public void setCabecera(java.lang.String[] asCabecera)
Asigna como cabecera de la tabla la lista dada como argumento.

Parameters:
asCabecera - Una lista de nombres que aparecerán en la cabecera.

getObjetos

public java.lang.Object[] getObjetos()
Devuelve un array con todos los objetos(incluido los filtrados) en el mismo orden en el que se mostrarian en el jtable.

Returns:
Todos los objetos(incluidos filtrados).

setObjetos

public void setObjetos(java.lang.Object[] aao)

getListaObjetos

public java.util.ArrayList getListaObjetos()
Devuelve una lista con todos los objetos(incluido los filtrados) en el mismo orden en el que se mostrarian en el jtable.

Returns:
Todos los objetos(incluidos los filtrados)

getObjetosVisibles

public java.lang.Object[] getObjetosVisibles()
Devuelve un array con los objetos que se visualizan en el jtable,en el mismo orden en el que se muestran en el jtable.

Returns:
Todos los objetos que se visualizan.

getListaObjetosVisibles

public java.util.ArrayList getListaObjetosVisibles()
Devuelve un ArrayList con los objetos que se visualizan en el jtable, en el mismo orden en el que se muestran en el jtable.

Returns:
ArrayList con los objetos que se visualizan en el jtable.

ordenar

public void ordenar(int aiColumna)
El método permite ordenar el JTable que tiene como modelo este Table Model para la ordenación se utiliza la columna que recibe como primer parámetro. Solamente se ordenan los datos visibles en cada momento. La ordenación se realiza ascendente y descendente de modo alternativo. Esto quiere decir que si la primera vez se ordenará de modo ascendente y las siguientes veces que se ordene sobre la misma coluna la ordenación irá cambiando

Parameters:
int - aiColumna, Indice de la columna con la que se va a realizar la ordenacion

ordenar

public void ordenar(int aiColumna,
                    int aiTipoOrdenacion)
El método permite ordenar el JTable que tiene como modelo este Table Model para la ordenación se utiliza la columna que recibe como primer parámetro. Solamente se ordenan los datos visibles en cada momento. El tipo de ordenación se correspondera con los valores de las constantes de esta clase.

Parameters:
int - aiColumna, Indice de la columna con la que se va a realizar la ordenacion
int - aiTipoOrdenacion NFCTableModelGeneral.ASCENDENTE o NFCTableModelGeneral.DESCENDENTE

borrarFila

public void borrarFila(int aiFila)
Borra del Jtable la fila indicada en el argumento

Parameters:
aiFila - La fila a borrar en el Jtable

insertarFila

public void insertarFila(java.lang.Object ao)
Inserta una nueva fila con el valor del objeto pasado en el argumento

Parameters:
ao - Objeto a mostrar en la fila insertada

insertarFila

public void insertarFila(java.lang.Object ao,
                         int posicion)

setFiltrados

public void setFiltrados(java.lang.Object[] aoDatosMostrar)
Filtra el Jtable, mostrando solo las filas que tengan el mismo valor que las pasadas en el argumento

Parameters:
aoDatosMostrar - Los datos que se quieren mostrar . Si es null se elimina el filtro mostrando todos los registros. Si no se quiere mostrar ningún registro el filtro que se pasa no tiene ningun elemento, se debe pasar un array[0] y no null

getInsertados

public java.util.HashSet getInsertados()
Devuelve un HashSet con todos los objetos insertados

Returns:
Los objetos insertados

getBorrados

public java.util.HashSet getBorrados()
Devuelve un HashSet con todos los objetos borrados

Returns:
Los objetos borrados

getModificados

public java.util.HashSet getModificados()
Devuelve un HashSet con todos los objetos modificados

Returns:
Los objetos modificados

equals

public boolean equals(java.lang.Object p1)
Siempre se devuelve true

Specified by:
equals in interface java.util.Comparator
Overrides:
equals in class java.lang.Object
Parameters:
p1 - objeto
Returns:
Siempre true

compare

public int compare(java.lang.Object p1,
                   java.lang.Object p2)
Compara los objetos

Specified by:
compare in interface java.util.Comparator
Parameters:
p1 - objeto1
p2 - objeto2
Returns:
1 objeto1>objeto2 , -1 objeto1

resetCambios

public void resetCambios()
La tabla tiene listas para mantener los objetos que se han añadido, borrado y modificado. Con esta función se vacían estas listas de modo que parece que la tabla está en su estado inicial. Se podrá usar por ejemplo para resetear las listas de cambios despues de guardar


getCambios

public boolean getCambios()
Devuelve verdadero si se ha insertado, borrado o actualizdo algún objeto de la tabla. El método resetCambios hace que el valor que devuelve sea false.

Returns:
boolean, true si se ha modificado algo en la tabla, false en caso contrario.

main

public static void main(java.lang.String[] args)