com.basecmp.core.persistence.impl
Class PersistentRow

java.lang.Object
  extended bycom.basecmp.core.persistence.impl.PersistentRow
All Implemented Interfaces:
IPersistentRow, java.util.Map

public class PersistentRow
extends java.lang.Object
implements IPersistentRow

PersistentRow dient als reiner Datenbehälter für einen kompletten Datensatz (eine Zeile) aus einer oder mehreren (1:1-Join) Datenbanktabellen. Programmtechnisch gesehen ist PersistentRow eine relativ dünne Hülle um eine HashMap (interne Darstellung der Daten). PersistentRow ist die Implementierungsklasse von IPersistentRow.

PersistentRow fordert für jede Instanz ein korrespondierendes Instanz von SqlTableMetaData an.

Die Klasse überschreibt hashCode(), equals() und toString().

Author:
Wolfgang Schröder

Nested Class Summary
 
Nested classes inherited from class java.util.Map
java.util.Map.Entry
 
Field Summary
protected  SqlTableMetaData metaData
           
protected  com.basecmp.core.persistence.config.AssetTypeConfigBean metaDataBean
           
 java.lang.String xmlContentColumnName
           
 XmlBean xmlData
           
 
Constructor Summary
PersistentRow(java.sql.ResultSet resultSet)
          ResultSet-Konstruktor.
PersistentRow(java.lang.String assetType)
          String-Konstruktor.
 
Method Summary
 void clear()
           
 boolean containsColumn(java.lang.String columnName)
          Delegate an SqlTableMetaData.containsColumn
 boolean containsKey(java.lang.Object key)
           
 boolean containsValue(java.lang.Object value)
           
 boolean containsXmlAttributes()
          True, wenn eine Spalte des PersistentRow weitere Spaltes als XML enthält.
 java.util.Iterator createColumnNames()
          Delegate an SqlTableMetaData.getColumnNames
 java.util.Iterator createSqlColumnNames()
          Liefert nur die Namen der tatsächlichen Spalten die in einer SQL-Tabelle existieren, also ohne die Namen ggf vorhandener XML-Spaltennamen.
protected  void enableXmlAttributes(java.lang.String xmlColumnName, java.lang.String defaultXml)
           
protected  void enableXmlAttributes(java.lang.String xmlColumnName, java.lang.String defaultXml, boolean readFromFile)
           
 java.util.Set entrySet()
           
 boolean equals(java.lang.Object obj)
          Spezifische Implementierung von equals() Liefert nur für solche PersistentRow die per String-Konstruktor erzeugt wurden einen berechneten Wert, ansonsten false.
 java.lang.Object get(java.lang.Object key)
           
 java.lang.Object getColumn(java.lang.String columnName)
          Liefert den gespeicherten Wert zur angeforderten Tabellenspalte.
 boolean getColumnAsBoolean(java.lang.String columnName)
          Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als Boolean-Skalar.
 int getColumnAsInt(java.lang.String columnName)
          Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als int-Wert Liefert 0, wenn in der Datenbank-Tabelle null steht oder der Wert wirklich 0 ist.
 java.lang.Integer getColumnAsInteger(java.lang.String columnName)
          Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als Integer-Objekt Liefert null, wenn in der Datenbank-Tabelle null steht.
 long getColumnAsLong(java.lang.String columnName)
          Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als long-Wert Liefert 0, wenn in der Datenbank-Tabelle null steht oder der Wert wirklich 0 ist.
 java.lang.Long getColumnAsLongObject(java.lang.String columnName)
          Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als Long-Objekt Liefert null, wenn in der Datenbank-Tabelle null steht.
 java.lang.String getColumnAsString(java.lang.String columnName)
          Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als String-Objekt Liefert nie null!
 int getColumnCount()
          Delegate an SqlTableMetaData.getColumnCount
 java.lang.String getDataType(java.lang.String columnName)
          Delegate an SqlTableMetaData.getDataType
 java.util.Date getDateColumn(java.lang.String columnName)
          Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als Date-Objekt Liefert null, wenn in der Datenbank-Tabelle null steht.
 java.lang.String getPrimaryKeyColumn()
          Delegate an SqlTableMetaData.getPrimaryKey
 java.lang.String[] getPrimaryKeyColumns()
          Delegate an SqlTableMetaData.getPrimaryKeys
 java.lang.String getTableName()
          Delegate an SqlTableMetaData.getTableName
 int hashCode()
          Spezifische Implementierung von hashCode() Berechnet aus den Werten aller Primary-Keys einen eindeutigen Hash.
 boolean isArray(java.lang.String columnName)
          Delegate an SqlTableMetaData.isArray
 boolean isEmpty()
           
 java.util.Set keySet()
           
 java.lang.Object put(java.lang.Object key, java.lang.Object value)
           
 void putAll(java.util.Map arg0)
           
 java.lang.Object remove(java.lang.Object arg0)
           
 void setColumn(java.lang.String columnName, java.lang.Object columnValue)
          Setzt den Wert in der angeforderten Tabellenspalte.
 void setColumnAliasMap(java.util.Map mapping)
          Mit einem Column-Mapping können den Spaltennamen des Row Alias-Namen verliehen werden.
 void setColumns(java.lang.Object bean)
          Versucht alle in der Bean vorhandenen Attribute per Reflection zu lesen und in das PersistentRow zu übertragen.
