schmitzm.geotools.gui
Class FeatureCollectionTableModel

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by schmitzm.geotools.gui.FeatureCollectionTableModel
All Implemented Interfaces:
Serializable, TableModel
Direct Known Subclasses:
StyledFeatureCollectionTableModel

public class FeatureCollectionTableModel
extends AbstractTableModel

Tabellen-Modell fuer eine FeatureCollection. Aus Effizienzgruenden (um wahlfreien Zugriff zu erreichen) werden die Features beim Aufruf von #setFeatureCollection(FeatureCollection) in ein Array kopiert. Veraenderungen an der zugrunde liegenden FeatureCollection werden somit nicht automatisch in das Tabellen-Modell uebernommen, sondern es ist ein expliziter Aufruf von reorganize() notwendig.
Bis zu diesem Punkt arbeitet diese Tabellen-Modell identisch zum FeatureTableModel von Geotools. Im Gegensatz zu org.geotools.swing.table.FeatureTableModel. werden die Tabellennamen und die Anzahl an Spalten jedoch nicht bei jedem Zugriff neu aus dem ersten SimpleFeature ermittelt, sondern global gespeichert. Dies ist erffizienter, da das haeufige Oeffnen eines FeatureIterators vermieden wird.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
Serialized Form

Field Summary
protected  AttributeTypeFilter attrFilter
          Bestimmt die angezeigten Features
protected  int[] attrIdxForCol
          Speichert den Attribut-Index fuer jede Spalte (wichtig, wenn nicht alle Spalten angezeigt werden!)
protected  Vector<AttributeDescriptor> attrTypes
          Speichert die angezeigten Attribut-Typen.
protected  Class<?>[] colClass
          Spalten-Typen.
protected  String[] colNames
          Spaltennamen.
protected  SimpleFeature[] featureArray
          Array mit den Daten von featureTable.
protected  HashMap<String,Integer> featureIdx
          Speichert die Indexe der Features im TableModel um die Funktion findFeature(SimpleFeature) moeglichst effizient zugestalten.
protected   featureTable
          Holds the feature table that will be represented by this model.
protected static Logger LOGGER
          Logger for debug messages.
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
FeatureCollectionTableModel()
          Erzeugt ein neues (leeres) Tabellen-Modell.
FeatureCollectionTableModel( features)
          Erzeugt ein neues Tabellen-Modell
FeatureCollectionTableModel( features, AttributeTypeFilter attFilter)
          Erzeugt ein neues Tabellen-Modell und setzt gleichzeitig einen Attributfilter.
 
Method Summary
 int findFeature(SimpleFeature f)
          Returns the index of a SimpleFeature in the model.
 AttributeTypeFilter getAttributeFilter()
          Liefert den Filter, der die dargestellten Attribut-Spalten bestimmt.
 Class<?> getColumnClass(int col)
          Liefert die Klasse des SimpleFeature-Attributs.
 int getColumnCount()
          Liefert die Anzahl an Spalten der Tabelle.
 String getColumnName(int col)
          Liefert einen Spaltennamen der Tabelle.
 SimpleFeature getFeature(int row)
          Returns a SimpleFeature of the model.
  getFeatureCollection()
          Liefert die FeatureCollection fuer das Tabellen-Modell.
 SimpleFeature[] getFeaturesAsArray(int[] idx)
          Liefert Features der Tabelle als Array.
  getFeaturesAsCollection(int[] idx)
          Liefert Features der Tabelle als Collection.
 int getRowCount()
          Liefert die Anzahl an Zeilen der Tabelle.
 Object getValueAt(int row, int col)
          Liefert eine Zellen-Wert.
 void reorganize()
          Baut die interne Datenbasis (Array) des Tabellen-Modells neu auf.
protected  void reorganize(boolean fireTableStructureChanged)
          Baut die interne Datenbasis (Array) des Tabellen-Modells neu auf.
 void setAttributeFilter(AttributeTypeFilter attrFilter)
          Setzt den Filter, der die dargestellten Attribut-Spalten bestimmt.
 void setFeatureCollection( features)
          Setzt die FeatureCollection fuer das Tabellen-Modell.
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, isCellEditable, removeTableModelListener, setValueAt
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOGGER

protected static final Logger LOGGER
Logger for debug messages.


featureTable

protected  featureTable
Holds the feature table that will be represented by this model.


featureArray

protected SimpleFeature[] featureArray
Array mit den Daten von featureTable. Wird nur beim Aufruf von reorganize() befuellt.


colNames

protected String[] colNames
Spaltennamen. Wird nur beim Aufruf von reorganize() befuellt.


colClass

protected Class<?>[] colClass
Spalten-Typen. Wird nur beim Aufruf von reorganize() befuellt.


attrFilter

protected AttributeTypeFilter attrFilter
Bestimmt die angezeigten Features


attrTypes

