de.jsystems.framework.table
Class TableItem

java.lang.Object
  extended byde.jsystems.framework.common.Item
      extended byde.jsystems.framework.table.TableItem
All Implemented Interfaces:
Serializable

public abstract class TableItem
extends Item

Item für eine Tabelle. Da in einer Tabelle die Items etwas anders angezeigt werden benötigt das Model auch einen eigenen Item-Typ. Dieser stellt ein paar mehr Methoden zur Verfügung, damit eine JTable auch mit dem Model arbeiten kann. Das Model fuer eine Tabelle kann nur mit Item-Objekten von diesem Typ arbeiten. Auch bei dieser Item-Klasse wird davon ausgegangen, das abgeleitete Klassen nichts anderes enthalten als Attribute und fuer jedes Attribut eine get- und eine set-Methode. Dabei darf die get-Methode keinen Parameter erwarten und die set-Methode nur einen Parameter, der vom Typ des Attributes ist.

Interessant ist noch das folgende:
Um Einfluss auf die Reihenfolge der Spalten in der Tabelle zu nehmen, reicht es, wenn die entsprechenden get/set-Methoden fuer die einzelnen Attribute in der gewuenschten Reihenfolge im Sourcecode erscheinen. Da auf diese Methoden via Reflection zugegriffen wird und dabei der Aufbau der Sourcen einfach nur abgelesen wird, ergibt dies die Reihenfolge fuer die einzelnen Spalten.

Damit dies bei der Internationalisierung einer Anwendung keine unloesbaren Probleme bereitet, gibt es eine Methode fuer das Mapping zwischen dem Displaynamen und dem technischen Namen.

Version:
1.0
Copyright by Jens Homm 2001 - 2003
Author:
Jens Homm JSYSTEMS
See Also:
Item, Serialized Form

Field Summary
 
Fields inherited from class de.jsystems.framework.common.Item
DISABLE, DISABLE_MUSSFELD, INVISIBLE, INVISIBLE_MUSSFELD, MUSSFELD, STANDARD
 
Constructor Summary
TableItem()
          Erzeugt ein neues Item fuer eine Tabelle.
TableItem(String itemId)
          Erzeugt ein neues Item fuer eine Tabelle.
TableItem(String itemId, String name)
          Erzeugt ein neues Item fuer eine Tabelle.
 
Method Summary
protected  void addColumnName(String name)
          Fügt der Liste für die Spalten einen neuen Namen hinzu.
 int findColumn(String columnName)
          Sucht eine Spalte anhand ihres Namens und gibt den Index der Spalte zurück.
 Class getColumnClass(int columnIndex)
          Gibt den Typ des Attributes fuer die Spalte zurueck.
 int getColumnCount()
          Gibt die Anzahl Columns in diesem Item zurück.
 String getDisplayColumnName(int index)
          Gibt den anzuzeigenden Namen der Spalte am angegebenen Index zurueck.
 String getTechnicalColumnName(int index)
          Gibt den technischen Namen der Spalte am angegebenen Index zurueck.
protected  String mapColumnNames(String technicalName)
          Diese Methode uebernimmt das Mapping zwischen dem technischen Namen einer Spalte (Name des Attributes) und dem Displaynamen (Spaltentext fuer die Oberflaeche).
protected  void registerColumns()
          Registriert alle Attribute eines TableItems als Spaltennamen.
 
Methods inherited from class de.jsystems.framework.common.Item
deepCopy, equals, getItemID, getName, isAttributeEditable, isAttributeMussfeld, isAttributeVisible, registerAttribute, setName, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TableItem

public TableItem()
Erzeugt ein neues Item fuer eine Tabelle. Dieses Item hat eine generierte ID und keinen Namen.


TableItem

public TableItem(String itemId)
Erzeugt ein neues Item fuer eine Tabelle. Dieses Item hat dabei die uebergebene ID. Der Aufrufer muss selbst dafuer sorgen, das diese ID eindeutig ist, da es sonst im Model zu Problemen beim verwalten der Items kommen kann.

Parameters:
itemId - Eine eindeutige Id fuer das Item.

TableItem

public TableItem(String itemId,
                 String name)
Erzeugt ein neues Item fuer eine Tabelle. Dieses Item hat dabei die uebergebene ID und den uebergebenen Namen. Der Aufrufer muss selbst dafuer sorgen, das die uebergebene ID eindeutig ist, da es sonst im Model zu Problemen beim verwalten der Items kommen kann.

Parameters:
itemId - Eine eindeutige Id fuer das Item.
name - Der Name des Items.
Method Detail

addColumnName

