de.pkjs.pl
Class PL

java.lang.Object
  extended by de.pkjs.pl.PL
All Implemented Interfaces:
IPLContext

public final class PL
extends java.lang.Object
implements IPLContext

Implementierung eines JDBC Persistenz Layers.


Field Summary
static java.lang.String COMMIT
           
static java.lang.String ROLLBACK
           
static java.lang.String START_TRANSACTION
           
 
Constructor Summary
PL()
          Erzeugt einen neuen Persistenz-Layer.
PL(electric.xml.Document doc)
          Erzeugt einen Persistenz-Layer aus einem XML-Dokument im Format von PLConfig.dtd.
PL(java.lang.String configFileName)
          Erzeugt einen PersistenzLayer aus der angegebenen Konfigurationsdatei.
PL(java.lang.String configFileName, java.lang.String username, java.lang.String password)
          Erzeugt einen Persistenzlayer mit der angegebenen Konfigurationsdatei und der Datenbank-Authorisierung.
 
Method Summary
 Request addRequest(JDataRow metaDataRow)
          Erzeugt einen Request aus Metadaten
 boolean commitTransaction(java.lang.String transName)
          Beendet die Transaktion mit dem angegebenen Namen, die zuvor mit startTransaktion gestartet wurde.
 int executeBatchStatement(java.lang.String name)
          Führt ein Batch-Statement aus.
 int executeBatchStatement(java.lang.String name, ParameterList list)
          Führt ein Batch-Statement aus.
 int executeSql(java.lang.String sqlCommand)
          Führt ein beliebiges SQL-Command aus (Update, Insert, Delete).
 int executeSql(java.lang.String sqlCommand, ParameterList parameters)
          Führt ein beliebiges SQL-Command aus (Update, Insert, Delete).
 int executeSqlPara(java.lang.String sqlCommand, java.util.Vector<java.lang.Object> parameter)
          Führt ein beliebiges SQL-Statement aus, wobei die Parameter für dieses Statement in einem Vector übergeben werden.
 int executeStatement(java.lang.String name)
          Führt ein benanntes Statement (UPDATE, INSERT, DELETE) aus.
 int executeStatement(java.lang.String name, ParameterList parameters)
          Führt ein benanntes Statement (UPDATE, INSERT, DELETE) aus.
 void finalize()
           
 JDataSet getAll(java.lang.String datasetname)
          Liefert einen Dataset ohne Angabe eines Schlüssels; also vor allem eine Menge von Datensätzen - bis zum Inhalt einer kompletten Tabelle.
 long getConnectionTimeOut()
           
 Database getCurrentDatabase()
          Liefert die Datenbank
 java.lang.String getCurrentDatabaseName()
          Liefert den Namen der verwendeten Datenbank.
 java.lang.String getDatabaseMetaData()
          Liefert die MetaDaten der CurrentDatabase.
 electric.xml.Document getDatabaseMetaDataDoc()
           
 DataRowIterator getDataRowIterator(java.lang.String datasetname, java.lang.String tablename, java.lang.String sql, ParameterList list)
          Während 'normalerweise' ein DataSet vom Persistenz-Layer immer fertig aufbereitet und komplett mit allen Daten übergeben wird, ist dieses Vorgehen bei großen Datenmengen nicht angebracht, nicht nur, daß das zu lange dauert, sondern weil auch ein OutOfMemory droht.
 DataRowIterator getDataRowIteratorStatement(java.lang.String statementName, ParameterList list)
           
 JDataSet getDataset(java.lang.String datasetname, long oid)
          Liefert einen Dataset mit dem angegebenen Namen und dem angegebenen Primärschlüssel der Wurzeltabelle.
 JDataSet getDataset(java.lang.String datasetname, long[] oids)
          Liefert einen Dataset mit den angegebenen Primärschlüsseln.
 JDataSet getDataset(java.lang.String datasetname, ParameterList parameters)
          Liefert einen Dataset mit dem angegebenen Namen sowie unter Angabe eine Liste von Parametern.
 JDataSet getDataset(java.lang.String datasetname, java.lang.String key)
          Liefert einen Dataset mit dem angegebenen Namen und dem angegebenen Primärschlüssel der Wurzeltabelle.
 java.util.ArrayList<java.lang.String> getDatasetNames()
          Liefert die Menge der definierten Datenbank-Zugriffe.
 JDataSet getDatasetSql(java.lang.String datasetname, java.lang.String sql)
          Liefert einen flachen Dataset auf Basis eines beliebigen SQL-Statements.
 JDataSet getDatasetSql(java.lang.String datasetname, java.lang.String sql, int limit)
           
 JDataSet getDatasetSql(java.lang.String datasetname, java.lang.String sql, ParameterList list)
          Liefert einen flachen Dataset auf Basis eines beliebigen SQL-Statements.
 JDataSet getDatasetSql(java.lang.String tablename, java.lang.String columns, java.lang.String from)
          Deprecated.  
 JDataSet getDatasetStatement(Database.NamedStatement nst, ParameterList list)
          Liefert einen DataSet unter Angabe eines benannten Statements.
 JDataSet getDatasetStatement(java.lang.String name)
          Liefert einen DataSet unter Angabe des Namens eines benannten Statements.
 JDataSet getDatasetStatement(java.lang.String name, ParameterList list)
          Liefert einen DataSet unter Angabe des Namens eines benannten Statements.
 java.lang.String getDatasetString(java.lang.String datasetname, long oid)
           
 java.text.SimpleDateFormat getDateFormat()
          Liefert das DateFormat aus PLConfig.xml
 JDataSet getEmptyDataset(java.lang.String datasetname)
          Liefert einen Dataset ohne Werte aber mit den Metadaten.
 java.lang.String getLayerName()
           
 int getMaxActive()
           
 int getMaxIdle()
           
 DatabaseMBean getMBeanDB()
           
 PLTransactionContextMBean getMBeanPL()
           
 JDataSet getMetaDataSet()
           
 int getMinIdle()
           
 Database.NamedStatement getNamedStatement(java.lang.String name)
          Liefert ein benanntes Statement aus PLConfix.xml
 java.lang.String getNowString()
           
 int getNumActive()
           
 int getNumIdle()
           
 long getOID()
          Liefert einen neuen eindeutigen Schlüssel für den Client.
 long getOID(java.lang.String sequenceName)
          Liefert einen neuen eindeutigen Key aus der angegebenen Sequence.
 java.lang.String getPLMetaData()
          Wie PLMetaDataDoc nur als String
 electric.xml.Document getPLMetaDataDoc()
          Liefert den gesamten Persistenz-Layer mit all seinen Eigenschaften: Optionen des PL selbst Die Datenbank mit ihren Tabellen (aus JDBC-Metadaten) Die definierten Zugriffe (aus DatabaseConfig.xml)
 Request getRequest(java.lang.String datasetName)
          Liefert einen Request zu dem angegebenen Namen.
 java.util.Collection<TransactionInfo> getSessions()
           
 java.text.SimpleDateFormat getTimeFormat()
           
 java.text.SimpleDateFormat getTimestampFormat()
           
 java.lang.String getTodayNowString()
           
 java.lang.String getTodayString()
          Liefert das heutige Datum im aus PLConfig.xml.
 java.util.Collection<TransactionInfo> getTransactionInfos()
           
 java.lang.String getUpdateJournalDirectory()
          Liefert das Directory, in das Offline Transaktionen geschrieben werden
 int importJournal(java.util.List<electric.xml.Document> transaction)
           
 int initDefaultTableRequests()
          Deprecated. Erzeugt für jede Tabelle in der Datenbank einen Request mit dem Namen der Tabelle.
 boolean isDebug()
          Liefert den Debug-Modus
 java.lang.String pingDatabase()
          Führt das "Ping"-Statement der Datenbank aus, wie in PLConfig definiert.
 void reset()
          Der Cache mit den Datenbankabfragen wird gelöscht.
 boolean rollbackTransaction(java.lang.String transName)
          Rollback der zuvor gestarteten Transaktion.
 int setDataset(JDataSet dataset)
          Der vom Client geänderter Dataset wird in die Datenbank zurückgeschrieben.
 int setDataset(java.lang.String dataset)
           
 void setDatasetAsync(JDataSet dataset)
           
 void setDebug(boolean state)
          Setzt den Debug-Modus des Persistenzlayers.
 void setUpdateJournalDirectory(java.lang.String dir)
          Setzt das Directory, in das Offline Transaktionen geschrieben werden
 void shutdown()
          Fährt den Persistenz-Dienst herunter; es wird der Connection-Pool geschlossen (und damit alle Datenbankverbindungen).
 IPLContext startNewTransaction(java.lang.String transName)
          Liefert den Context für eine benutzerdefinierte Datenbanktransaktion.
 void startTransaction(java.lang.String transName)
          Startet eine Transaktion mit dem angegebenen Namen.
 boolean testCommit()
          Überpüft, ob eine Transaktion mit commitTransaktion(name) beendet werden kann.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

