schmitzm.data.property
Class MatrixProperty

java.lang.Object
  extended by schmitzm.data.event.AbstractObjectTraceable
      extended by schmitzm.data.property.Property
          extended by schmitzm.data.property.ValueProperty
              extended by schmitzm.data.property.MatrixProperty
All Implemented Interfaces:
ObjectTraceable, ObjectStructure, Accessible, Properties

public class MatrixProperty
extends ValueProperty

Diese Klasse stellt eine Matrix-Eigenschaft dar, die Objekte eines bestimmten Typs aufnehmen kann. Die Dimension und Groesse der Matrix wird bei der Instanziierung festgelegt und kann nicht geaendert werden.
Der Zugriff auf die Property kann durch Zugriffsrechte kontrolliert werden. Ein Zugriff (lesend oder schreibend) ist nur ueber ein entsprechendes Zugriffsrecht (Access) moeglich. Standardmaessig ist unbegrenzter Zugriff eingestellt. Durch Angabe von ValuePropertyAccessParameters kann jedoch benutzerdefiniert festgelegt werden, wie viele Objekte gleichzeitig Lese- und/oder Schreibzugriff erlangen duerfen.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
ValueProperty.getReadAccess(Object), ValueProperty.getWriteAccess(Object)

Field Summary
protected  Object matrix
          Speichert die Matrix als java.lang.reflect.Array.
protected  String sizeDesc
          Speichert die Groessenangabe der Matrix als String der Form "(d1,d2,d3,...)
 
Fields inherited from class schmitzm.data.property.Property
name, type
 
Constructor Summary
MatrixProperty(String name, int[] size)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, Class elementType)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, Class elementType, ValuePropertyAccessParameters params)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, Object sampleData)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, ObjectStructure sample)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, ObjectStructure sample, ValuePropertyAccessParameters params)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, Object sampleData, ValuePropertyAccessParameters params)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, ValuePropertyAccessParameters params)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, ValuePropertyType elementType)
          Erzeugt eine Matrix-Eigenschaft.
MatrixProperty(String name, int[] size, ValuePropertyType elementType, ValuePropertyAccessParameters params)
          Erzeugt eine Matrix-Eigenschaft.
 
Method Summary
 MatrixProperty cloneStructure()
          Liefert eine neue, leerer MatrixProperty mit identischem Namen, Typ, geleicher Groesse und gleichen Zugriffsparemetern.
 boolean containsMultipleValues()
          Liefert true, da eine Matrix-Eigenschaft immer aus mehreren Werten besteht.
 void dispose()
          Zerstoert die Matrix, indem die auf null gesetzt wird.
 int getDimension()
          Liefert die Dimension der Matrix.
 int[] getSize()
          Liefert die Groesse der Matrix in allen Dimensionen.
 int getSize(int dim)
          Liefert die Groesse der Matrix in einer Dimension.
 String getSizeText()
          Liefert die Groesse der Matrix in allen Dimensionen als Beschreibung.
protected  Object getValue(int... coords)
          Liefert ein Element der Matrix.
protected  void setValue(Object value, int... coords)
          Setzt ein Element der Matrix.
 
Methods inherited from class schmitzm.data.property.ValueProperty
applyAccess, disposeAllAccess, equalsInStructure, getAccessCount, getAccessCount, getAccessParameters, getAttrCount, getAttrTypes, getOneTimeReadAccess, getOneTimeWriteAccess, getPropertyType, getReadAccess, getStructureName, getWriteAccess, isStructureNamed, releaseAccess
 
Methods inherited from class schmitzm.data.property.Property
containsProperty, getName, getProperties, getProperties, getProperty, getPropertyCount, getPropertyNames, getPropertyTypes, getType, hasAccess, hasAccess, isValid
 
Methods inherited from class schmitzm.data.event.AbstractObjectTraceable
addObjectListener, containsObjectListener, createGeneralEvent, fireEvent, fireEvent, fireGeneralEvent, fireGeneralEvent, getObjectListener, isEventFiringEnabled, removeAllObjectListeners, removeObjectListener, setEventFiringEnabled
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

matrix

protected Object matrix
Speichert die Matrix als java.lang.reflect.Array.

See Also:
Array

sizeDesc

protected String sizeDesc
Speichert die Groessenangabe der Matrix als String der Form "(d1,d2,d3,...).

Constructor Detail

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      ValuePropertyType elementType,
                      ValuePropertyAccessParameters params)
Erzeugt eine Matrix-Eigenschaft. Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
elementType - Matrix kann nur Elemente dieses Daten-Typs aufnehmen
params - Parameter fuer die Verwaltung des Zugriffsrechts
See Also:
ValuePropertyAccessParameters

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      ValuePropertyType elementType)
Erzeugt eine Matrix-Eigenschaft. Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben. Der Zugriff auf die Eigenschaft ist uneingeschraengt (beliebig viele Lese- und beliebig viele Schreibrechte).

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
elementType - Matrix kann nur Elemente dieses Daten-Typs aufnehmen
See Also:
ValuePropertyAccessParameters.UNLIMITED_ACCESS

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      Class elementType,
                      ValuePropertyAccessParameters params)