protected void addColumnName(String name)
Fügt der Liste für die Spalten einen neuen Namen hinzu. Der Spaltenname muss mit einer zugehörigen get- und set-Methoden korrespondieren. Wenn das Item z.B. ein Attribut namens name hat, dann heissen die zugehörigen get- und set-Methoden getName() und setName(String). Die Spalte heisst somit Name. Dabei ist die Gross-/Kleinschreibung zu beachten. Normalerweise muss diese Methode nicht selbst aufgerufen werden, das uebernimmt die Methode @link #registerColumns()}

Parameters:
name - Der Name fuer die dem Item hinzuzufuegende Spalte.

registerColumns

protected void registerColumns()
Registriert alle Attribute eines TableItems als Spaltennamen. Diese Methode sollte nur einmal aufgerufen werden, nämlich nachdem ein TableItem erzeugt wurde. Gesucht werden hier alle Methoden, die mit 'get' anfangen. Allerdings werden die Methoden der Klassen
  • Object
  • TableItem
    dabei nicht beruecksichtigt. Denn hier gibt es Methoden, die mit 'get' anfangen, aber keine Attribute zurueckliefern, die zum eigentlichen Item gehoeren.
    Im Anschluss an die Ermittlung aller Spalten wird die Methode fuer das Mapping der technischen Namen in die Displaynamen vorgenommen. Fuer jedes vorhandene Attribut wird die Methode mapColumnNames(String) aufgerufen. Die Methode gibt dann die entsprechenden Displaynamen zurueck.

    Throws:
    TableItemFormatException - wenn eine Verletzung der Vereinbarung zum Aufbau eines Items festgestellt wird.

  • getColumnCount

    public int getColumnCount()
    Gibt die Anzahl Columns in diesem Item zurück. Das entspricht der Anzahl Attribute, die ueber eine get-Methode verfuegen.

    Returns:
    Die Anzahl an Attributen im Item.

    getTechnicalColumnName

    public String getTechnicalColumnName(int index)
    Gibt den technischen Namen der Spalte am angegebenen Index zurueck. Falls der Index zu klein (< 0) oder zu gross (>= getColumnCount()) ist wird ein leerer String zurueckgegeben. Der technische Name entspricht dabei dem Namen des entsprechenden Attributs.

    Parameters:
    index - Der Index der Spalte deren Name ermittelt werden soll.
    Returns:
    Der Name der Spalte am Index oder ein Leerstring, wenn es am uebergebenen Index keine Spalte gibt.

    getDisplayColumnName

    public String getDisplayColumnName(int index)
    Gibt den anzuzeigenden Namen der Spalte am angegebenen Index zurueck. Falls der Index zu klein (< 0) oder zu gross (>= getColumnCount()) ist wird ein leerer String zurueckgegeben. Der technische Name entspricht dabei dem Namen des entsprechenden Attributs.

    Parameters:
    index - Der Index der Spalte deren Name ermittelt werden soll.
    Returns:
    Der Name der Spalte am Index oder ein Leerstring, wenn es am uebergebenen Index keine Spalte gibt.

    findColumn

    public int findColumn(String columnName)
    Sucht eine Spalte anhand ihres Namens und gibt den Index der Spalte zurück. Falls es keine Spalte mit diesem Namen gibt wird -1 zurückgegeben.
    Als Name muss hier der Displayname uebergeben werden, nicht der technische Name!
    Die Gross-/Kleinschreibung fuer den Spaltennamen wird hier beruecksichtigt!

    Parameters:
    columnName - Der Name der Spalte, deren Index ermittelt werden soll.
    Returns:
    Der Index der Spalte mit dem uebergebenen Namen oder -1, wenn es keine Spalte mit dem uebergebenen Namen gibt.

    getColumnClass

    public Class getColumnClass(int columnIndex)
    Gibt den Typ des Attributes fuer die Spalte zurueck.

    Parameters:
    columnIndex - Der Index der Spalte deren Typ ausgelesen werden soll.
    Returns:
    Der Typ des Attributes fuer die Spalte.
    Throws:
    TableItemFormatException - wenn eine Verletzung der Vereinbarung zum Aufbau eines Items festgestellt wird.

    mapColumnNames

    protected String mapColumnNames(String technicalName)
    Diese Methode uebernimmt das Mapping zwischen dem technischen Namen einer Spalte (Name des Attributes) und dem Displaynamen (Spaltentext fuer die Oberflaeche). Normalerweise sind beide Namen gleich. Falls aber fuer die Oberflaeche ein anderes Verhalten erwuenscht ist, so muss diese Methode ueberschrieben werden.
    Aufgerufen wird diese Methode von der Methode registerColumns(), nachdem alle Spalten ermittelt wurden.

    Parameters:
    technicalName - Der technische Spaltenname. Das ist der Name des Attributes.
    Returns:
    Der Name, der Anstelle des technischen Namens erscheinen soll.