edu.bonn.xulu.data
Class AbstractXuluObject

java.lang.Object
  extended by AbstractObjectTraceable
      extended by edu.bonn.xulu.data.AbstractXuluObject
All Implemented Interfaces:
XuluComponent, XuluConstants, XuluObject
Direct Known Subclasses:
DynamicXuluObject, GridList, SingleFeatureCollection, SingleGrid

public abstract class AbstractXuluObject
extends AbstractObjectTraceable
implements XuluObject

Diese Klasse bildet die Basisimplementierung eines Xulu-Datenobjekts. Diese stellen die Objekte dar, die im Xulu-Datenpool verwaltet werden koennen. AbstractXuluObject ist fest aus einer Menge an Properties zusammengesetzt, welche in einem schmitzm.data.property.PropertySet verwaltet werden. Diese sind von der jeweiligen Implementierung (im Konstruktor) festzulegen. Moeglichkeiten, dynamisch Eigenschaften hinzufuegen oder zu entfernen besteht nicht. Hierzu kann DynamicXuluObject genutzt werden.
Jedes Xulu-Datenobjekt erhaelt (automatisch) bei der Erzeugung eine ID, mit der es im Datenpool (sogar ueber alle Datenpool-Instanzen!) eindeutig identifiziert werden kann (DataPool.generateUniqueID()).

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

Field Summary
protected  ObjectListener propertyChangeListener
          Lauscht auf Aenderungen an den Properties und propagiert diese an alle Listener auf dem XuluObject weiter
protected  PropertySet propSet
          Speichert die Eigenschaften des Xulu-Objekts.
 
Fields inherited from interface edu.bonn.xulu.data.XuluObject
PROP_STYLE
 
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
AbstractXuluObject()
          Erzeugt eine neue XuluObject-Instanz.
AbstractXuluObject(String desc)
          Erzeugt eine neue XuluObject-Instanz.
 
Method Summary
 boolean containsMultipleValues()
          Liefert false, da ein Xulu-Objekt von jeder Eigenschaft immer nur eine Instanz enthaelt.
 boolean containsProperty(String name)
          Prueft, ob das Xulu-Objekt eine bestimmte Eigenschaft enthaelt.
 void dispose()
          Zerstoert das Xulu-Objekt, indem alle seine Properties zerstoert werden.
 boolean equalsInStructure(Object object)
          Vergleicht die Struktur der Property mit einer anderen auf Gleichheit.
 int getAttrCount()
          Liefert die Anzah1 an Properties des Xulu-Objekt.
 Enumeration<ObjectStructure> getAttrTypes()
          Liefert eine Liste, in der genau so viele Elemente enthaelt, wie das Xulu-Objekt Eigenschaften hat.
 String getDescription()
          Liefert die Beschreibung des Xulu-Objekts fuer den Datenpool.
 long getID()
          Liefert die ID, mit der das Objekt in allen Datenpools eindeutig angesprochen werden kann.
 String getName()
          Liefert die Beschreibung des Xulu-Objekts fuer den Datenpool.
 Property[] getProperties()
          Liefert die Eigenschaften des Xulu-Objekts als Array.
 Properties getProperties(Class type)
          Liefert alle Eigenschaften des Xulu-Objekts, die einem bestimmten Typ angehoeren.
 Property getProperty(String name)
          Liefert eine bestimmte Eigenschaft des Xulu-Objekts.
 int getPropertyCount()
          Liefert die Anzahl an Eigenschaften des Xulu-Objekts.
 String[] getPropertyNames()
          Liefert die Namen aller Eigenschaften des Xulu-Objekts.
 PropertyType[] getPropertyTypes()
          Liefert die Typen aller Eigenschaften des Xulu-Objekts.
 String getStructureName()
          Liefert die Bezeichnung des Xulu-Objekts.
 boolean isAccessed()
          Prueft, ob aktuell auf eine Property des Xulu-Objekts zugegriffen wird.
 boolean isDisposed()
          Prueft, ob das Objekt zerstoert ist.
 boolean isStructureNamed()
          Liefert true.
 void setDescription(String desc)
          Setzt die Beschreibung des Xulu-Objekts fuer den Datenpool.
 void setName(String desc)
          Setzt die Beschreibung des Xulu-Objekts fuer den Datenpool.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

propSet

protected final PropertySet propSet
Speichert die Eigenschaften des Xulu-Objekts. Darf nicht mit einem neuen PropertySet belegt werden (final), da es mit einem ObjectListener belegt wurde, der auf Aenderungen an dem PropertySet reagiert (jeder hinzugefuegten Eigenschaft wird ein ObjectListener hinzugefuegt, damit das XuluObject Aenderungen an seinen Properties mitbekommt und ggf. weiterleiten kann).


propertyChangeListener

protected ObjectListener propertyChangeListener
Lauscht auf Aenderungen an den Properties und propagiert diese an alle Listener auf dem XuluObject weiter

