de.jdataset
Class JDataSet

java.lang.Object
  extended by de.jdataset.JDataSet
All Implemented Interfaces:
RowContainer, java.io.Serializable

public final class JDataSet
extends java.lang.Object
implements java.io.Serializable, RowContainer

Ein DataSet ist ein generisches Transfermodell für verteilte Anwendungen.

Üblicherweise wird ein DataSet von einem Persistenz-Layer erzeugt und an den Client übertragen.
Der Client nimmt Änderungen, Ergänzungen an den Daten vor und schickt die so veränderte Struktur zurück an den Persistenz-Layer.
Dort werden die Informationen gemäß den vorgenommenen Änderungen in die Datenbank geschrieben, bzw. aus ihr gelöscht.
Die Oberfläche des Client sollte ein Binding an dieses Modell ermöglichen.

Ein DataSet umfaßt sowohl Informationen über die Datenstruktur (Tabellen, Relationen, Columns) als auch die Daten selbst in Form von Zeilen und der Werte.

Metadaten

Ein DataSet kann eine oder mehrere Wurzel-Tabellen beinhalten. Ein Tabelle (JDataTable) hält zur Information über ihre Struktur eine Liste von JDataColums. Jede Tabelle kann gemäß der Datenstruktur Child- und Parent-Tables halten.

Gemäß dieser Datenstruktur nehmen die Tabellen in einem DataSet verschiedene Rollen ein:

Daten

Ähnlich der definierten Tabellenstruktur hält der DataSet eine Liste von Tabellen-Zeilen (JDataRow). Diese Tabellenzeilen können Child- und Parent Rows halten; gemäß der definierten Tabellen-Struktur.
Eine DataRows besteht wiederum für jede definierte Spalte aus einer entsprechenden Menge von Werten (JDataValue).

Gemäß der definierten DatenStruktur nimmt eine DataRow eine die entsprechende Rolle ein:

Dieser DataSet kann als XML-Document serialisiert und wieder erzeugt werden.

Package Diagram

Class Diagram

Zugriff auf Daten über Pfad-Notation

Das "Druchhangeln" über die Child und Parent Tables zu dem gewünschten Feld kann umständlich und unübersichtlich werden. Zu diesem Zweck gibt es einige Methoden, die über eine Path-Notation die gewünschten Informationen liefern.

Hierbei wird der Pfad zu dem gewünschten Objekt über die Child und Parent Referenzen gebildet, durch einen Delimiter getrennt.
Beispiel:
adresse.person#funktion@bezeichnung
Es wird die Column "bezeichnung" aus der Tabelle "funktion" geliefert, wobei "funktion" eine Parent Table von "person" ist und "person eine Child Table von "adresse".

Ein "." liefert also eine Child Table,
ein "#" eine Parent Table
und "@" am Ende den Feldnamen.

"." und "#" dürfen dabei beliebig häufig vorkommen, "@" naturgemäß nur einmal am Ende, wobei "@" auf weggelassen werden kann, wenn auf eine Table oder Row zugegriffen werden soll.

Die Notation unterscheidet sich, wenn auf die Struktur des Dataset oder seine Daten zugegriffen wird:
Child Rows können ihrer Natur nach mehrfach vorhanden sein; um auf sie zuzugreifen muß ggf. ihr Index angegeben werden:
adresse[4].person[15]#funktion@bezeichnung
Die Angaben "[n]" sind 0-relativ. Wird kein Index angegeben, wird "0" angenommen.

Getter und Setter

Auch wenn intern alle Daten als String gespeichert werden, gibt es eine Reihe von Methoden die den Umgang mit Objekten und Primitiv-Daten-Typen erleichern.

Beim Datentyp Object ist zu beachten, dass dieses dem Datentyp der Column entsprechen muß.

See Also:
getDataTablePath(java.lang.String), getDataColumnPath(java.lang.String), getDataRowPath(java.lang.String), getValuePath(java.lang.String), setValuePath(java.lang.String, java.lang.String), Serialized Form

Nested Class Summary
static class JDataSet.ProfileEntry
           
 
Constructor Summary
JDataSet()
          Deprecated. For serialization purpose only.