START_TRANSACTION

public static final java.lang.String START_TRANSACTION
See Also:
Constant Field Values

ROLLBACK

public static final java.lang.String ROLLBACK
See Also:
Constant Field Values

COMMIT

public static final java.lang.String COMMIT
See Also:
Constant Field Values
Constructor Detail

PL

public PL()
   throws java.lang.Exception
Erzeugt einen neuen Persistenz-Layer.

Die Einstellungen werden aus "PLConfig.xml" eingelesen.

Throws:
java.lang.Exception

PL

public PL(java.lang.String configFileName)
   throws java.lang.Exception
Erzeugt einen PersistenzLayer aus der angegebenen Konfigurationsdatei. Achtung! Die genannte Datei wird zuerst im ClassPath gesucht, dann im aktuellen Verzeichnis, und zuletzt im übergeordneten Verzeichnis.

Parameters:
configFileName -
Throws:
java.lang.Exception

PL

public PL(java.lang.String configFileName,
          java.lang.String username,
          java.lang.String password)
   throws java.lang.Exception
Erzeugt einen Persistenzlayer mit der angegebenen Konfigurationsdatei und der Datenbank-Authorisierung.

Die hier übergebenen Angaben bezüglich Username und Password sind vorrangig gegen über denen in der Konfigurationsdatei.