Constructor Detail

AbstractXuluObject

public AbstractXuluObject(String desc)
Erzeugt eine neue XuluObject-Instanz.

Parameters:
desc - Beschreibung, welche im Datenpool angezeigt wird (wird null uebergeben, wird eine Standardbeschreibung erzeugt)

AbstractXuluObject

public AbstractXuluObject()
Erzeugt eine neue XuluObject-Instanz. Diese erhaelt eine Default-Beschreibung, bestehend aus dem Klassennamen und einer laufenden Nummer.

Method Detail

getDescription

public String getDescription()
Liefert die Beschreibung des Xulu-Objekts fuer den Datenpool.

Specified by:
getDescription in interface XuluObject

setDescription

public void setDescription(String desc)
Setzt die Beschreibung des Xulu-Objekts fuer den Datenpool. Aendert sich der Name, wird ein NameChangeEvent an alle Listener weitergeleitet.

Specified by:
setDescription in interface XuluObject
Parameters:
desc - Beschreibung fuer das Objekt

getName

public String getName()
Liefert die Beschreibung des Xulu-Objekts fuer den Datenpool. Synonym fuer getDescription().


setName

public void setName(String desc)
Setzt die Beschreibung des Xulu-Objekts fuer den Datenpool. Synonym fuer setDescription(String).

Parameters:
desc - Beschreibung fuer das Objekt

getID

public long getID()
Liefert die ID, mit der das Objekt in allen Datenpools eindeutig angesprochen werden kann.

Specified by:
getID in interface XuluObject

dispose

public void dispose()
Zerstoert das Xulu-Objekt, indem alle seine Properties zerstoert werden. Unterklassen sollten diese Methode ueberschreiben, wenn weitere Ressourcen bei der Zerstoerung des Objekts oder seiner Propertys notwendig sind!!

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

isDisposed

public boolean isDisposed()
Prueft, ob das Objekt zerstoert ist.

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

isAccessed

public boolean isAccessed()
Prueft, ob aktuell auf eine Property des Xulu-Objekts zugegriffen wird.

Specified by:
isAccessed in interface XuluObject
Returns:
boolean

getPropertyCount

public int getPropertyCount()
Liefert die Anzahl an Eigenschaften des Xulu-Objekts.


getProperties

public Property[] getProperties()
Liefert die Eigenschaften des Xulu-Objekts als Array.


getProperties

public Properties getProperties(Class type)
Liefert alle Eigenschaften des Xulu-Objekts, die einem bestimmten Typ angehoeren. Als Typ kann sowohl ein bestimmter Property-Untertyp angegeben werden (z.B. schmitzm.data.property.ListProperty), als auch ein Objekt-Typ (Typ den eine Property aufnehmen kann; z.B. int.class).
Da die Methode wiederum eine Properties-Instanz liefert, lassen sich recht einfach verschiedene Filter hintereinander anwenden:

Properties.getProperties(ListProperty.class).getProperties(int.class).getPropertyNames()

liefert z.B. die Namen aller Listen-Eigenschaften, die int-Werte aufnehmen koennen.


getPropertyNames

public String[] getPropertyNames()
Liefert die Namen aller Eigenschaften des Xulu-Objekts.


getPropertyTypes

public PropertyType[] getPropertyTypes()
Liefert die Typen aller Eigenschaften des Xulu-Objekts.


getProperty

public Property getProperty(String name)
Liefert eine bestimmte Eigenschaft des Xulu-Objekts.

Parameters:
name - Name der Eigenschaft
Returns:
null falls das Xulu-Objekt keine Eigenschaft dieses Namens enthaelt

containsProperty

public boolean containsProperty(String name)
Prueft, ob das Xulu-Objekt eine bestimmte Eigenschaft enthaelt.

Parameters:
name - Name der Eigenschaft

isStructureNamed

public boolean isStructureNamed()
Liefert true.


getStructureName

public String getStructureName()
Liefert die Bezeichnung des Xulu-Objekts.

See Also:
getDescription()

getAttrCount

public int getAttrCount()
Liefert die Anzah1 an Properties des Xulu-Objekt.

See Also:
getPropertyCount()

getAttrTypes

public Enumeration<ObjectStructure> getAttrTypes()
Liefert eine Liste, in der genau so viele Elemente enthaelt, wie das Xulu-Objekt Eigenschaften hat. Alle Listen-Elemente sind vom Typ ObjectStructure.


equalsInStructure

public boolean equalsInStructure(Object object)
Vergleicht die Struktur der Property mit einer anderen auf Gleichheit.

Parameters:
object - eine anderes ObjectStructure-Objekt
See Also:
ValuePropertyType#equalsInStructure(Object)

containsMultipleValues

public boolean containsMultipleValues()
Liefert false, da ein Xulu-Objekt von jeder Eigenschaft immer nur eine Instanz enthaelt.