JDataSet(electric.xml.Document doc)
          Erzeugt einen DataSet aus einem XML-Document.
JDataSet(java.lang.String name)
          Erzeugt einen leeren DataSet.
 
Method Summary
 void addChildRow(JDataRow row)
          Fügt eine Root-Row hinzu.
 void addChildRow(JDataRow row, int index)
          Fügt eine ChildRow an dem entsprechenden Index ein.
 JDataRow addChildRowPath(java.lang.String path)
          Fügt eine Zeile am angegebenen Pfad ein.
 void addRootTable(JDataTable tbl)
          Fügt dem DataSet eine neue Wurzeltabelle hinzu.
 JDataRow addRow()
          Deprecated.  
 void addRow(JDataRow row)
          Deprecated.  
 JDataRow addRow(java.lang.String refname)
          Deprecated.  
 void commitChanges()
          Alle Kennzeichnungen von inserted und modified werden zurückgesetzt.
 void create(electric.xml.Document doc)
          Deprecated. For serialization purpose only.
 void create(java.lang.String s)
          Deprecated. For serialization purpose only.
 JDataRow createChildRow()
          Fügt dem DataSet eine neue leere Zeile hinzu.
 JDataRow createChildRow(java.lang.String refname)
          Fügt der angegebenen Root Table dieses Dataset eine neue leere Zeile hinzu.
