de.jsystems.framework.common
Class BusinessModel

java.lang.Object
  extended byde.jsystems.framework.common.BusinessModel
All Implemented Interfaces:
IBusinessModelSave
Direct Known Subclasses:
BusinessTableModel, BusinessTreeModel

public class BusinessModel
extends Object
implements IBusinessModelSave

In diesem Model werden alle Daten, die in einer View angezeigt werden sollen verwaltet. Mit Hilfe der zugehörigen Controller werden die Daten aus dem Model in der zugehörigen View angezeigt bzw. aus der View gelesen und im Model abgespeichert. Das abspeichern der Daten passiert hier immer mit Objekten vom Typ Item. Dabei koennen im Model immer nur Objekte vom gleichen Typ verwaltet werden. Dieser Typ wird im Konstruktor des Models festgelegt.

Version:
1.0
Copyright by Jens Homm 2003
Author:
Jens Homm JSYSTEMS

Field Summary
protected static int DIALOG_ABBRUCH
          Dialog wurde mit ABBRECHEN beendet
protected static int DIALOG_OK
          Dialog wurde mit OK beendet
protected  File file
          File-Objekt mit der ausgewählten Datei.
protected  String filename
          Name der Datei, in die/aus der geschrieben/gelesen werden soll.
protected  Class itemclass
          Klasse des Items, das von diesem Modell verwaltet wird.
protected  List itemList
          Vector für die zu speichernden Items.
protected static int OPEN_DIALOG
          Load-Dialog anzeigen
protected  String pathname
          Pfad der Datei.
protected static int SAVE_DIALOG
          Save-Dialog anzeigen
protected  Saver saver
          Hilfsobjekt zum speichern eines Models
 
Constructor Summary
BusinessModel(Class itemclass)
          Erzeugt ein neues Model fuer Objekte vom Typ der uebergebenen Klasse.
 
Method Summary
 void addItem(Item item)
          Fügt der Liste ein neues Item hinzu.
 Item createNewItem()
          Erzeugt ein Item von der Art, wie sie in diesem Model verwaltet werden.
 Item createNewItem(String itemId)
          Erzeugt ein neues Item von der Art, wie sie in diesem Model verwaltet werden.
 Item createNewItem(String itemId, String name)
          Erzeugt ein neues Item von der Art, wie sie in diesem Model verwaltet werden.
 Item getItem(int index)
          Gibt das mit dem Index spezifizierte Item zurück.
 ComboBoxModel getItemComboBox()
          Gibt die Einträge aus dem Model so wieder, das sie in einer ComboBox angezeigt werden können.
 int getItemCount()
          Gibt die Anzahl der items in diesem Model zurück.
 ListModel getItemListBox()
          Gibt die Einträge aus dem Vector so wieder, das sie in einer ListBox angezeigt werden können.
 Item getSaveItem(int index)
          Holt das zu speichernde Item aus dem Model.
 int getSaveItemCount()
          Holt die Anzahl zu speichernder Items aus dem Model.
 void load()
          Laedt den Inhalt einer bestehenden Datei oder Datenbank oder... in das Model.
 void loadItem(Item item)
          Das übergebene Item wird im Model wieder gespeichert.
 void preLoad()
          Aus dem Model werden vor dem neu Laden alle Items gelöscht.
 void removeAllItems()
          Löscht alle Items aus dem Model.
 void removeItem(Item item)
          Löscht das übergebene Item aus der Liste.
 void save_as()
          Speichert den Inhalt des Models in einer bestehenden Datei oder in einer Datenbank oder....
 void save()
          Speichert den Inhalt des Models in einer bestehenden Datei oder in einer Datenbank oder....
 void setSaver(Saver saver)
          Setzt das Speicherobjekt, um den Inhalt des Models in beliebiger Art zu speichern.
protected  int showFileDialogBox(int mode)
          Sollte von den abgeleiteten Klassen in den Methoden
load save save_as
aufgerufen werden.
 void updateItem(Item item)
          Ändert das übergebene Item, indem anhand des uniqueKey-Attributes der Klasse Item das alte gelöscht und das neue an der gleichen Stelle eingefügt wird.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SAVE_DIALOG

protected static final int SAVE_DIALOG
Save-Dialog anzeigen

See Also:
Constant Field Values

OPEN_DIALOG

protected static final int OPEN_DIALOG
Load-Dialog anzeigen

See Also:
Constant Field Values

DIALOG_OK

protected static final int DIALOG_OK
Dialog wurde mit OK beendet

See Also:
Constant Field Values

DIALOG_ABBRUCH

protected static final int DIALOG_ABBRUCH
Dialog wurde mit ABBRECHEN beendet

See Also:
Constant Field Values

itemList

protected List itemList
Vector für die zu speichernden Items.


filename

protected String filename
Name der Datei, in die/aus der geschrieben/gelesen werden soll.


pathname

protected String pathname
Pfad der Datei.