Der Sinn dieses Konstruktors besteht darin, verschiedenen Usern einen Persistenzdienst zu geben, die mit der selben Konfiguration arbeiten.

Parameters:
configFileName - is null then "PLConfig.xml"
username - must be != null
password - must be != null
Throws:
java.lang.Exception

PL

public PL(electric.xml.Document doc)
   throws java.lang.Exception
Erzeugt einen Persistenz-Layer aus einem XML-Dokument im Format von PLConfig.dtd.

Parameters:
doc -
Throws:
java.lang.Exception
Method Detail

startNewTransaction

public IPLContext startNewTransaction(java.lang.String transName)
                               throws PLException
Liefert den Context für eine benutzerdefinierte Datenbanktransaktion.

 PL pl = new PL();
 IPLContext context = pl.startNewTransaction("MyTransName");
 try {
   context.setDataset(myDataSet1);
   context.setDataset(myDataSet2);
   [weitere Datenbankoperationen]
   context.commitTransaction("MyTransName");
   // Der Context ist jetzt "verbraucht"
   // und darf nicht mehr verwendet werden!
 } catch (Exception ex) {
   context.rollbackTransaction("MyTransName");
 }
 

Parameters:
transName -
Returns:
Throws:
PLException

shutdown

public void shutdown()
              throws PLException