protected  void setMetaData(SqlTableMetaData stmd)
          Methode, um die interne SqlTableMetaData-Instanz von aussen zu überschreiben.
 void setRequestParameters(UsecaseContext uc)
          Liest alle Wert aus dem übergebenen Multipart-Request und versucht die Werte im PersistentRow zu setzen.
 int size()
           
 java.lang.String toString()
          Erzeugt einen formatierten Dump vom Inhalt des PersistentRow der Form: Tablename: NAME_X PK: NAME_PRIMARY_KEY=Wert SPALTEN_NAME=Wert
 java.util.Collection values()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

metaData

protected SqlTableMetaData metaData

metaDataBean

protected com.basecmp.core.persistence.config.AssetTypeConfigBean metaDataBean

xmlContentColumnName

public java.lang.String xmlContentColumnName

xmlData

public XmlBean xmlData
Constructor Detail

PersistentRow

public PersistentRow(java.sql.ResultSet resultSet)
ResultSet-Konstruktor. Erzeugt eine Instanz, ohne Initialdaten aus einem SqlTableMetaData-Objekt zu benutzen, sondern direkt aus den Daten des übergebenen ResultSet. Es wird die JDBC-Zeile benutzt, an der der Cursor aktuell steht. Das bedeutet u.a., das der Benutzer darauf zu achten hat, das der Cursor auf einer gültigen Zeile steht.

See Also:
SqlTableMetaData

PersistentRow

public PersistentRow(java.lang.String assetType)
String-Konstruktor. Erzeugt eine Instanz mit den Initialdaten, die im entsprechenden SqlTableMetaData-Objekt zu finden sind.

See Also:
SqlTableMetaData
Method Detail

clear

public void clear()
Specified by:
clear in interface java.util.Map

containsColumn

public boolean containsColumn(java.lang.String columnName)
Description copied from interface: IPersistentRow
Delegate an SqlTableMetaData.containsColumn

Specified by:
containsColumn in interface IPersistentRow

containsKey

public boolean containsKey(java.lang.Object key)
Specified by:
containsKey in interface java.util.Map

containsValue

public boolean containsValue(java.lang.Object value)
Specified by:
containsValue in interface java.util.Map

containsXmlAttributes

public boolean containsXmlAttributes()
Description copied from interface: IPersistentRow
True, wenn eine Spalte des PersistentRow weitere Spaltes als XML enthält.

Specified by:
containsXmlAttributes in interface IPersistentRow

createColumnNames

public java.util.Iterator createColumnNames()
Description copied from interface: IPersistentRow
Delegate an SqlTableMetaData.getColumnNames

Specified by:
createColumnNames in interface IPersistentRow

createSqlColumnNames