static JDataSet CSV2Dataset(java.lang.String dsName, java.lang.String csv)
          Erzeugt aus einem Dataset-Namen und einem CSV-File in dem in der ersten Zeile die Feldnamen stehen und in der zweiten Zeile die Feldtypen einen Dataset und eine DataTable mit dem angegebenen Namen und DataRows mit den folgenden Werten.
 long endProfiler()
          Mißt die seit dem start vergangene Zeit.
 JDataSet getChanges()
          Liefert einen DataSet der nur die DataRows enthält, die verändert wurden; also inserted, delete, modified.
 JDataSet getChangesPersistent()
           
 JDataRow getChildRow(int index)
          Liefert die WurzelZeile aus dem DataSet mit dem angegebenen Index (0-relativ).
 JDataRow getChildRow(java.lang.String refname, int index)
          Liefert die Child Row zu der angegebenen Tabelle mit dem angegegeben Index (0-relativ).
 JDataRow getChildRow(java.lang.String refname, java.lang.String arg)
          Findet die ChildRow bei der die angegebene Spalte den angegebenen Wert hat (im Format name=value)
 java.util.Iterator<JDataRow> getChildRows()
          Liefert den Iterator für die Root Rows oder null, wenn keine Rows vorhanden.
 java.util.Collection<JDataRow> getChildRows(DataView view)
          Liefert eine unmodifiable Collection von DataRows, die durch den DataView entsprechend gefiltert und/oder sortiert sind.
 java.util.Iterator<JDataRow> getChildRows(java.lang.String tablename)
          Liefert einen Iterator über alle Root Rows zu der angegebenen Table.
 java.lang.String getDatabaseName()
           
 JDataColumn getDataColumnPath(java.lang.String path)
          Liefert die DataColumn mit dem angegebenen Pfad in der Notation root[x].child1[y].child2[z]#parent1#parent2@column1
 JDataRow getDataRowPath(java.lang.String path)
          Liefert die DataRow mit dem angegebenen Pfad.
 java.util.Iterator<JDataRow> getDataRowsPath(java.lang.String path)
          Liefert die Child Rows mit dem angegebenen Pfad.
 java.lang.String getDatasetName()
          Beim Einsatz eines Persistenz-Layers dient dieser Name der Identifikation des Dataset-Typs.
 JDataTable getDataTable()
          Liefert die Wurzel-Tabelle.
 JDataTable getDataTable(java.lang.String name)
          Liefert eine Wurzel-Tabelle aus dem Dataset unter Angabe ihres Namens.
 JDataTable getDataTablePath(java.lang.String path)
          Liefert die DataTable mit dem angegebenen Pfad.
 java.util.Iterator<JDataTable> getDataTables()
          Liefert den Iterator auf die Root Tables.
 JDataValue getDataValuePath(java.lang.String path)
          Liefert den DataValue mit dem angegebenen Pfad in der Notation root[x].child1[y].child2[z]#parent1#parent2@column1
 long getOid()
           
 java.util.ArrayList<JDataSet.ProfileEntry> getProfiler()
          Liefert die Profiling-Daten
 JDataRow getRow()
          Liefert die WurzelZeile aus dem DataSet.
 JDataRow getRow(int index)
          Deprecated.  
 int getRowCount()
          Liefert die Anzahl der Rows der RootTable.
 int getRowCount(java.lang.String tablename)
          Liefert die Anzahl der Rows zu der angegebenen Tabelle.
 java.util.Iterator<JDataRow> getRows()
          Deprecated.  
 java.util.Iterator<JDataRow> getRows(NVPair condition)
          Deprecated.  
 java.util.Iterator<JDataRow> getRows(java.lang.String refname)
          Deprecated.  
 int getSize()
          Liefert die (ungefähre) Größe des Objects (ObjectOutputStream)
 java.lang.String getUsername()
           
 java.lang.String getValidationError()
          Liefert eine Auflistung von Fehlern zurück, die nach der Validierung festgestellt wurden.
 java.util.Date getValueDatePath(java.lang.String path)
           
 java.util.Date getValueDatePath(java.lang.String path, java.util.Date defaultValue)
           
 int getValueIntPath(java.lang.String path)
           
 int getValueIntPath(java.lang.String path, int defaultValue)
           
 long getValueLongPath(java.lang.String path)
           
 long getValueLongPath(java.lang.String path, long defaultValue)
           
 java.lang.String getValuePath(java.lang.String path)
          Liefert den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1
 java.lang.String getValuePath(java.lang.String path, java.lang.String defaultValue)
          Liefert den Wert des angegebene Feldes oder wenn diese null, den übergebenen DefaultValue
 java.lang.String getWarning()
           
 electric.xml.Document getXml()
          Liefert den DataSet als XML-Document.
 electric.xml.Document getXml(boolean bProfile)
           
 electric.xml.Document getXml(boolean bProfile, java.lang.String encoding)
           
 electric.xml.Document getXml(java.lang.String encoding)
           
 boolean hasChangeProtocol()
          Gibt an, ob eine der Root-Tables des DataSet ein Änderungsprotokoll haben
 boolean hasChanges()
          Liefert true, wenn sich irgendeine DataRow des DataSet geändert hat (inserted, deleted, modified).
 boolean hasChangesPersistent()
           
 boolean isDatasetTableObject(JDataTable tbl)
          Es wird geprüft, ob das übergebene DataTable-Object in irgendeiner Form Bestandteil dieses Dataset ist.
 boolean isEmpty()
          Liefert true, wenn der DataSet keine DataRows enthält (wohl aber beliebige Metadaten)
 boolean isReadonly()
           
 boolean isRootTable(JDataTable tbl)
          Prüft, ob die angegebene Tabelle eine Wurzel-Tabelle des DataSet ist.
 boolean isVerified()
          Liefert das Ergebnis von verify().
 void merge(JDataSet ds)
          Mischt einen Dataset hinzu; dabei werden die RootTables und RootRows aus dem angegebenen Dataset übernommen.
 void resetErrorState()
           
 void resetProfiler()
          Löscht die bisher aufgelaufenen Profiling-Daten.
 void rollbackChanges()
          Macht alle getätigten Änderungen seit dem letzten Commit wieder rückgängig.
 void rollbackVersion(java.lang.String fieldName)
          Setzt den Zähler für das optimistische Locking wieder zurück (für JounalDirectory)
 void setDatabaseName(java.lang.String databaseName)
           
 void setDatasetName(java.lang.String name)
          Der Name des DataSet, wie in DatabaseConfig.xml spezifiziert.
 void setDeleted(boolean b)
          Löscht alle vom DataSet gehaltenen Rows.
 void setInserted(boolean b)
          Setzt alle vom DataSet gehaltenen Rows auf "inserted".
 void setOid(long oid)
          Es kann ein beliebiger Wert gesetzt werden, der von diesem Framework selbst nie benutzt wird.
 void setReadonly(boolean readonly)
           
 void setUsername(java.lang.String username)
          Setzt den Usernamen für diesen Dataset.
 java.lang.String setValuePath(java.lang.String path, boolean value)
          Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1
 java.lang.String setValuePath(java.lang.String path, java.util.Date value)
          Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1
 java.lang.String setValuePath(java.lang.String path, int value)
          Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1
 java.lang.String setValuePath(java.lang.String path, long value)
          Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1
 java.lang.String setValuePath(java.lang.String path, java.lang.Object value)
          Die Konvertierung nach String hängt vom Sql-DatenTyp ab.
 java.lang.String setValuePath(java.lang.String path, java.lang.String value)
          Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1
 void setVerified(boolean verified)
           
 void setWarning(java.lang.String warning)
          Es kann ein beliebiger Wert gesetzt werden, der von diesem Framework selbst nie benutzt wird.
 java.util.Vector<JDataSet> split()
          Teilt ein Dataset, welches mehrere RootTables enthält.
 int startProfiler(java.lang.String name)
          Startet den Profiler unter Angabe eines eindeutigen Namens.