Fährt den Persistenz-Dienst herunter; es wird der Connection-Pool geschlossen (und damit alle Datenbankverbindungen).

Diese Methode kann z.B. beim Spring-Framework als destroy-Method eingetragen werden.

Specified by:
shutdown in interface IPLContext
Throws:
PLException

finalize

public void finalize()
Overrides:
finalize in class java.lang.Object

getSessions

public java.util.Collection<TransactionInfo> getSessions()

reset

public void reset()
           throws PLException
Der Cache mit den Datenbankabfragen wird gelöscht.

Specified by:
reset in interface IPLContext
Throws:
PLException

initDefaultTableRequests

public int initDefaultTableRequests()
                             throws PLException
Deprecated. Erzeugt für jede Tabelle in der Datenbank einen Request mit dem Namen der Tabelle.

Returns:
Throws:
PLException

getPLMetaDataDoc

public electric.xml.Document getPLMetaDataDoc()
Liefert den gesamten Persistenz-Layer mit all seinen Eigenschaften:

Returns:

getPLMetaData

public java.lang.String getPLMetaData()
Wie PLMetaDataDoc nur als String

Specified by:
getPLMetaData in interface IPLContext
Returns:

getRequest

public Request getRequest(java.lang.String datasetName)
Description copied from interface: IPLContext
Liefert einen Request zu dem angegebenen Namen. Ist der Request noch nicht vorhanden, wird er erzeugt und in den Cache von Requests geschrieben.

Specified by:
getRequest in interface IPLContext
Returns:

getLayerName

public java.lang.String getLayerName()

getCurrentDatabase

public Database getCurrentDatabase()
Description copied from interface: IPLContext
Liefert die Datenbank

Specified by:
getCurrentDatabase in interface IPLContext
Returns:

getCurrentDatabaseName

public java.lang.String getCurrentDatabaseName()
Description copied from interface: IPLContext
Liefert den Namen der verwendeten Datenbank.

Specified by:
getCurrentDatabaseName in interface IPLContext
Returns:
String

getDataset

public JDataSet getDataset(java.lang.String datasetname,
                           long oid)
                    throws PLException
Description copied from interface: IPLContext
Liefert einen Dataset mit dem angegebenen Namen und dem angegebenen Primärschlüssel der Wurzeltabelle.

Specified by:
getDataset in interface IPLContext
Returns:
Throws:
PLException

getDataset

public JDataSet getDataset(java.lang.String datasetname,
                           long[] oids)
                    throws PLException
Description copied from interface: IPLContext
Liefert einen Dataset mit den angegebenen Primärschlüsseln.
TODO: Wenn kein ORDER BY definiert hängt die Reihenfolge der Rows von der Implmentierung der Datenbank ab.

Specified by:
getDataset in interface IPLContext
Returns:
Throws:
PLException

getDataset

public JDataSet getDataset(java.lang.String datasetname,
                           java.lang.String key)
                    throws PLException
Description copied from interface: IPLContext
Liefert einen Dataset mit dem angegebenen Namen und dem angegebenen Primärschlüssel der Wurzeltabelle.

Specified by:
getDataset in interface IPLContext
Returns:
Throws:
PLException

getDatasetString

public java.lang.String getDatasetString(java.lang.String datasetname,
                                         long oid)
                                  throws PLException
Specified by:
getDatasetString in interface IPLContext
Throws:
PLException

getDataset

public JDataSet getDataset(java.lang.String datasetname,
                           ParameterList parameters)
                    throws PLException
Description copied from interface: IPLContext
Liefert einen Dataset mit dem angegebenen Namen sowie unter Angabe eine Liste von Parametern.

Specified by:
getDataset in interface IPLContext
Returns:
Throws:
PLException

setDataset

public int setDataset(JDataSet dataset)
               throws PLException
Description copied from interface: IPLContext
Der vom Client geänderter Dataset wird in die Datenbank zurückgeschrieben.

Specified by:
setDataset in interface IPLContext
Throws:
PLException

