edu.bonn.xulu.appl
Class DataPool

java.lang.Object
  extended by AbstractObjectTraceable
      extended by edu.bonn.xulu.appl.DataPool
All Implemented Interfaces:
XuluComponent, XuluConstants

public class DataPool
extends AbstractObjectTraceable
implements XuluComponent

Diese Klasse stellt den Xulu-Datenpool dar, in dem saemtliche (globalen) Daten fuer die Modellierung verwaltet werden.
Die Objekte werden in einer Hashtable verwaltet und sind durch eine eindeutige ID ansprechbar.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Nested Class Summary
static class DataPool.DataPoolChangeEvent
          Diese Ereignis wird erzeugt (und an alle schmitzm.data.event.ObjectListener gesendet), wenn sich der Inhalt des Datenpools aendert (ein Objekt hingefuegt oder entfernt wurde).
 
Field Summary
 
Fields inherited from interface edu.bonn.xulu.appl.XuluConstants
BUG_MAIL_ADDR, EXTENTION_BUNDLE, ICONS_DIR, LOCALES_BASE, RESOURCE_DIR, SWING_RES, VERSION, VERSION_DATE, XULU_ICON, XULU_INFOICON, XULU_STARTICON, XULU_VIS_RES, XULUERR_RES, XULUGUI_RES
 
Constructor Summary
DataPool()
          Erzeugt einen neuen Datenpool.
DataPool(int cap)
          Erzeugt eine neue Datenpool-Instanz.
 
Method Summary
 void addObject(XuluObject object)
          Fuegt dem Datenpool ein Objekt hinzu.
 Enumeration asEnumeration()
          Liefert den Inhalt des Datenpools als Liste.
 boolean contains(long id)
          Prueft, ob im Pool ein Objekt vorhanden ist.
 boolean contains(String name)
          Prueft, ob im Pool ein Objekt vorhanden ist.
 String createUniqueDescription(String baseName)
          Erstellt eine fuer den Datenpool eindeutige Bezeichnung.
 void dispose()
          Zerstoert den Datenpool und alle darin enthaltenen Objekte.
static long generateUniqueID()
          Generiert eine Objekt-ID, die (ueber alle DataPool-Instanzen!)
 boolean getAutoOverwrideDuplicateNames()
          Prueft, ob beim Einfuegen eines neuen Objekte bestehende Objekte mit dem gleichen Namen automatisch aus dem Datenpool entfernt werden (true), oder die Einfuege-Operation zurueckgewiesen wird (false).
 boolean getDuplicateNamesAllowed()
          Prueft, ob sich mehrere Objekte mit demselben Namen im Datenpool befinden duerfen.
 XuluObject getObject(long id)
          Liefert ein Objekt aus dem Datenpool.
 XuluObject[] getObjects(Class type)
          Liefert alle Objekte aus dem Datenpool, die Instanzen eines bestimmten Typs sind.
 XuluObject[] getObjects(String name)
          Liefert Objekte aus dem Datenpool.
 int getSize()
          Liefert die Anzahl an Objekten im Datenpool.
 boolean isDisposed()
          Prueft, ob der Datenpool zerstoert ist.
 void removeObject(long id)
          Entfernt ein Objekt aus dem Datenpool.
 void removeObject(XuluObject object)
          Entfernt ein Objekt aus dem Datenpool.
 void setAutoOverwriteDuplicateNames(boolean autoOverwrite)
          Bestimmt, ob beim Einfuegen eines neuen Objekte bestehende Objekte mit dem gleichen Namen automatisch aus dem Datenpool entfernt werden (true), oder die Einfuege-Operation zurueckgewiesen wird (false).
 void setDuplicateNamesAllowed(boolean duplAllowed)
          Bestimmt, ob sich mehrere Objekte mit demselben Namen im Datenpool befinden duerfen.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DataPool

public DataPool(int cap)
Erzeugt eine neue Datenpool-Instanz.

Parameters:
cap - initiale Kapazitaet des Pools

DataPool

public DataPool()
Erzeugt einen neuen Datenpool. Dieser hat die initiale Groesse von 50 Objekten.

Method Detail

dispose

public void dispose()
Zerstoert den Datenpool und alle darin enthaltenen Objekte.

Specified by:
dispose in interface XuluComponent
See Also:
XuluObject.dispose()

isDisposed

public boolean isDisposed()
Prueft, ob der Datenpool zerstoert ist.

Specified by:
isDisposed in interface XuluComponent
See Also:
dispose()

getSize

public int getSize()
Liefert die Anzahl an Objekten im Datenpool.


asEnumeration

public Enumeration asEnumeration()
Liefert den Inhalt des Datenpools als Liste.


getObject

public XuluObject getObject(long id)
Liefert ein Objekt aus dem Datenpool.

Parameters:
id - ID des Objekts im Datenpool
Returns:
null falls es im Pool kein Objekt mit dieser ID gibt