static JDataSet toDataset(java.lang.Object o)
          Erzeugt aus dem übergebenen Object einen DataSet.
 void toObject(java.lang.Object o)
          Weist die Werte aus diesem DataSet dem übergebenen Object zu, wenn es über entsprechende setter oder public Member verfügt.
 java.lang.String toString()
          Liefert der DataSet als getXml().toString()
 java.lang.String toString(java.lang.String encoding)
           
 boolean verify()
          Überprüft alle Rows dieses DataSet.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JDataSet

public JDataSet()
Deprecated. For serialization purpose only.


JDataSet

public JDataSet(java.lang.String name)
Erzeugt einen leeren DataSet.

Parameters:
Der - (beliebige) Name des DataSet

JDataSet

public JDataSet(electric.xml.Document doc)
Erzeugt einen DataSet aus einem XML-Document.

Parameters:
doc -
See Also:
Auf diese Art kann ein DataSet komplett geklont werden:
JDataSet clone = new JDataSet(myDataSet.getXml());
Method Detail

create

public void create(java.lang.String s)
Deprecated. For serialization purpose only.


create

public void create(electric.xml.Document doc)
Deprecated. For serialization purpose only.


getXml

public electric.xml.Document getXml()
Liefert den DataSet als XML-Document.
Mit diesem Document kann dieser DataSet wieder neu erzeugt werden.


getXml

public electric.xml.Document getXml(java.lang.String encoding)

getXml

public electric.xml.Document getXml(boolean bProfile)

getXml

public electric.xml.Document getXml(boolean bProfile,
                                    java.lang.String encoding)
Parameters:
bProfile - false liefert keine Profiling-Informationen
Returns:

getDatasetName

public java.lang.String getDatasetName()
Beim Einsatz eines Persistenz-Layers dient dieser Name der Identifikation des Dataset-Typs.

Returns:

split

public java.util.Vector<JDataSet> split()
Teilt ein Dataset, welches mehrere RootTables enthält. Dabei wird für jede RootTable ein DataSet im Ergebnisvector abgelegt. Das "neue" Dataset bekommt den Namen der RootTable verpasst.

Parameters:
ds -
Returns:
Vector mit x DataSet

merge

public void merge(JDataSet ds)
Mischt einen Dataset hinzu; dabei werden die RootTables und RootRows aus dem angegebenen Dataset übernommen. Es entsteht ein DataSet mit mehreren RootTables und RootRows.

Parameters:
ds -

addRootTable

public void addRootTable(JDataTable tbl)
Fügt dem DataSet eine neue Wurzeltabelle hinzu. Die Namen der Tabellen müssen eindeutig sein; sonst wird eine IllegalArgumentException geworfen.

Parameters:
tbl -

getDataTable

public JDataTable getDataTable(java.lang.String name)
Liefert eine Wurzel-Tabelle aus dem Dataset unter Angabe ihres Namens.

Parameters:
name -
Returns:
Exception, wenn Table fehlt.

getDataTable

public JDataTable getDataTable()
Liefert die Wurzel-Tabelle.

Wirft eine IllegalStateException, wenn die Zahl der Wurzeltabellen != 1 ist.

Specified by:
getDataTable in interface RowContainer
Returns:

isRootTable