file

protected File file
File-Objekt mit der ausgewählten Datei.


saver

protected Saver saver
Hilfsobjekt zum speichern eines Models


itemclass

protected Class itemclass
Klasse des Items, das von diesem Modell verwaltet wird.

Constructor Detail

BusinessModel

public BusinessModel(Class itemclass)
Erzeugt ein neues Model fuer Objekte vom Typ der uebergebenen Klasse. Der Parameter darf nicht NULL sein. Wenn doch, wird eine IllegalArgumentException ausgeloest.

Parameters:
itemclass - Der Typ der Objekte die in diesem Model verwaltet werden sollen.
Method Detail

createNewItem

public Item createNewItem()
                   throws ItemInstantiateException
Erzeugt ein Item von der Art, wie sie in diesem Model verwaltet werden. Dabei ist es zwingend erforderlich, dass das Item einen Parameterlosen Konstruktor besitzt. Andernfalls kommt es zu einer ItemInstantiateException.

Returns:
Ein neues Item.
Throws:
ItemInstantiateException - wenn ein Fehler beim erzeugen eines Items auftritt.

createNewItem

public Item createNewItem(String itemId)
                   throws ItemInstantiateException
Erzeugt ein neues Item von der Art, wie sie in diesem Model verwaltet werden. Dabei bekommt das Item die uebergebene ID. Der Aufrufer muss selbst dafuer sorgen, das diese ID eindeutig ist, da es sonst zu Problemen bei der Verwaltung des Items im Model kommen kann. Hierbei ist es zwingend erforderlich, dass das zu erzeugende Item einen Konstruktor mit dem Parameter String hat. Andernfalls kommt es hier zu einer ItemInstantiateException.

Specified by:
createNewItem in interface IBusinessModelSave
Parameters:
itemId - Eine eindeutige Id fuer das Item.
Returns:
Ein neues Item.
Throws:
ItemInstantiateException - wenn beim erzeugen des Items ein Fehler auftritt.

createNewItem

public Item createNewItem(String itemId,
                          String name)
                   throws ItemInstantiateException
Erzeugt ein neues Item von der Art, wie sie in diesem Model verwaltet werden. Dabei bekommt das Item die uebergebene ID. Der Aufrufer muss selbst dafuer sorgen, das diese ID eindeutig ist, da es sonst zu Problemen bei der Verwaltung des Items im Model kommen kann. Zusaetzlich wird der Name des Items gesetzt. Hierbei ist es zwingend erforderlich, dass das zu erzeugende Item einen Konstruktor mit dem Parameter String, String hat. Andernfalls kommt es hier zu einer ItemInstantiateException.

Parameters:
itemId - Eine eindeutige Id fuer das Item.
name - Der Name des Items.
Returns:
Ein neues Item.
Throws:
ItemInstantiateException - wenn beim erzeugen des Items ein Fehler auftritt.

setSaver

public void setSaver(Saver saver)
Setzt das Speicherobjekt, um den Inhalt des Models in beliebiger Art zu speichern.

Parameters:
saver - Das Saver-Objekt zum speichern des Models.

getItem

public Item getItem(int index)
Gibt das mit dem Index spezifizierte Item zurück. Falls es am uebergebenen Index kein Item gibt im Modell wird NULL zurueckgegeben.

Parameters:
index - Der Index des auszulesenden Items.
Returns:
das Item am uebergebenen Index oder NULL.

getItemCount

public int getItemCount()
Gibt die Anzahl der items in diesem Model zurück.

Returns:
Die Anzahl Items im Model.

updateItem

public void updateItem(Item item)
Ändert das übergebene Item, indem anhand des uniqueKey-Attributes der Klasse Item das alte gelöscht und das neue an der gleichen Stelle eingefügt wird.

Parameters:
item - Das auszutauschende Item im Model.
See Also:
Item.getItemID()

removeItem

public void removeItem(Item item)
Löscht das übergebene Item aus der Liste. Als Suchkriterum wird der UniqueKey des Items genommen. Falls das uebergebene Item NULL ist passiert nichts weiter.

Parameters:
item - Das zu loeschende Item.
See Also:
Item.getItemID()

removeAllItems

public void removeAllItems()
Löscht alle Items aus dem Model.


addItem

public void addItem(Item item)
Fügt der Liste ein neues Item hinzu. Dabei darf es im Model nicht schon ein Item mit der gleichen ID wie das uebergebene Item geben. Falls es schon ein Item mit dieser ID im Model gibt, so passiert nichts weiter. Schliesslich ist damit das Item eigentlich schon im Model enthalten. Um ein bestehendes Item im Model zu aendern ist die Methode updateItem(Item) aufzurufen. Wenn das uebergebene Item NULL ist passiert nichts.

Parameters:
item - Das dem Model hinzuzufuegende Item.

save

public void save()
          throws Exception
