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.gui.swing.table.FeatureTableModel. werden die Tabellennamen und die Anzahl an Spalten jedoch nicht bei jedem Zugriff neu aus dem ersten Feature 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<AttributeType> attrTypes
          Speichert die angezeigten Attribut-Typen.
protected  Class<?>[] colClass
          Spalten-Typen.
protected  String[] colNames
          Spaltennamen.
protected  Feature[] featureArray
          Array mit den Daten von featureTable.
protected  HashMap<String,Integer> featureIdx
          Speichert die Indexe der Features im TableModel um die Funktion findFeature(Feature) moeglichst effizient zugestalten.
protected  FeatureCollection featureTable
          Holds the feature table that will be represented by this model.
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
FeatureCollectionTableModel()
          Erzeugt ein neues (leeres) Tabellen-Modell.
FeatureCollectionTableModel(FeatureCollection features)
          Erzeugt ein neues Tabellen-Modell.
 
Method Summary
 int findFeature(Feature f)
          Returns the index of a Feature in the model.
 AttributeTypeFilter getAttributeFilter()
          Liefert den Filter, der die dargestellten Attribut-Spalten bestimmt.
 Class<?> getColumnClass(int col)
          Liefert die Klasse des Feature-Attributs.
 int getColumnCount()
          Liefert die Anzahl an Spalten der Tabelle.
 String getColumnName(int col)
          Liefert einen Spaltennamen der Tabelle.
 Feature getFeature(int row)
          Returns a Feature of the model.
 FeatureCollection getFeatureCollection()
          Liefert die FeatureCollection fuer das Tabellen-Modell.
 Feature[] getFeaturesAsArray(int[] idx)
          Liefert Features der Tabelle als Array.
 FeatureCollection 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(FeatureCollection 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

featureTable

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


featureArray

protected Feature[] 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<AttributeType> 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(Feature) moeglichst effizient zugestalten. Der Key ist nicht das Feature, sondern die FeatureID, weil Feature die equals methode nicht überschreibt.

Constructor Detail

FeatureCollectionTableModel

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


FeatureCollectionTableModel

public FeatureCollectionTableModel(FeatureCollection 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(FeatureCollection 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 FeatureCollection 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 (Feature), beginnend bei 0
col - Spaltennummer (Attribut), beginnen bei 0

getColumnClass

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

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

getFeaturesAsArray

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

Parameters:
idx - Indizes der FeatureCollection

getFeaturesAsCollection

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

Parameters:
idx - Indizes der FeatureCollection

getFeature

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

Parameters:
row - row index

findFeature

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

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