public final class PL extends java.lang.Object implements IPLContext
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
COMMIT |
static java.lang.String |
ROLLBACK |
static java.lang.String |
START_TRANSACTION |
| Constructor and Description |
|---|
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.
|
| Modifier and Type | Method and Description |
|---|---|
Request |
addRequest(JDataRow metaDataRow)
Erzeugt einen Request aus Metadaten
|
void |
clearCache(java.lang.String datasetname)
Der angegebene Cache wird geleert
|
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 |
getTransactionName() |
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)
Die Daten werden asynchron in die Datenbank geschrieben;
deshalb gibts hier keinen Rückgabewert.
|
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.
|
public static final java.lang.String START_TRANSACTION
public static final java.lang.String ROLLBACK
public static final java.lang.String COMMIT
public PL() throws java.lang.Exception
Die Einstellungen werden aus "PLConfig.xml" eingelesen.
java.lang.Exceptionpublic PL(java.lang.String configFileName) throws java.lang.Exception
configFileName - java.lang.Exceptionpublic PL(java.lang.String configFileName, java.lang.String username, java.lang.String password) throws java.lang.Exception
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.
configFileName - is null then "PLConfig.xml"username - must be != nullpassword - must be != nulljava.lang.Exceptionpublic PL(electric.xml.Document doc) throws java.lang.Exception
doc - java.lang.Exceptionpublic IPLContext startNewTransaction(java.lang.String transName) throws PLException
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");
}
startNewTransaction in interface IPLContexttransName - PLExceptionpublic void shutdown()
throws PLException
Diese Methode kann z.B. beim Spring-Framework als destroy-Method eingetragen werden.
shutdown in interface IPLContextPLExceptionpublic void finalize()
finalize in class java.lang.Objectpublic java.util.Collection<TransactionInfo> getSessions()
public void reset()
throws PLException
reset in interface IPLContextPLExceptionpublic int initDefaultTableRequests()
throws PLException
PLExceptionpublic electric.xml.Document getPLMetaDataDoc()
getPLMetaDataDoc in interface IPLContextpublic java.lang.String getPLMetaData()
getPLMetaData in interface IPLContextpublic Request getRequest(java.lang.String datasetName)
IPLContextgetRequest in interface IPLContextpublic java.lang.String getLayerName()
public Database getCurrentDatabase()
IPLContextgetCurrentDatabase in interface IPLContextpublic java.lang.String getCurrentDatabaseName()
IPLContextgetCurrentDatabaseName in interface IPLContextpublic JDataSet getDataset(java.lang.String datasetname, long oid) throws PLException
IPLContextgetDataset in interface IPLContextPLExceptionpublic JDataSet getDataset(java.lang.String datasetname, long[] oids) throws PLException
IPLContextgetDataset in interface IPLContextPLExceptionpublic JDataSet getDataset(java.lang.String datasetname, java.lang.String key) throws PLException
IPLContextgetDataset in interface IPLContextPLExceptionpublic java.lang.String getDatasetString(java.lang.String datasetname,
long oid)
throws PLException
getDatasetString in interface IPLContextPLExceptionpublic JDataSet getDataset(java.lang.String datasetname, ParameterList parameters) throws PLException
IPLContextgetDataset in interface IPLContextPLExceptionpublic int setDataset(JDataSet dataset) throws PLException
IPLContextsetDataset in interface IPLContextPLExceptionpublic void setDatasetAsync(JDataSet dataset) throws PLException
Die Anzahl der Threads für die Queue wird mit
setDatasetAsync in interface IPLContextdataset - PLExceptionpublic int setDataset(java.lang.String dataset)
throws PLException
setDataset in interface IPLContextPLExceptionpublic void clearCache(java.lang.String datasetname)
throws PLException
IPLContextclearCache in interface IPLContextPLExceptionpublic JDataSet getAll(java.lang.String datasetname) throws PLException
IPLContextgetAll in interface IPLContextPLExceptionpublic JDataSet getDatasetSql(java.lang.String tablename, java.lang.String columns, java.lang.String from) throws PLException
IPLContextgetDatasetSql in interface IPLContexttablename - Tabelle zu den Columnscolumns - Spaltennamen mit Komma getrenntfrom - beliebige BedingungPLExceptionpublic JDataSet getDatasetSql(java.lang.String datasetname, java.lang.String sql) throws PLException
IPLContext
Achtung!
Bei Sybase müssen die angebenen Column-Namen eindeutig sein!
getDatasetSql in interface IPLContextdatasetname - ( =
TableName)sql - "SELECT a,b FROM c,d WHERE ... ORDER BY ...PLExceptionpublic JDataSet getDatasetSql(java.lang.String datasetname, java.lang.String sql, int limit) throws PLException
getDatasetSql in interface IPLContextlimit - Maximale Größe des ResultSet vordefinierenPLExceptionpublic JDataSet getDatasetSql(java.lang.String datasetname, java.lang.String sql, ParameterList list) throws PLException
IPLContext
Achtung!
Bei Sybase müssen die angebenen Column-Namen eindeutig sein!
getDatasetSql in interface IPLContextdatasetname - ( =
TableName)PLExceptionpublic Database.NamedStatement getNamedStatement(java.lang.String name)
IPLContextgetNamedStatement in interface IPLContextpublic JDataSet getDatasetStatement(Database.NamedStatement nst, ParameterList list) throws PLException
IPLContext
Hinweis:
Das NameStatement kann auch aus einem abweichenden PL stammen
getDatasetStatement in interface IPLContextPLExceptionpublic JDataSet getDatasetStatement(java.lang.String name) throws PLException
IPLContextgetDatasetStatement in interface IPLContextPLExceptionpublic JDataSet getDatasetStatement(java.lang.String name, ParameterList list) throws PLException
IPLContextgetDatasetStatement in interface IPLContextlist - Argumentliste für dieses StatementPLExceptionpublic DataRowIterator getDataRowIteratorStatement(java.lang.String statementName, ParameterList list) throws PLException
getDataRowIteratorStatement in interface IPLContextstatementName - Der Name eines benannten Statementslist - ParameterList oder null, wenn ohne ParameterPLException#getDataRowIterator(String, String, ParameterList)public DataRowIterator getDataRowIterator(java.lang.String datasetname, java.lang.String tablename, java.lang.String sql, ParameterList list) throws PLException
IPLContext
Der RowIterator schafft dort Abhilfe.
Es wird ein DataRowIterator geliefert unter Angabe von:
getDataRowIterator in interface IPLContextdatasetname - Namens des DataSet für den RowIteratortablename - Name der RootTable des Datasetsql - SELECT-Statementlist - ParameterListe (darf auch null sein)PLExceptionpublic JDataSet getEmptyDataset(java.lang.String datasetname)
IPLContextgetEmptyDataset in interface IPLContextdatasetname - Der gewünschte Datasetpublic long getOID()
throws PLException
IPLContextgetOID in interface IPLContextPLExceptionpublic long getOID(java.lang.String sequenceName)
throws PLException
IPLContextgetOID in interface IPLContextPLExceptionpublic int executeSql(java.lang.String sqlCommand)
throws PLException
IPLContextexecuteSql in interface IPLContextPLExceptionIPLContext.getDatasetSql(java.lang.String, java.lang.String, java.lang.String)public int executeSql(java.lang.String sqlCommand,
ParameterList parameters)
throws PLException
IPLContextexecuteSql in interface IPLContextsqlCommand - SQL-Befehlparameters - Parameter für PreparedStatementPLExceptionIPLContext.getDatasetSql(java.lang.String, java.lang.String, java.lang.String)public int executeSqlPara(java.lang.String sqlCommand,
java.util.Vector<java.lang.Object> parameter)
throws PLException
IPLContext
Beispiel:
String sql = "INSERT INTO MyTable (DateCreated) VALUES (?)";
Vector v = new Vector();
v.add(new Date());
int cnt = pl.executeSqlPara(sql, v);
executeSqlPara in interface IPLContextPLExceptionpublic int executeStatement(java.lang.String name)
throws PLException
IPLContextexecuteStatement in interface IPLContextname - Statement-NamePLExceptionpublic int executeStatement(java.lang.String name,
ParameterList parameters)
throws PLException
IPLContextexecuteStatement in interface IPLContextname - name Statement-Nameparameters - Paramter für das StatementPLExceptionpublic int executeBatchStatement(java.lang.String name)
throws PLException
Batch-Statements sind eine Menge von NamedStatements, die nacheinander als Batch ausgeführt werden.
executeBatchStatement in interface IPLContextname - PLExceptionpublic int executeBatchStatement(java.lang.String name,
ParameterList list)
throws PLException
Batch-Statements sind eine Menge von NamedStatements, die nacheinander als Batch ausgeführt werden.
executeBatchStatement in interface IPLContextname - list - Eine Liste von Parametern für die Menge aller Parameter, die für
die verschiedenen Statements insgesamt benötigt werden.PLExceptionpublic java.lang.String getDatabaseMetaData()
IPLContextgetDatabaseMetaData in interface IPLContextpublic electric.xml.Document getDatabaseMetaDataDoc()
getDatabaseMetaDataDoc in interface IPLContextpublic JDataSet getMetaDataSet()
getMetaDataSet in interface IPLContextpublic Request addRequest(JDataRow metaDataRow) throws PLException
IPLContextaddRequest in interface IPLContextPLExceptionRequest.getMetaDataRow()public java.util.ArrayList<java.lang.String> getDatasetNames()
IPLContextgetDatasetNames in interface IPLContextpublic java.lang.String pingDatabase()
throws PLException
pingDatabase in interface IPLContextPLExceptionpublic int importJournal(java.util.List<electric.xml.Document> transaction)
throws PLException
importJournal in interface IPLContextPLExceptionpublic java.text.SimpleDateFormat getDateFormat()
IPLContextgetDateFormat in interface IPLContextpublic java.text.SimpleDateFormat getTimeFormat()
getTimeFormat in interface IPLContextpublic java.text.SimpleDateFormat getTimestampFormat()
getTimestampFormat in interface IPLContextpublic java.lang.String getTodayString()
IPLContext
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.
getTodayString in interface IPLContextpublic java.lang.String getNowString()
getNowString in interface IPLContextpublic java.lang.String getTodayNowString()
getTodayNowString in interface IPLContextpublic void setDebug(boolean state)
IPLContextsetDebug in interface IPLContextpublic boolean isDebug()
IPLContextisDebug in interface IPLContextpublic void startTransaction(java.lang.String transName)
throws PLException
IPLContextstartTransaction in interface IPLContextPLExceptionpublic boolean commitTransaction(java.lang.String transName)
throws PLException
IPLContext
Bei Angabe eines falschen Transaktionsnamens wird eine Exception
geworfen.
Bei geschachtelten Transaktion wird dann eine Exception geworfen, wenn
zuvor ein Rollback ausgeführt wurde.
commitTransaction in interface IPLContextPLExceptionpublic boolean testCommit()
throws PLException
IPLContexttestCommit in interface IPLContextPLExceptionpublic boolean rollbackTransaction(java.lang.String transName)
throws PLException
IPLContextrollbackTransaction in interface IPLContextPLExceptionpublic int getNumActive()
getNumActive in interface IPLContextpublic int getNumIdle()
getNumIdle in interface IPLContextpublic int getMaxActive()
getMaxActive in interface IPLContextpublic int getMaxIdle()
getMaxIdle in interface IPLContextpublic int getMinIdle()
getMinIdle in interface IPLContextpublic long getConnectionTimeOut()
getConnectionTimeOut in interface IPLContextpublic java.lang.String getTransactionName()
getTransactionName in interface IPLContextIPLContext.startNewTransaction(String)public PLTransactionContextMBean getMBeanPL()
public DatabaseMBean getMBeanDB()
public java.util.Collection<TransactionInfo> getTransactionInfos()
getTransactionInfos in interface IPLContextpublic void setUpdateJournalDirectory(java.lang.String dir)
dir - oder null zum Abschaltenpublic java.lang.String getUpdateJournalDirectory()