setDatasetAsync

public void setDatasetAsync(JDataSet dataset)
                     throws PLException
Throws:
PLException

setDataset

public int setDataset(java.lang.String dataset)
               throws PLException
Specified by:
setDataset in interface IPLContext
Throws:
PLException

getAll

public JDataSet getAll(java.lang.String datasetname)
                throws PLException
Description copied from interface: IPLContext
Liefert einen Dataset ohne Angabe eines Schlüssels; also vor allem eine Menge von Datensätzen - bis zum Inhalt einer kompletten Tabelle.

Specified by:
getAll in interface IPLContext
Returns:
String
Throws:
PLException

getDatasetSql

public JDataSet getDatasetSql(java.lang.String tablename,
                              java.lang.String columns,
                              java.lang.String from)
                       throws PLException
Deprecated. 

Description copied from interface: IPLContext
Liefert einen flachen Dataset auf Basis eines beliebigen SQL-Statements.

Specified by:
getDatasetSql in interface IPLContext
Parameters:
tablename - Tabelle zu den Columns
columns - Spaltennamen mit Komma getrennt
from - beliebige Bedingung
Returns:
Throws:
PLException

getDatasetSql

public JDataSet getDatasetSql(java.lang.String datasetname,
                              java.lang.String sql)
                       throws PLException
Description copied from interface: IPLContext
Liefert einen flachen Dataset auf Basis eines beliebigen SQL-Statements.

Achtung!
Bei Sybase müssen die angebenen Column-Namen eindeutig sein!

Specified by:
getDatasetSql in interface IPLContext
Parameters:
datasetname - ( = TableName)
sql - "SELECT a,b FROM c,d WHERE ... ORDER BY ...
Returns:
Throws:
PLException

getDatasetSql

public JDataSet getDatasetSql(java.lang.String datasetname,
                              java.lang.String sql,
                              int limit)
                       throws PLException
Specified by:
getDatasetSql in interface IPLContext
limit - Maximale Größe des ResultSet vordefinieren
Returns:
Throws:
PLException

getDatasetSql

public JDataSet getDatasetSql(java.lang.String datasetname,
                              java.lang.String sql,
                              ParameterList list)
                       throws PLException
Description copied from interface: IPLContext
Liefert einen flachen Dataset auf Basis eines beliebigen SQL-Statements.

Achtung!
Bei Sybase müssen die angebenen Column-Namen eindeutig sein!

Specified by:
getDatasetSql in interface IPLContext
Parameters:
datasetname - ( = TableName)
Returns:
Throws:
PLException

getNamedStatement

public Database.NamedStatement getNamedStatement(java.lang.String name)
Description copied from interface: IPLContext
Liefert ein benanntes Statement aus PLConfix.xml

Specified by:
getNamedStatement in interface IPLContext
Returns:

getDatasetStatement

public JDataSet getDatasetStatement(Database.NamedStatement nst,
                                    ParameterList list)
                             throws PLException
Description copied from interface: IPLContext
Liefert einen DataSet unter Angabe eines benannten Statements.

Hinweis:
Das NameStatement kann auch aus einem abweichenden PL stammen

Specified by:
getDatasetStatement in interface IPLContext
Returns:
Throws:
PLException

getDatasetStatement

public JDataSet getDatasetStatement(java.lang.String name)
                             throws PLException
Description copied from interface: IPLContext
Liefert einen DataSet unter Angabe des Namens eines benannten Statements.

Specified by:
getDatasetStatement in interface IPLContext
Returns:
Throws:
PLException

getDatasetStatement

public JDataSet getDatasetStatement(java.lang.String name,
                                    ParameterList list)
                             throws PLException
Description copied from interface: IPLContext
Liefert einen DataSet unter Angabe des Namens eines benannten Statements.

Specified by:
getDatasetStatement in interface IPLContext
list - Argumentliste für dieses Statement
Returns:
Throws:
PLException