public java.util.Iterator createSqlColumnNames()
Description copied from interface: IPersistentRow
Liefert nur die Namen der tatsächlichen Spalten die in einer SQL-Tabelle existieren, also ohne die Namen ggf vorhandener XML-Spaltennamen.

Specified by:
createSqlColumnNames in interface IPersistentRow

enableXmlAttributes

protected void enableXmlAttributes(java.lang.String xmlColumnName,
                                   java.lang.String defaultXml)

enableXmlAttributes

protected void enableXmlAttributes(java.lang.String xmlColumnName,
                                   java.lang.String defaultXml,
                                   boolean readFromFile)

entrySet

public java.util.Set entrySet()
Specified by:
entrySet in interface java.util.Map

equals

public boolean equals(java.lang.Object obj)
Spezifische Implementierung von equals() Liefert nur für solche PersistentRow die per String-Konstruktor erzeugt wurden einen berechneten Wert, ansonsten false. PersistentRow-Objekte sind gleich, wenn alle folgenden Bedingung erfüllt sind: PersistentRow-Objekte sind auch gleich, eines der anderen Felder, ausser Primary-Keys ungleich sind!

Specified by:
equals in interface java.util.Map

get

public java.lang.Object get(java.lang.Object key)
Specified by:
get in interface java.util.Map

getColumn

public java.lang.Object getColumn(java.lang.String columnName)
Description copied from interface: IPersistentRow
Liefert den gespeicherten Wert zur angeforderten Tabellenspalte. Rückgabe-Objekte sind auf jeden Fall von einem der folgenden Typen:

Specified by:
getColumn in interface IPersistentRow

getColumnAsBoolean

public boolean getColumnAsBoolean(java.lang.String columnName)
Description copied from interface: IPersistentRow
Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als Boolean-Skalar. Die Wandlung zum boolean erfolgt per Boolean.valueOf(String).booleanValue();

Specified by:
getColumnAsBoolean in interface IPersistentRow

getColumnAsInt

public int getColumnAsInt(java.lang.String columnName)
Description copied from interface: IPersistentRow
Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als int-Wert Liefert 0, wenn in der Datenbank-Tabelle null steht oder der Wert wirklich 0 ist.

Specified by:
getColumnAsInt in interface IPersistentRow

getColumnAsInteger

public java.lang.Integer getColumnAsInteger(java.lang.String columnName)
Description copied from interface: IPersistentRow
Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als Integer-Objekt Liefert null, wenn in der Datenbank-Tabelle null steht.

Specified by:
getColumnAsInteger in interface IPersistentRow

getColumnAsLong

public long getColumnAsLong(java.lang.String columnName)
Description copied from interface: IPersistentRow
Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als long-Wert Liefert 0, wenn in der Datenbank-Tabelle null steht oder der Wert wirklich 0 ist.

Specified by:
getColumnAsLong in interface IPersistentRow

getColumnAsLongObject

public java.lang.Long getColumnAsLongObject(java.lang.String columnName)
Description copied from interface: IPersistentRow
Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als Long-Objekt Liefert null, wenn in der Datenbank-Tabelle null steht.

Specified by:
getColumnAsLongObject in interface IPersistentRow

getColumnAsString

public java.lang.String getColumnAsString(java.lang.String columnName)
Description copied from interface: IPersistentRow
Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als String-Objekt Liefert nie null! Wenn die angeforderte Spalte nicht als String gecastet werden kann, wird per toString()-Methode der Wert erzeugt.

Specified by:
getColumnAsString in interface IPersistentRow

getColumnCount

public int getColumnCount()
Description copied from interface: IPersistentRow
Delegate an SqlTableMetaData.getColumnCount

Specified by:
getColumnCount in interface IPersistentRow

getDataType

public java.lang.String getDataType(java.lang.String columnName)
Description copied from interface: IPersistentRow
Delegate an SqlTableMetaData.getDataType

Specified by:
getDataType in interface IPersistentRow

getDateColumn

public java.util.Date getDateColumn(java.lang.String columnName)
Description copied from interface: IPersistentRow
Liefert den gespeicherten Wert zur angeforderten Tabellenspalte als Date-Objekt Liefert null, wenn in der Datenbank-Tabelle null steht.