getObjects

public XuluObject[] getObjects(String name)
Liefert Objekte aus dem Datenpool.

Parameters:
name - Bezeichnung des Objekts im Datenpool
Returns:
ein leerer Array falls es im Pool keine Objekte mit dieser Bezeichnung gibt

getObjects

public XuluObject[] getObjects(Class type)
Liefert alle Objekte aus dem Datenpool, die Instanzen eines bestimmten Typs sind.

Parameters:
type - zu suchende Typ
Returns:
leerer Array, falls es keine solchen Objekte gibt

contains

public boolean contains(long id)
Prueft, ob im Pool ein Objekt vorhanden ist.

Parameters:
id - ID des Objekts

contains

public boolean contains(String name)
Prueft, ob im Pool ein Objekt vorhanden ist.

Parameters:
name - Bezeichnung des Objekts

createUniqueDescription

public String createUniqueDescription(String baseName)
Erstellt eine fuer den Datenpool eindeutige Bezeichnung. Enthaelt der Datenpool bereits ein Objekt mit der angegeben Bezeichnung, wird ein Index an die Bezeichnung angehaengt.

Parameters:
baseName - Basis-Bezeichnung

addObject

public void addObject(XuluObject object)
Fuegt dem Datenpool ein Objekt hinzu. Erzeugt ein DataPoolChangeEvent fuer das neue Objekt.

Throws:
DuplicateXuluObjectIDException - falls im Datenpool bereits ein Objekt mit der gleichen Objekt-ID existiert
DuplicateXuluObjectNameException - falls die Duplikat-Eigenschaft abgeschaltet ist und im Datenpool bereits ein Objekt mit der gleichen Objekt-Beschreibung existiert
See Also:
DataPool.DataPoolChangeEvent.OBJECT_ADDED

removeObject

public void removeObject(XuluObject object)
Entfernt ein Objekt aus dem Datenpool. Erzeugt ein DataPoolChangeEvent fuer das entfernte Objekt. Existiert das Objekt nicht im DatenPool, geschieht nichts (es wird auch kein Event erzeugt).

Parameters:
object - zu entfernendes Xulu-Objekt
See Also:
DataPool.DataPoolChangeEvent.OBJECT_REMOVED

removeObject

public void removeObject(long id)
Entfernt ein Objekt aus dem Datenpool. Erzeugt ein DataPoolChangeEvent fuer das entfernte Objekt. Existiert im DatenPool kein Objekt mit der ID, geschieht nichts (es wird auch kein Event erzeugt).
Bemerke:
Durch das Loeschen des Objekts wird dieses noch nicht zerstoert. Hierdurch kann es einfach in eine andere Datenpool-Instanz eingefuegt werden!

Parameters:
id - ID des Xulu-Objekts im Datenpool
See Also:
DataPool.DataPoolChangeEvent.OBJECT_REMOVED

getDuplicateNamesAllowed

public boolean getDuplicateNamesAllowed()
Prueft, ob sich mehrere Objekte mit demselben Namen im Datenpool befinden duerfen.

See Also:
setAutoOverwriteDuplicateNames(boolean)

setDuplicateNamesAllowed

public void setDuplicateNamesAllowed(boolean duplAllowed)
Bestimmt, ob sich mehrere Objekte mit demselben Namen im Datenpool befinden duerfen.
Wird diese Eigenschaft auf false gesetzt haengt es von der autoOverwriteDuplNames-Eigenschaft ab, ob eine Einfuege-Operation zurueckgewiesen wird, oder das bestehende Objekt automatisch entfernt wird.
Standardwert: false

Parameters:
duplAllowed - wenn true, koennen mehrere Objekte mit demselben Namen im Datenpool vorkommen

getAutoOverwrideDuplicateNames

public boolean getAutoOverwrideDuplicateNames()
Prueft, ob beim Einfuegen eines neuen Objekte bestehende Objekte mit dem gleichen Namen automatisch aus dem Datenpool entfernt werden (true), oder die Einfuege-Operation zurueckgewiesen wird (false). Diese Eigenschaft ist nur relevant, wenn Duplikate verboten sind.
Standardwert: false

See Also:
getDuplicateNamesAllowed()

setAutoOverwriteDuplicateNames

public void setAutoOverwriteDuplicateNames(boolean autoOverwrite)
Bestimmt, ob beim Einfuegen eines neuen Objekte bestehende Objekte mit dem gleichen Namen automatisch aus dem Datenpool entfernt werden (true), oder die Einfuege-Operation zurueckgewiesen wird (false). Diese Eigenschaft ist nur relevant, wenn Duplikate verboten sind.
Standardwert: false

See Also:
setDuplicateNamesAllowed(boolean)

generateUniqueID

public static long generateUniqueID()
Generiert eine Objekt-ID, die (ueber alle DataPool-Instanzen!) eindeutig ist.