getDataRowIteratorStatement

public DataRowIterator getDataRowIteratorStatement(java.lang.String statementName,
                                                   ParameterList list)
                                            throws PLException
Specified by:
getDataRowIteratorStatement in interface IPLContext
Parameters:
statementName - Der Name eines benannten Statements
list - ParameterList oder null, wenn ohne Parameter
Returns:
Throws:
PLException
See Also:
#getDataRowIterator(String, String, ParameterList)

getDataRowIterator

public DataRowIterator getDataRowIterator(java.lang.String datasetname,
                                          java.lang.String tablename,
                                          java.lang.String sql,
                                          ParameterList list)
                                   throws PLException
Description copied from interface: IPLContext
Während 'normalerweise' ein DataSet vom Persistenz-Layer immer fertig aufbereitet und komplett mit allen Daten übergeben wird, ist dieses Vorgehen bei großen Datenmengen nicht angebracht, nicht nur, daß das zu lange dauert, sondern weil auch ein OutOfMemory droht.

Der RowIterator schafft dort Abhilfe.
Es wird ein DataRowIterator geliefert unter Angabe von:

Specified by:
getDataRowIterator in interface IPLContext
Parameters:
datasetname - Namens des DataSet für den RowIterator
tablename - Name der RootTable des Dataset
sql - SELECT-Statement
list - ParameterListe (darf auch null sein)
Returns:
Den RowIterator mit den gewünschten Daten.
Throws:
PLException

getEmptyDataset

public JDataSet getEmptyDataset(java.lang.String datasetname)
Description copied from interface: IPLContext
Liefert einen Dataset ohne Werte aber mit den Metadaten. Wird bei der Erstellung eines neuen Datensatzes benötigt.

Specified by:
getEmptyDataset in interface IPLContext
Parameters:
datasetname - Der gewünschte Dataset
Returns:
JDataSet

getOID

public long getOID()
            throws PLException
Description copied from interface: IPLContext
Liefert einen neuen eindeutigen Schlüssel für den Client.

Specified by:
getOID in interface IPLContext
Returns:
long
Throws:
PLException

getOID

public long getOID(java.lang.String sequenceName)
            throws PLException
Description copied from interface: IPLContext
Liefert einen neuen eindeutigen Key aus der angegebenen Sequence. Wirft eine Exception, wenn Sequence fehlt.

Specified by:
getOID in interface IPLContext
Returns:
Throws:
PLException

executeSql

public int executeSql(java.lang.String sqlCommand)
               throws PLException
Description copied from interface: IPLContext
Führt ein beliebiges SQL-Command aus (Update, Insert, Delete). Um beliebige Daten einzulesen siehe:

Specified by:
executeSql in interface IPLContext
Returns:
Anzahl geänderter Datensätze oder 0
Throws:
PLException
See Also:
IPLContext.getDatasetSql(java.lang.String, java.lang.String, java.lang.String)

executeSql

public int executeSql(java.lang.String sqlCommand,
                      ParameterList parameters)
               throws PLException
Description copied from interface: IPLContext
Führt ein beliebiges SQL-Command aus (Update, Insert, Delete). Um beliebige Daten einzulesen siehe:

Specified by:
executeSql in interface IPLContext
Parameters:
sqlCommand - SQL-Befehl
parameters - Parameter für PreparedStatement
Returns:
Anzahl geänderter Datensätze oder 0
Throws:
PLException
See Also:
IPLContext.getDatasetSql(java.lang.String, java.lang.String, java.lang.String)

executeSqlPara

public int executeSqlPara(java.lang.String sqlCommand,
                          java.util.Vector<java.lang.Object> parameter)
                   throws PLException
Description copied from interface: IPLContext
Führt ein beliebiges SQL-Statement aus, wobei die Parameter für dieses Statement in einem Vector übergeben werden.