Erzeugt eine Matrix-Eigenschaft. Als Typ kann auch ein Build-in-Type angegeben werden (z.B. int.class). Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
elementType - Matrix kann nur Elemente dieses Daten-Typs aufnehmen
params - Parameter fuer die Verwaltung des Zugriffsrechts
See Also:
ValuePropertyAccessParameters

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      Class elementType)
Erzeugt eine Matrix-Eigenschaft. Als Typ kann auch ein Build-in-Type angegeben werden (z.B. int.class). Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben. Der Zugriff auf die Eigenschaft ist uneingeschraengt (beliebig viele Lese- und beliebig viele Schreibrechte).

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
elementType - Matrix kann nur Elemente dieses Daten-Typs aufnehmen
See Also:
ValuePropertyAccessParameters.UNLIMITED_ACCESS

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      ObjectStructure sample,
                      ValuePropertyAccessParameters params)
Erzeugt eine Matrix-Eigenschaft. Als Typ kann auch ein Build-in-Type angegeben werden (z.B. int.class). Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
sample - Matrix kann nur Elemente dieser Struktur aufnehmen
params - Parameter fuer die Verwaltung des Zugriffsrechts
See Also:
ValuePropertyAccessParameters

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      ObjectStructure sample)
Erzeugt eine Matrix-Eigenschaft. Als Typ kann auch ein Build-in-Type angegeben werden (z.B. int.class). Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben. Der Zugriff auf die Eigenschaft ist uneingeschraengt (beliebig viele Lese- und beliebig viele Schreibrechte).

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
sample - Matrix kann nur Elemente dieser Struktur aufnehmen
See Also:
ValuePropertyAccessParameters.UNLIMITED_ACCESS

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      Object sampleData,
                      ValuePropertyAccessParameters params)
Erzeugt eine Matrix-Eigenschaft. Als Typ kann auch ein Build-in-Type angegeben werden (z.B. int.class). Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
sampleData - Bestimmt die Element-Struktur, die in der MatrixProperty gespeichert werden kann (das Objekt wird nicht in die Matrix aufgenommen!!)
params - Parameter fuer die Verwaltung des Zugriffsrechts
See Also:
ValuePropertyAccessParameters

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      Object sampleData)
Erzeugt eine Matrix-Eigenschaft. Als Typ kann auch ein Build-in-Type angegeben werden (z.B. int.class). Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben. Der Zugriff auf die Eigenschaft ist uneingeschraengt (beliebig viele Lese- und beliebig viele Schreibrechte).

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
sampleData - Bestimmt die Element-Struktur, die in der MatrixProperty gespeichert werden kann (das Objekt wird nicht in die Matrix aufgenommen!!)
See Also:
ValuePropertyAccessParameters.UNLIMITED_ACCESS

MatrixProperty

public MatrixProperty(String name,
                      int[] size,
                      ValuePropertyAccessParameters params)
Erzeugt eine Matrix-Eigenschaft. Als Elemente kann diese saemtliche Objekte aufnehmen, die von java.lang.Object abgeleitet sind (also keine Build-in-Types!!). Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
params - Parameter fuer die Verwaltung des Zugriffsrechts
See Also:
ValuePropertyAccessParameters

MatrixProperty

public MatrixProperty(String name,
                      int[] size)
Erzeugt eine Matrix-Eigenschaft. Als Elemente kann diese saemtliche Objekte aufnehmen, die von java.lang.Object abgeleitet sind (also keine Build-in-Types!!). Die Dimension der Matrix ist implizit durch die Größe des size-Arrays gegeben. Der Zugriff auf die Eigenschaft ist uneingeschraengt (beliebig viele Lese- und beliebig viele Schreibrechte).

Parameters:
name - Name der Eigenschaft
size - Groesse der Matrix in jeder Dimension
See Also:
ValuePropertyAccessParameters.UNLIMITED_ACCESS
Method Detail

dispose

public void dispose()
Zerstoert die Matrix, indem die auf null gesetzt wird.

Overrides:
dispose in class Property

cloneStructure

public MatrixProperty cloneStructure()
Liefert eine neue, leerer MatrixProperty mit identischem Namen, Typ, geleicher Groesse und gleichen Zugriffsparemetern.

Specified by:
cloneStructure in class Property

getValue

protected Object getValue(int... coords)
Liefert ein Element der Matrix. Kann (seit JDK1.5.0) auch genutzt werden, wenn es sich bei der Property um einen Build-in-Type handelt.

Specified by:
getValue in class ValueProperty
Parameters:
coords - Position (Koordinaten) der Matrix
Throws:
UnsupportedOperationException - falls die Anzahl der Koordinaten nicht genau der Matrix-Dimension entspricht

setValue

protected void setValue(Object value,
                        int... coords)
Setzt ein Element der Matrix. Kann (seit JDK1.5.0) auch genutzt werden, wenn es sich bei der Property um einen Build-in-Type handelt.
Iniziiert ein ObjectChangeEvent fuer die Liste.

Specified by:
setValue in class ValueProperty
Parameters:
value - Wert fuer das Matrix-Element
coords - Position (Koordinaten) der Matrix
Throws:
UnsupportedOperationException - falls die Anzahl der Koordinaten nicht genau der Matrix-Dimension entspricht
ClassCastException - falls das angegebene Objekt nicht zum Property-Typ passt

getDimension

public int getDimension()
Liefert die Dimension der Matrix.


getSize

public int getSize(int dim)
Liefert die Groesse der Matrix in einer Dimension.

Parameters:
dim - Index der Dimension (beginnend bei 0)

getSize

public int[] getSize()
Liefert die Groesse der Matrix in allen Dimensionen.


getSizeText

public String getSizeText()
Liefert die Groesse der Matrix in allen Dimensionen als Beschreibung.


containsMultipleValues

public boolean containsMultipleValues()
Liefert true, da eine Matrix-Eigenschaft immer aus mehreren Werten besteht.