public boolean isRootTable(JDataTable tbl)
Prüft, ob die angegebene Tabelle eine Wurzel-Tabelle des DataSet ist.

Parameters:
tbl -
Returns:

isDatasetTableObject

public boolean isDatasetTableObject(JDataTable tbl)
Es wird geprüft, ob das übergebene DataTable-Object in irgendeiner Form Bestandteil dieses Dataset ist.

Parameters:
tbl -
Returns:

getDataTables

public java.util.Iterator<JDataTable> getDataTables()
Liefert den Iterator auf die Root Tables.

Returns:

getDataTablePath

public JDataTable getDataTablePath(java.lang.String path)
Liefert die DataTable mit dem angegebenen Pfad.

Notation: root.child1[x].child2[y]#parent1#parent2

Parameters:
path -
Returns:

getDataRowPath

public JDataRow getDataRowPath(java.lang.String path)
Liefert die DataRow mit dem angegebenen Pfad.

Notation: root[x].child1[y].child2[Spalte=Wert]#parent1#parent2

Parameters:
path -
Returns:

getDataRowsPath

public java.util.Iterator<JDataRow> getDataRowsPath(java.lang.String path)
Liefert die Child Rows mit dem angegebenen Pfad.

Parameters:
path -
Returns:

getDataColumnPath

public JDataColumn getDataColumnPath(java.lang.String path)
Liefert die DataColumn mit dem angegebenen Pfad in der Notation root[x].child1[y].child2[z]#parent1#parent2@column1

Parameters:
path -
Returns:

getDataValuePath

public JDataValue getDataValuePath(java.lang.String path)
Liefert den DataValue mit dem angegebenen Pfad in der Notation root[x].child1[y].child2[z]#parent1#parent2@column1

Parameters:
path -
Returns:

getValuePath

public java.lang.String getValuePath(java.lang.String path)
Liefert den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1

Parameters:
path -
Returns:
Den Inhalt des DataValue als String

getValuePath

public java.lang.String getValuePath(java.lang.String path,
                                     java.lang.String defaultValue)
Liefert den Wert des angegebene Feldes oder wenn diese null, den übergebenen DefaultValue

Parameters:
path -
dValue -
Returns:

getValueDatePath

public java.util.Date getValueDatePath(java.lang.String path)

getValueDatePath

public java.util.Date getValueDatePath(java.lang.String path,
                                       java.util.Date defaultValue)

getValueIntPath

public int getValueIntPath(java.lang.String path)

getValueIntPath

public int getValueIntPath(java.lang.String path,
                           int defaultValue)

getValueLongPath

public long getValueLongPath(java.lang.String path)

getValueLongPath

public long getValueLongPath(java.lang.String path,
                             long defaultValue)

setValuePath

public java.lang.String setValuePath(java.lang.String path,
                                     java.lang.String value)
Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1

Parameters:
path -
Returns:
identisch mit value

setValuePath

public java.lang.String setValuePath(java.lang.String path,
                                     java.util.Date value)
Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1

Parameters:
path -
value - Ein Datum
Returns:
Das übergebene Datum als String

setValuePath

public java.lang.String setValuePath(java.lang.String path,
                                     java.lang.Object value)
Die Konvertierung nach String hängt vom Sql-DatenTyp ab.

Parameters:
path -
value -
Returns:

setValuePath

public java.lang.String setValuePath(java.lang.String path,
                                     long value)
Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1

Parameters:
path -
Returns:
Der neue Wert als String

setValuePath

public java.lang.String setValuePath(java.lang.String path,
                                     int value)
Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1

Parameters:
path -
Returns:
Der neue Wert als String

setValuePath

public java.lang.String setValuePath(java.lang.String path,
                                     boolean value)
Setzt den Wert des angegebene Feldes; Notation: root[x].child1[y].child2[z]#parent1#parent2@column1

Parameters:
path -
Returns:
Der neue Wert als String

getRows

public java.util.Iterator<JDataRow> getRows()
Deprecated. 

Returns:
See Also:
getChildRows()

getChildRows

public java.util.Iterator<JDataRow> getChildRows()
Liefert den Iterator für die Root Rows oder null, wenn keine Rows vorhanden.