Beispiel:

 String sql = "INSERT INTO MyTable (DateCreated) VALUES (?)";
 Vector v = new Vector();
 v.add(new Date());
 int cnt = pl.executeSqlPara(sql, v);
 

Specified by:
executeSqlPara in interface IPLContext
Returns:
Anzahl geänderter Datensätze oder 0
Throws:
PLException

executeStatement

public int executeStatement(java.lang.String name)
                     throws PLException
Description copied from interface: IPLContext
Führt ein benanntes Statement (UPDATE, INSERT, DELETE) aus.

Specified by:
executeStatement in interface IPLContext
Parameters:
name - Statement-Name
Returns:
Anzahl geänderter Datensätze oder 0
Throws:
PLException

executeStatement

public int executeStatement(java.lang.String name,
                            ParameterList parameters)
                     throws PLException
Description copied from interface: IPLContext
Führt ein benanntes Statement (UPDATE, INSERT, DELETE) aus.

Specified by:
executeStatement in interface IPLContext
Parameters:
name - name Statement-Name
parameters - Paramter für das Statement
Returns:
Anzahl geänderter Datensätze oder 0
Throws:
PLException

executeBatchStatement

public int executeBatchStatement(java.lang.String name)
                          throws PLException
Führt ein Batch-Statement aus.

Batch-Statements sind eine Menge von NamedStatements, die nacheinander als Batch ausgeführt werden.

Specified by:
executeBatchStatement in interface IPLContext
Parameters:
name -
Returns:
Throws:
PLException

executeBatchStatement

public int executeBatchStatement(java.lang.String name,
                                 ParameterList list)
                          throws PLException
Führt ein Batch-Statement aus.

Batch-Statements sind eine Menge von NamedStatements, die nacheinander als Batch ausgeführt werden.

Specified by:
executeBatchStatement in interface IPLContext
Parameters:
name -
list - Eine Liste von Parametern für die Menge aller Parameter, die für die verschiedenen Statements insgesamt benötigt werden.
Returns:
Throws:
PLException

getDatabaseMetaData

public java.lang.String getDatabaseMetaData()
Description copied from interface: IPLContext
Liefert die MetaDaten der CurrentDatabase.

Specified by:
getDatabaseMetaData in interface IPLContext
Returns:

getDatabaseMetaDataDoc

public electric.xml.Document getDatabaseMetaDataDoc()
Specified by:
getDatabaseMetaDataDoc in interface IPLContext

getMetaDataSet

public JDataSet getMetaDataSet()
Specified by:
getMetaDataSet in interface IPLContext

addRequest

public Request addRequest(JDataRow metaDataRow)
                   throws PLException
Description copied from interface: IPLContext
Erzeugt einen Request aus Metadaten

Specified by:
addRequest in interface IPLContext
Returns:
Throws:
PLException
See Also:
Request.getMetaDataRow()

getDatasetNames

public java.util.ArrayList<java.lang.String> getDatasetNames()
Description copied from interface: IPLContext
Liefert die Menge der definierten Datenbank-Zugriffe.

Specified by:
getDatasetNames in interface IPLContext
Returns:

pingDatabase

public java.lang.String pingDatabase()
                              throws PLException
Führt das "Ping"-Statement der Datenbank aus, wie in PLConfig definiert.

Specified by:
pingDatabase in interface IPLContext
Returns:
Liefert "pong" wenn alles OK, "No PingStatement defined" wenn in PLConfig keine PingStatement definiert ist.
Throws:
PLException

importJournal

public int importJournal(java.util.List<electric.xml.Document> transaction)
                  throws PLException
Specified by:
importJournal in interface IPLContext
Throws:
PLException

getDateFormat

public java.text.SimpleDateFormat getDateFormat()
Description copied from interface: IPLContext
Liefert das DateFormat aus PLConfig.xml

Specified by:
getDateFormat in interface IPLContext
Returns:

getTimeFormat

public java.text.SimpleDateFormat getTimeFormat()
Specified by:
getTimeFormat in interface IPLContext