Specified by:
getDateColumn in interface IPersistentRow

getPrimaryKeyColumn

public java.lang.String getPrimaryKeyColumn()
Description copied from interface: IPersistentRow
Delegate an SqlTableMetaData.getPrimaryKey

Specified by:
getPrimaryKeyColumn in interface IPersistentRow

getPrimaryKeyColumns

public java.lang.String[] getPrimaryKeyColumns()
Description copied from interface: IPersistentRow
Delegate an SqlTableMetaData.getPrimaryKeys

Specified by:
getPrimaryKeyColumns in interface IPersistentRow

getTableName

public java.lang.String getTableName()
Description copied from interface: IPersistentRow
Delegate an SqlTableMetaData.getTableName

Specified by:
getTableName in interface IPersistentRow

hashCode

public int hashCode()
Spezifische Implementierung von hashCode() Berechnet aus den Werten aller Primary-Keys einen eindeutigen Hash.

Für Instanzen aus JDBC-ResultSets wird der Hash-Wert aus der Default-Implementierung von Object zurückgegeben,

Specified by:
hashCode in interface java.util.Map

isArray

public boolean isArray(java.lang.String columnName)
Description copied from interface: IPersistentRow
Delegate an SqlTableMetaData.isArray

Specified by:
isArray in interface IPersistentRow

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Map

keySet

public java.util.Set keySet()
Specified by:
keySet in interface java.util.Map

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
Specified by:
put in interface java.util.Map

putAll

public void putAll(java.util.Map arg0)
Specified by:
putAll in interface java.util.Map

remove

public java.lang.Object remove(java.lang.Object arg0)
Specified by:
remove in interface java.util.Map

setColumn

public void setColumn(java.lang.String columnName,
                      java.lang.Object columnValue)
Description copied from interface: IPersistentRow
Setzt den Wert in der angeforderten Tabellenspalte. Der Wert wird nicht von PersistentRow selbst in der Datenbank gepseichert! Um Werte wieder in die Datenbank zurückzuschreiben, wird i.A. ein PersistentAsset-Objekt oder der Persistence-Manager benutzt. Existiert die Spalte nicht, wird der Wert ignoriert!

Specified by:
setColumn in interface IPersistentRow

setColumnAliasMap

public void setColumnAliasMap(java.util.Map mapping)
Description copied from interface: IPersistentRow
Mit einem Column-Mapping können den Spaltennamen des Row Alias-Namen verliehen werden. Die Map muss als Keys den Aliasnamen und als Entry den echten Spaltennamen enthalten.

Specified by:
setColumnAliasMap in interface IPersistentRow

setColumns

public void setColumns(java.lang.Object bean)
Description copied from interface: IPersistentRow
Versucht alle in der Bean vorhandenen Attribute per Reflection zu lesen und in das PersistentRow zu übertragen.

Specified by:
setColumns in interface IPersistentRow

setMetaData

protected void setMetaData(SqlTableMetaData stmd)
Methode, um die interne SqlTableMetaData-Instanz von aussen zu überschreiben. Wird vom Persistence-Manager benutzt.


setRequestParameters

public void setRequestParameters(UsecaseContext uc)
Description copied from interface: IPersistentRow
Liest alle Wert aus dem übergebenen Multipart-Request und versucht die Werte im PersistentRow zu setzen.

HINWEIS: Diese Methode unterstützt derzeit keine Formularfelder, die mehrere Werte beinhalten können (z.B. Selectlisten mit Mehrfachauswahl)!

Specified by:
setRequestParameters in interface IPersistentRow

size

public int size()
Specified by:
size in interface java.util.Map

toString

public java.lang.String toString()
Erzeugt einen formatierten Dump vom Inhalt des PersistentRow der Form:

Tablename: NAME_X PK: NAME_PRIMARY_KEY=Wert SPALTEN_NAME=Wert


values

public java.util.Collection values()
Specified by:
values in interface java.util.Map


Copyright © 2004 by basecmp® - Professional Web Solutions