Specified by:
getChildRows in interface RowContainer
Returns:

getRows

public java.util.Iterator<JDataRow> getRows(NVPair condition)
Deprecated. 

Parameters:
condition - FieldName, FieldValue
Returns:
See Also:
Liefert einen Iterator über die Root Rows, bei denen der Wert eines Feldes der angegebenen Bedingung entspricht.

getRow

public JDataRow getRow()
Liefert die WurzelZeile aus dem DataSet.

Wirft eine IllegalStateException, wenn der DataSet leer ist oder mehr als eine WurzelZeile vorhanden.

Returns:

getRow

public JDataRow getRow(int index)
Deprecated. 

Parameters:
index -
Returns:
See Also:
getChildRow(int)

getChildRow

public JDataRow getChildRow(int index)
Liefert die WurzelZeile aus dem DataSet mit dem angegebenen Index (0-relativ).

Parameters:
index -
Returns:

getChildRow

public JDataRow getChildRow(java.lang.String refname,
                            int index)
Liefert die Child Row zu der angegebenen Tabelle mit dem angegegeben Index (0-relativ).

Wirft eine IllegalArgumentException, wenn Index out of Range.

Specified by:
getChildRow in interface RowContainer
Parameters:
refname -
index -
Returns:

getChildRow

public JDataRow getChildRow(java.lang.String refname,
                            java.lang.String arg)
Findet die ChildRow bei der die angegebene Spalte den angegebenen Wert hat (im Format name=value)

Parameters:
refname -
arg - SpaltenName=SpaltenWert
Returns:

getRows

public java.util.Iterator<JDataRow> getRows(java.lang.String refname)
Deprecated. 

Parameters:
refname -
Returns:
See Also:
getChildRows(String)

getChildRows

public java.util.Iterator<JDataRow> getChildRows(java.lang.String tablename)
Liefert einen Iterator über alle Root Rows zu der angegebenen Table.

Specified by:
getChildRows in interface RowContainer
Parameters:
tablename -
Returns:

getChildRows

public java.util.Collection<JDataRow> getChildRows(DataView view)
Description copied from interface: RowContainer
Liefert eine unmodifiable Collection von DataRows, die durch den DataView entsprechend gefiltert und/oder sortiert sind.

Specified by:
getChildRows in interface RowContainer
Returns:

addRow

public void addRow(JDataRow row)
Deprecated. 

Parameters:
row -
See Also:
addChildRow(de.jdataset.JDataRow)

addChildRow

public void addChildRow(JDataRow row)
Fügt eine Root-Row hinzu.
Es dürfen nur Rows von den Tabellen hinzugefügt werden, die auch als Root-Table aufgeführt sind.
Ansonsten wird eine IllegalArgumentException geworfen.

Specified by:
addChildRow in interface RowContainer
Parameters:
row -

addChildRow

public void addChildRow(JDataRow row,
                        int index)
Description copied from interface: RowContainer
Fügt eine ChildRow an dem entsprechenden Index ein.

Wirft eine IllegalArgumentException, wenn der Index außerhalb des definierten Bereichs ist.

Specified by:
addChildRow in interface RowContainer

addRow

public JDataRow addRow(java.lang.String refname)
Deprecated. 

Parameters:
refname -
Returns:
See Also:
createChildRow(String)

createChildRow

public JDataRow createChildRow(java.lang.String refname)
Fügt der angegebenen Root Table dieses Dataset eine neue leere Zeile hinzu.

Specified by:
createChildRow in interface RowContainer
Parameters:
refname -
Returns:
Die neue Zeile

addRow

public JDataRow addRow()
Deprecated. 

Returns:
See Also:
createChildRow(java.lang.String)

createChildRow

public JDataRow createChildRow()
Fügt dem DataSet eine neue leere Zeile hinzu.

Achtung!
Diese funktioniert nur, wenn dem DataSet genau eine Root Table zugeordnet ist.

Specified by:
createChildRow in interface RowContainer
Returns:

addChildRowPath

public JDataRow addChildRowPath(java.lang.String path)
Fügt eine Zeile am angegebenen Pfad ein.

Achtung!
Das geht schief, wenn die übergeordneten Rows nicht existieren!