getTimestampFormat

public java.text.SimpleDateFormat getTimestampFormat()
Specified by:
getTimestampFormat in interface IPLContext

getTodayString

public java.lang.String getTodayString()
Description copied from interface: IPLContext
Liefert das heutige Datum im aus PLConfig.xml.

Achtung!
Da der PersistenzLayer üblicherweise auf einem Server läuft, kann ein Client auf diese Art aktuelle Angaben über Datum und Uhrzeit des Servers ermitteln. Dieses ist in der Regel besser als die lokale Zeit des Client zu verwenden.

Specified by:
getTodayString in interface IPLContext
Returns:

getNowString

public java.lang.String getNowString()
Specified by:
getNowString in interface IPLContext

getTodayNowString

public java.lang.String getTodayNowString()
Specified by:
getTodayNowString in interface IPLContext

setDebug

public void setDebug(boolean state)
Description copied from interface: IPLContext
Setzt den Debug-Modus des Persistenzlayers.

Specified by:
setDebug in interface IPLContext

isDebug

public boolean isDebug()
Description copied from interface: IPLContext
Liefert den Debug-Modus

Specified by:
isDebug in interface IPLContext
Returns:

startTransaction

public void startTransaction(java.lang.String transName)
                      throws PLException
Description copied from interface: IPLContext
Startet eine Transaktion mit dem angegebenen Namen. Bei geschachtelten Transaktionen müssen die Namen eindeutig sein.

Specified by:
startTransaction in interface IPLContext
Throws:
PLException

commitTransaction

public boolean commitTransaction(java.lang.String transName)
                          throws PLException
Description copied from interface: IPLContext
Beendet die Transaktion mit dem angegebenen Namen, die zuvor mit startTransaktion gestartet wurde.

Bei Angabe eines falschen Transaktionsnamens wird eine Exception geworfen.
Bei geschachtelten Transaktion wird dann eine Exception geworfen, wenn zuvor ein Rollback ausgeführt wurde.

Specified by:
commitTransaction in interface IPLContext
Throws:
PLException

testCommit

public boolean testCommit()
                   throws PLException
Description copied from interface: IPLContext
Überpüft, ob eine Transaktion mit commitTransaktion(name) beendet werden kann. Voraussetzung ist:

Specified by:
testCommit in interface IPLContext
Returns:
Throws:
PLException

rollbackTransaction

public boolean rollbackTransaction(java.lang.String transName)
                            throws PLException
Description copied from interface: IPLContext
Rollback der zuvor gestarteten Transaktion.

Specified by:
rollbackTransaction in interface IPLContext
Throws:
PLException

getNumActive

public int getNumActive()
Specified by:
getNumActive in interface IPLContext

getNumIdle

public int getNumIdle()
Specified by:
getNumIdle in interface IPLContext

getMaxActive

public int getMaxActive()
Specified by:
getMaxActive in interface IPLContext
Returns:

getMaxIdle

public int getMaxIdle()
Specified by:
getMaxIdle in interface IPLContext
Returns:

getMinIdle

public int getMinIdle()
Specified by:
getMinIdle in interface IPLContext
Returns:

getConnectionTimeOut

public long getConnectionTimeOut()
Specified by:
getConnectionTimeOut in interface IPLContext

getMBeanPL

public PLTransactionContextMBean getMBeanPL()

getMBeanDB

public DatabaseMBean getMBeanDB()

getTransactionInfos

public java.util.Collection<TransactionInfo> getTransactionInfos()

setUpdateJournalDirectory

public void setUpdateJournalDirectory(java.lang.String dir)
Setzt das Directory, in das Offline Transaktionen geschrieben werden

Parameters:
dir - oder null zum Abschalten

getUpdateJournalDirectory

public java.lang.String getUpdateJournalDirectory()
Liefert das Directory, in das Offline Transaktionen geschrieben werden

Returns:
oder null, wenn Funktionalität abgeschaltet