protected Vector<AttributeDescriptor> attrTypes
Speichert die angezeigten Attribut-Typen.


attrIdxForCol

protected int[] attrIdxForCol
Speichert den Attribut-Index fuer jede Spalte (wichtig, wenn nicht alle Spalten angezeigt werden!)


featureIdx

protected HashMap<String,Integer> featureIdx
Speichert die Indexe der Features im TableModel um die Funktion findFeature(SimpleFeature) moeglichst effizient zugestalten. Der Key ist nicht das SimpleFeature, sondern die FeatureID, weil SimpleFeature die equals methode nicht überschreibt.

Constructor Detail

FeatureCollectionTableModel

public FeatureCollectionTableModel()
Erzeugt ein neues (leeres) Tabellen-Modell.


FeatureCollectionTableModel

public FeatureCollectionTableModel( features,
                                   AttributeTypeFilter attFilter)
Erzeugt ein neues Tabellen-Modell und setzt gleichzeitig einen Attributfilter. Das soll zweimaliges reorganizen der Tabelle verhindern.

Parameters:
features - Daten fuer die Tabelle

FeatureCollectionTableModel

public FeatureCollectionTableModel( features)
Erzeugt ein neues Tabellen-Modell

Parameters:
features - Daten fuer die Tabelle
Method Detail

reorganize

public void reorganize()
Baut die interne Datenbasis (Array) des Tabellen-Modells neu auf. Muss aufgerufen werden, damit nachtraegliche Aenderungen an der zugrunde liegenden FeatureCollection in das Tabellenmodell uebernommen werden.


reorganize

protected void reorganize(boolean fireTableStructureChanged)
Baut die interne Datenbasis (Array) des Tabellen-Modells neu auf. Muss aufgerufen werden, damit nachtraegliche Aenderungen an der zugrunde liegenden FeatureCollection in das Tabellenmodell uebernommen werden.

Parameters:
fireTableStructureChanged - bestimmt, ob nach dem Neu-Aufbau ein entsprechendes Event initiiert wird

setFeatureCollection

public void setFeatureCollection( features)
Setzt die FeatureCollection fuer das Tabellen-Modell. Ruft reorganize() auf.
Nachtraegliche Aenderungen an der FeatureCollection werden erst nach erneutem reorganize() in das Tabellen-Modell uebernommen!

Parameters:
features - Daten-Basis fuer die Tabelle

getFeatureCollection

public  getFeatureCollection()
Liefert die FeatureCollection fuer das Tabellen-Modell. Nachtraegliche Aenderungen an der FeatureCollection werden erst nach erneutem reorganize() in das Tabellen-Modell uebernommen!


getAttributeFilter

public AttributeTypeFilter getAttributeFilter()
Liefert den Filter, der die dargestellten Attribut-Spalten bestimmt.


setAttributeFilter

public void setAttributeFilter(AttributeTypeFilter attrFilter)
Setzt den Filter, der die dargestellten Attribut-Spalten bestimmt.

Parameters:
attrFilter - Filter

getColumnCount

public int getColumnCount()
Liefert die Anzahl an Spalten der Tabelle. Entspricht der Anzahl an Attributen der Features.


getColumnName

public String getColumnName(int col)
Liefert einen Spaltennamen der Tabelle. Entspricht den Attributnamen des (ersten) Features der Collection.

Specified by:
getColumnName in interface TableModel
Overrides:
getColumnName in class AbstractTableModel
Parameters:
col - Spalten-Index, beginnend bei 0

getRowCount

public int getRowCount()
Liefert die Anzahl an Zeilen der Tabelle. Entspricht der Anzahl an Features in der Collection.


getValueAt

public Object getValueAt(int row,
                         int col)
Liefert eine Zellen-Wert.

Parameters:
row - Zeilennummer (SimpleFeature), beginnend bei 0
col - Spaltennummer (Attribut), beginnen bei 0

getColumnClass

public Class<?> getColumnClass(int col)
Liefert die Klasse des SimpleFeature-Attributs.

Specified by:
getColumnClass in interface TableModel
Overrides:
getColumnClass in class AbstractTableModel
Parameters:
col - Spaltennummer (Attribut), beginnen bei 0

getFeaturesAsArray

public SimpleFeature[] getFeaturesAsArray(int[] idx)
Liefert Features der Tabelle als Array.

Parameters:
idx - Indizes der FeatureCollection

getFeaturesAsCollection

public  getFeaturesAsCollection(int[] idx)
Liefert Features der Tabelle als Collection.

Parameters:
idx - Indizes der FeatureCollection

getFeature

public SimpleFeature getFeature(int row)
Returns a SimpleFeature of the model.

Parameters:
row - row index

findFeature

public int findFeature(SimpleFeature f)
Returns the index of a SimpleFeature in the model.

Parameters:
f - a feature
Returns:
-1 if the model does not contain the feature