Parameters:
path -
Returns:
Die neu eingefügte leere Zeile

getRowCount

public int getRowCount(java.lang.String tablename)
Liefert die Anzahl der Rows zu der angegebenen Tabelle.

Parameters:
tablename -
Returns:

getRowCount

public int getRowCount()
Liefert die Anzahl der Rows der RootTable.

Returns:

isEmpty

public boolean isEmpty()
Liefert true, wenn der DataSet keine DataRows enthält (wohl aber beliebige Metadaten)

Returns:

getChanges

public JDataSet getChanges()
Liefert einen DataSet der nur die DataRows enthält, die verändert wurden; also inserted, delete, modified.

Dieser DataSet ist also ein Subset des vorhanden; der Sinn dieser Methode besteht darin, dass nur modifizierte Daten an den Persistenz Layer übertragen werden, und so Bandbreite im Netz gespart wird.

Es werden allerdings auch die Rows mit übertragen, die für die Abbildung der Relationen nötig sind.

Wenn die Daten erfolgreich übertragen wurden, ist anschließend commitChanges aufzurufen.

Returns:
Ein DataSet oder null, wenn keine Änderungen vorhanden.
See Also:
commitChanges(), hasChanges()

getChangesPersistent

public JDataSet getChangesPersistent()

hasChanges

public boolean hasChanges()
Liefert true, wenn sich irgendeine DataRow des DataSet geändert hat (inserted, deleted, modified).

Specified by:
hasChanges in interface RowContainer
Returns:
See Also:
getChanges(), commitChanges()

hasChangesPersistent

public boolean hasChangesPersistent()

commitChanges

public void commitChanges()
Alle Kennzeichnungen von inserted und modified werden zurückgesetzt.
Als deleted markierte Zeilen werden jetzt wirklich gelöscht.

Diese Methode wird üblicherweise aufgerufen nachdem die Daten in die Datenbank zurückgeschrieben wurden.

Specified by:
commitChanges in interface RowContainer
See Also:
JDataRow.setDeleted(boolean), hasChanges(), getChanges()

rollbackChanges

public void rollbackChanges()
Macht alle getätigten Änderungen seit dem letzten Commit wieder rückgängig.

Geänderte Felder werden wieder auf den alten Wert gesetzt, die Markierung von gelöschten Zeilen wird zurückgenommen, eingefügte Zeilen werden wieder gelöscht.

See Also:
commitChanges()

setDeleted

public void setDeleted(boolean b)
Löscht alle vom DataSet gehaltenen Rows. Genau genommen werden alle Rows nur als gelöscht markiert. Damit die Daten wirklich aus der Datenbank gelöscht werden muß der Dataset zurückgeschrieben werden: IPL#setDataset(...) Erst nach IPL#commitChanges ist der Dataset wirklich leer.


setInserted

public void setInserted(boolean b)
Setzt alle vom DataSet gehaltenen Rows auf "inserted".

Dabei werden alle PK-Felder auf null gesetzt.
Wird der DataSet anschließend dem PL übergeben, werden diese Daten mit frischen IDs eingefügt.
Auf diese Art wird quasi ein "saveAs" für diesen DataSet ausgeführt.

Parameters:
b -

getUsername

public final java.lang.String getUsername()
Returns:
See Also:
setUsername(java.lang.String)

setUsername

public final void setUsername(java.lang.String username)
Setzt den Usernamen für diesen Dataset.

Da der Persistenz-Layer keine User-Sessions kennt, muß hier der Username übergeben werden, wenn dieser beim Insert und Update in der Datenbank vermerkt werden soll.

Parameters:
username -

getOid

public final long getOid()
Returns:
See Also:
setOid(long)

setOid

public final void setOid(long oid)
Es kann ein beliebiger Wert gesetzt werden, der von diesem Framework selbst nie benutzt wird.

Der Sinn besteht darin, daß serverseitige Dienste, die JDataSets erstellen, hier "Nachrichten" für den Client übergeben können.

Parameters:
oid -

getWarning

public final java.lang.String getWarning()
Returns:
See Also:
setWarning(java.lang.String)

setWarning

public final void setWarning(java.lang.String warning)
Es kann ein beliebiger Wert gesetzt werden, der von diesem Framework selbst nie benutzt wird.

