com.basecmp.core.persistence.impl
Class SqlTableMetaData

java.lang.Object
  extended bycom.basecmp.core.persistence.impl.SqlTableMetaData

public class SqlTableMetaData
extends java.lang.Object

SqlTableMetaData dient im Persistenz-Framework als ein unveränderliches Beschreibungs-Objekt für Datenbank-Tabellen. In einer Instanz von SqlTableMetaData können die folgenden Metadaten gespeichert werden:

Die Initialisierung der o.a. Metadaten erfolgt über die Konstruktoren. Um die Anzahl der Instanzen pro Tabelle zu kontrollieren, sind sämtliche Konstruktoren private deklariert. Stattdessen können Instanzen über statische Factory-Methoden erzeugt werden. Auf die Metadaten kann über get-Methoden zugegriffen werden.

SqlTableMetaData-Instanzen teilen sich intern in zwei logische Untertypen auf, die sich über ihre statischen Konstruktoren definieren. Um Instanzen mit dem String-Konstruktor erzeugen zu können, muss eine gleichnamiges Resourcefile existieren. In diesem Resourcefile sind die Metadaten für die angeforderte Tabelle in einer an die SQL-DDL angelehnten Syntax statisch vordefiniert. Sämtliche Persistenz-Beans stützen sich auf diese Instanzart. Instanzen dieser Art werden in ihrer Anzahl auf eine Instanz pro Tabelle begrenzt.

Im Unterschied dazu werden die Metadaten beim ResultSet-Konstruktor direkt per JDBC-Methoden gelesen und intern gespeichert. Der JDCB-Konstruktor wird implizit vom Persistence-Manager benutzt, um für ein beliebiges SQL-Statement (Query) Metadaten erzeugen zu können.

SqlTableMetaData-Instanzen treten grundsätzlich als Partnerobjekte für PersistentRow-Instanzen in Erscheinung. Da die Factory-Methoden protected sind, kann nur das Persistenz-Framework SqlTableMetaData-Instanzen erzeugen. Gleiches gilt für alle anderen Methoden. Die Informationen der lesenden Getter-Methoden werden nur über Delegation anderer Klassen zur Verfügung gestellt. Dadurch wird erreicht, dass Entwickler mit SqlTableMetaData-Instanzen praktisch nie in Berührung kommen und somit die Benutzung des Framework-API vereinfacht.

See Also:
PersistentRow
Author:
Wolfgang Schröder

Method Summary
protected  boolean containsColumn(java.lang.String columnName)
          Liefert true für existierende Spaltennamen, sonst false.
protected  int getColumnCount()
          Liefert die Anzahl der Spalten zur dargestellten Tabelle.
protected  java.util.Iterator getColumnNames()
          Liefert alle Spaltennamen zur dargestellten Tabelle als Iterator.
protected  java.lang.String getDataType(java.lang.String columnName)
          Liefert den vom Persistenz-Framework intern benutzten Datentyp zu einer Tabellenspalte.
protected  java.lang.String[] getForeignKeys()
          Liefert alle Spaltennamen der definierten Foreign-Keys zur dargestellten Tabelle.
protected  java.lang.Object getInitialContent(java.lang.String columnName)
          Liefert den Initialwert zu einer Tabellenspalte.
protected static SqlTableMetaData getInstanceForResultSet(java.sql.ResultSet rs)
          ResultSet-Konstruktor (JDBC).
protected static SqlTableMetaData getInstanceForTable(java.lang.String tablename)
          String-Konstruktor.
protected  java.lang.String[] getPrimaryKeys()
          Liefert alle Spaltennamen der definierten Primary-Keys zur dargestellten Tabelle.
protected  java.lang.String getTableName()
          Liefert den Namen der dargestellten Tabelle.
protected  java.lang.String[] getUniqueKeys()
          Liefert alle Spaltennamen der definierten Unique-Keys zur dargestellten Tabelle.
protected  boolean isArray(java.lang.String columnName)
           
protected  boolean isAssetMode()
          Liefert true, wenn die SqlTableMetaData per String-Konstruktor erzeugt wurde.
protected  java.util.Set keySet()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

containsColumn

protected boolean containsColumn(java.lang.String columnName)
Liefert true für existierende Spaltennamen, sonst false.


getColumnCount

protected int getColumnCount()
Liefert die Anzahl der Spalten zur dargestellten Tabelle.


getColumnNames

protected java.util.Iterator getColumnNames()
Liefert alle Spaltennamen zur dargestellten Tabelle als Iterator.


getDataType

protected java.lang.String getDataType(java.lang.String columnName)
Liefert den vom Persistenz-Framework intern benutzten Datentyp zu einer Tabellenspalte.

Parameters:
columnName - Name der Tabellenspalte

getForeignKeys

protected java.lang.String[] getForeignKeys()
Liefert alle Spaltennamen der definierten Foreign-Keys zur dargestellten Tabelle. ZUR ZEIT NOCH NICHT IMPLEMENTIERT!

Throws:
java.lang.UnsupportedOperationException - Wird bei jedem Aufruf geworfen!

getInitialContent

protected java.lang.Object getInitialContent(java.lang.String columnName)
Liefert den Initialwert zu einer Tabellenspalte. Liefert null, wenn die SqlTableMetaData-Instanz über ein JDBC-Resultset erzeugt wurde.

Parameters:
columnName - Name der Tabellenspalte

getInstanceForResultSet

protected static SqlTableMetaData getInstanceForResultSet(java.sql.ResultSet rs)
                                                   throws java.sql.SQLException
ResultSet-Konstruktor (JDBC). Erzeugt die Instanzen anhand eines ResultSet-Objektes, jedoch cacht diese nicht. Ein Cache für diese Instanz-Art macht keinen Sinn, da ein Resultset ggf Daten aus mehr als einer Datenbank-Tabelle enthalten kann. Zur Zeit kann diese Implementierung nicht mit mehr als einer Tabelle umgehen.

Parameters:
rs - Ein JDBC-Resultset
Returns:
Die neu erzeugte Instanz
Throws:
java.sql.SQLException - Wird ggf vom intern benutzen ResultSet-Konstruktor geworfen.

getInstanceForTable

protected static SqlTableMetaData getInstanceForTable(java.lang.String tablename)
String-Konstruktor. Erzeugt und cacht die erzeugten Instanzen.

Parameters:
tablename - Name der Datenbanktabelle
Returns:
Die erzeugte oder gecachte Instanz
Throws:
java.lang.IllegalArgumentException - Wird geworfen, wenn das String-Argument null oder leer ist.
java.util.MissingResourceException - Wird geworfen, wenn zum angeforderten Tabellennamen keine Resoucefile hinterlegt ist.

getPrimaryKeys

protected java.lang.String[] getPrimaryKeys()
Liefert alle Spaltennamen der definierten Primary-Keys zur dargestellten Tabelle.


getTableName

protected java.lang.String getTableName()
Liefert den Namen der dargestellten Tabelle.


getUniqueKeys

protected java.lang.String[] getUniqueKeys()
Liefert alle Spaltennamen der definierten Unique-Keys zur dargestellten Tabelle.


isArray

protected boolean isArray(java.lang.String columnName)

isAssetMode

protected boolean isAssetMode()
Liefert true, wenn die SqlTableMetaData per String-Konstruktor erzeugt wurde.


keySet

protected java.util.Set keySet()


Copyright © 2004 by basecmp® - Professional Web Solutions