Speichert den Inhalt des Models in einer bestehenden Datei oder in einer Datenbank oder.... Die konkrete Art der Speicherung ist abhängig vom anhängenden Saver-Objekt. Falls noch nie gespeichert wurde, wird eine Dateiauswahldialogbox angezeigt. Dann wird die Methode Saver.save() im Saver-Objekt aufgerufen. Wenn kein Saver-Objekt im Model gesetzt ist oder keine Daten im Model vorhanden sind passiert nichts.

Throws:
Exception - wenn beim Speichern ein Fehler aufgetreten ist.
See Also:
setSaver(de.jsystems.framework.common.saver.Saver), showFileDialogBox(int)

save_as

public void save_as()
             throws Exception
Speichert den Inhalt des Models in einer bestehenden Datei oder in einer Datenbank oder.... Die konkrete Art der Speicherung ist abhängig vom anhängenden Saver-Objekt. Zur Auswahl des Dateinamens und des Pfades wird eine Dateidialogbox angezeigt. Dann wird die Methode Saver.save() im Saver-Objekt aufgerufen. Wenn kein Saver-Objekt im Model gesetzt ist oder keine Daten im Model vorhanden sind passiert nichts.

Throws:
Exception - wenn beim speichern ein Fehler auftritt.
See Also:
setSaver(de.jsystems.framework.common.saver.Saver), showFileDialogBox(int)

load

public void load()
          throws Exception
Laedt den Inhalt einer bestehenden Datei oder Datenbank oder... in das Model. Von wo konkret geladen wird ist abhaengig vom anhaengenden Saver-Objekt. Zum auswählen der gewünschten Datei wird ein Dateidialogbox angezeigt. Dann wird die Methode Saver.load() im Saver-Objekt aufgerufen. Wenn kein Saver-Objekt im Model gesetzt ist passiert nichts.

Throws:
Exception - wenn beim laden ein Fehler auftritt.
See Also:
setSaver(de.jsystems.framework.common.saver.Saver), showFileDialogBox(int)

getItemComboBox

public ComboBoxModel getItemComboBox()
Gibt die Einträge aus dem Model so wieder, das sie in einer ComboBox angezeigt werden können. Dazu wird ein DefaulComboBoxModel mit den Daten gefüllt. Hierbei wird dann fuer jeden Eintrag in der ComboBox-Liste die Methode toString() des Items aufgerufen.

Returns:
Ein ComboBoxModel mit den Daten des Models.

getItemListBox

public ListModel getItemListBox()
Gibt die Einträge aus dem Vector so wieder, das sie in einer ListBox angezeigt werden können. Dazu wird ein DefaultListModel mit den Daten gefüllt. Hierbei wird dann fuer jeden Eintrag in der Liste die Methode toString() des Items aufgerufen.

Returns:
Ein ListModel mit den Daten des Models.

showFileDialogBox

protected int showFileDialogBox(int mode)
Sollte von den abgeleiteten Klassen in den Methoden
  • load
  • save
  • save_as
    aufgerufen werden. Nachdem in der angezeigen Dialogbox eine Datei ausgewählt wurde bzw. ein neuer Dateiname angelegt wurde, sind die Attribute file, filename und pathname gefüllt mit den gewaehlten Werten. Diese koennen dann zum Beispiel im gesetzten Saver-Objekt gesetzt werden.

    Parameters:
    mode - Der Modus des Dateiauswahldialoges(SAVE oder LOAD).
    Returns:
    DIALOG_OK, wenn der Dialog nicht abgebrochen wurde. Die Properties file, filename und filepath sind gefüllt. DIALOG_ABBRUCH, wenn der Dialog abgebrochen wurde. Die Properties file, filename und filepath sind gelöscht(NULL bzw. Leerstring).

  • getSaveItemCount

    public int getSaveItemCount()
    Holt die Anzahl zu speichernder Items aus dem Model.

    Specified by:
    getSaveItemCount in interface IBusinessModelSave
    Returns:
    Die Anzahl zu speichernder Items im Model.

    getSaveItem

    public Item getSaveItem(int index)
    Holt das zu speichernde Item aus dem Model.

    Specified by:
    getSaveItem in interface IBusinessModelSave
    Parameters:
    index - Der Index des zu speichernden Items.
    Returns:
    Das Item am spezifizierten Index.

    loadItem

    public void loadItem(Item item)
    Das übergebene Item wird im Model wieder gespeichert.

    Specified by:
    loadItem in interface IBusinessModelSave
    Parameters:
    item - Das dem Model hinzuzufügendes Item.

    preLoad

    public void preLoad()
    Aus dem Model werden vor dem neu Laden alle Items gelöscht. Sonst wären alte und neue Items gemischt vorhanden. Diese Methode sollte von den Saver-Implementierungen vor dem Laden immer aufgerufen werden um zu verhindern, das alte und neue Daten gleichzeitig im Model vorhanden sind.

    Specified by:
    preLoad in interface IBusinessModelSave