Der Sinn besteht darin, daß serverseitige Dienste, die JDataSets erstellen, hier "Nachrichten" für den Client übergeben können.

Parameters:
warning -

setDatasetName

public void setDatasetName(java.lang.String name)
Der Name des DataSet, wie in DatabaseConfig.xml spezifiziert.

Parameters:
name -

toString

public java.lang.String toString()
Liefert der DataSet als getXml().toString()

Overrides:
toString in class java.lang.Object
See Also:
getXml()

toString

public java.lang.String toString(java.lang.String encoding)

verify

public boolean verify()
Überprüft alle Rows dieses DataSet.

Das Ergebnis dieser Prüfung wird im DataSet vorgehalten.

Returns:
See Also:
isVerified(), getValidationError(), JDataValue.verify(boolean)

isVerified

public boolean isVerified()
Liefert das Ergebnis von verify().

Returns:
Returns the verified.
See Also:
verify()

setVerified

public void setVerified(boolean verified)
Parameters:
verified - The verified to set.

getValidationError

public java.lang.String getValidationError()
Liefert eine Auflistung von Fehlern zurück, die nach der Validierung festgestellt wurden.

Returns:
Fehlerliste

resetErrorState

public void resetErrorState()
See Also:
JDataRow.resetErrorState()

getSize

public int getSize()
Liefert die (ungefähre) Größe des Objects (ObjectOutputStream)

Returns:

isReadonly

public boolean isReadonly()
Returns:
Returns the readonly.

setReadonly

public void setReadonly(boolean readonly)
Parameters:
readonly - The readonly to set.

getDatabaseName

public java.lang.String getDatabaseName()
Returns:
Returns the databaseName.

setDatabaseName

public void setDatabaseName(java.lang.String databaseName)
Parameters:
databaseName - The databaseName to set.

rollbackVersion

public void rollbackVersion(java.lang.String fieldName)
Setzt den Zähler für das optimistische Locking wieder zurück (für JounalDirectory)


startProfiler

public int startProfiler(java.lang.String name)
Startet den Profiler unter Angabe eines eindeutigen Namens.

Returns:
Die Anzahl der Einträge im Profiler

endProfiler

public long endProfiler()
Mißt die seit dem start vergangene Zeit.

Returns:
Die seit dem Starten des Profilers vergangene Zeit.
See Also:
startProfiler(String)

resetProfiler

public void resetProfiler()
Löscht die bisher aufgelaufenen Profiling-Daten.


getProfiler

public java.util.ArrayList<JDataSet.ProfileEntry> getProfiler()
Liefert die Profiling-Daten

Returns:
See Also:
JDataSet.ProfileEntry

hasChangeProtocol

public boolean hasChangeProtocol()
Gibt an, ob eine der Root-Tables des DataSet ein Änderungsprotokoll haben


CSV2Dataset

public static JDataSet CSV2Dataset(java.lang.String dsName,
                                   java.lang.String csv)
                            throws java.lang.Exception
Erzeugt aus einem Dataset-Namen und einem CSV-File in dem in der ersten Zeile die Feldnamen stehen und in der zweiten Zeile die Feldtypen einen Dataset und eine DataTable mit dem angegebenen Namen und DataRows mit den folgenden Werten.

Die Zeilen sind mit \n getrennt und die Werte mit ";".

TODO: gehört diese Methode nicht in eine DatasetFactory?

Parameters:
dsName -
csv -
Returns:
Throws:
java.lang.Exception

toDataset

public static JDataSet toDataset(java.lang.Object o)
Erzeugt aus dem übergebenen Object einen DataSet.

Es wird eine DataTable mit dem Klassennamen des Objekts angelegt. Dabei werden alle getter (inc is...) oder public Members in Spalten der Tabelle verwandelt.

Es wird eine DataRow mit den Werten dieser Attribute angelegt.

Parameters:
o -
Returns:
See Also:
toObject(Object)

toObject

public void toObject(java.lang.Object o)
Weist die Werte aus diesem DataSet dem übergebenen Object zu, wenn es über entsprechende setter oder public Member verfügt.

Parameters:
o -
See Also:
toDataset(Object)