|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Objectde.pkjs.pl.PL
public final class PL
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 |
|---|
public static final java.lang.String START_TRANSACTION
public static final java.lang.String ROLLBACK
public static final java.lang.String COMMIT
| Constructor Detail |
|---|
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.Exception
public 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 != null
java.lang.Exceptionpublic PL(electric.xml.Document doc) throws java.lang.Exception
doc -
java.lang.Exception| Method Detail |
|---|
public 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");
}
transName -
PLException
public 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 IPLContextPLException
public int initDefaultTableRequests()
throws PLException
PLExceptionpublic electric.xml.Document getPLMetaDataDoc()
public java.lang.String getPLMetaData()
getPLMetaData in interface IPLContextpublic Request getRequest(java.lang.String datasetName)
IPLContext
getRequest in interface IPLContextpublic java.lang.String getLayerName()
public Database getCurrentDatabase()
IPLContext
getCurrentDatabase in interface IPLContextpublic java.lang.String getCurrentDatabaseName()
IPLContext
getCurrentDatabaseName in interface IPLContext
public JDataSet getDataset(java.lang.String datasetname,
long oid)
throws PLException
IPLContext
getDataset in interface IPLContextPLException
public JDataSet getDataset(java.lang.String datasetname,
long[] oids)
throws PLException
IPLContext
getDataset in interface IPLContextPLException
public JDataSet getDataset(java.lang.String datasetname,
java.lang.String key)
throws PLException
IPLContext
getDataset in interface IPLContextPLException
public java.lang.String getDatasetString(java.lang.String datasetname,
long oid)
throws PLException
getDatasetString in interface IPLContextPLException
public JDataSet getDataset(java.lang.String datasetname,
ParameterList parameters)
throws PLException
IPLContext
getDataset in interface IPLContextPLException
public int setDataset(JDataSet dataset)
throws PLException
IPLContext
setDataset in interface IPLContextPLException
public void setDatasetAsync(JDataSet dataset)
throws PLException
PLException
public int setDataset(java.lang.String dataset)
throws PLException
setDataset in interface IPLContextPLException
public JDataSet getAll(java.lang.String datasetname)
throws PLException
IPLContext
getAll in interface IPLContextPLException
public JDataSet getDatasetSql(java.lang.String tablename,
java.lang.String columns,
java.lang.String from)
throws PLException
IPLContext
getDatasetSql in interface IPLContexttablename - Tabelle zu den Columnscolumns - Spaltennamen mit Komma getrenntfrom - beliebige Bedingung
PLException
public 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 ...
PLException
public JDataSet getDatasetSql(java.lang.String datasetname,
java.lang.String sql,
int limit)
throws PLException
getDatasetSql in interface IPLContextlimit - Maximale Größe des ResultSet vordefinieren
PLException
public 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)
IPLContext
getNamedStatement in interface IPLContext
public JDataSet getDatasetStatement(Database.NamedStatement nst,
ParameterList list)
throws PLException
IPLContext
Hinweis:
Das NameStatement kann auch aus einem abweichenden PL stammen
getDatasetStatement in interface IPLContextPLException
public JDataSet getDatasetStatement(java.lang.String name)
throws PLException
IPLContext
getDatasetStatement in interface IPLContextPLException
public JDataSet getDatasetStatement(java.lang.String name,
ParameterList list)
throws PLException
IPLContext
getDatasetStatement in interface IPLContextlist - Argumentliste für dieses Statement
PLException
public DataRowIterator getDataRowIteratorStatement(java.lang.String statementName,
ParameterList list)
throws PLException
getDataRowIteratorStatement in interface IPLContextstatementName - Der Name eines benannten Statementslist - ParameterList oder null, wenn ohne Parameter
PLException#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)
IPLContext
getEmptyDataset in interface IPLContextdatasetname - Der gewünschte Dataset
public long getOID()
throws PLException
IPLContext
getOID in interface IPLContextPLException
public long getOID(java.lang.String sequenceName)
throws PLException
IPLContext
getOID in interface IPLContextPLException
public int executeSql(java.lang.String sqlCommand)
throws PLException
IPLContext
executeSql in interface IPLContextPLExceptionIPLContext.getDatasetSql(java.lang.String, java.lang.String, java.lang.String)
public int executeSql(java.lang.String sqlCommand,
ParameterList parameters)
throws PLException
IPLContext
executeSql in interface IPLContextsqlCommand - SQL-Befehlparameters - Parameter für PreparedStatement
PLExceptionIPLContext.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 IPLContextPLException
public int executeStatement(java.lang.String name)
throws PLException
IPLContext
executeStatement in interface IPLContextname - Statement-Name
PLException
public int executeStatement(java.lang.String name,
ParameterList parameters)
throws PLException
IPLContext
executeStatement in interface IPLContextname - name Statement-Nameparameters - Paramter für das Statement
PLException
public 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 -
PLException
public 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()
IPLContext
getDatabaseMetaData in interface IPLContextpublic electric.xml.Document getDatabaseMetaDataDoc()
getDatabaseMetaDataDoc in interface IPLContextpublic JDataSet getMetaDataSet()
getMetaDataSet in interface IPLContext
public Request addRequest(JDataRow metaDataRow)
throws PLException
IPLContext
addRequest in interface IPLContextPLExceptionRequest.getMetaDataRow()public java.util.ArrayList<java.lang.String> getDatasetNames()
IPLContext
getDatasetNames in interface IPLContext
public java.lang.String pingDatabase()
throws PLException
pingDatabase in interface IPLContextPLException
public int importJournal(java.util.List<electric.xml.Document> transaction)
throws PLException
importJournal in interface IPLContextPLExceptionpublic java.text.SimpleDateFormat getDateFormat()
IPLContext
getDateFormat 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)
IPLContext
setDebug in interface IPLContextpublic boolean isDebug()
IPLContext
isDebug in interface IPLContext
public void startTransaction(java.lang.String transName)
throws PLException
IPLContext
startTransaction in interface IPLContextPLException
public 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 IPLContextPLException
public boolean testCommit()
throws PLException
IPLContext
testCommit in interface IPLContextPLException
public boolean rollbackTransaction(java.lang.String transName)
throws PLException
IPLContext
rollbackTransaction 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 PLTransactionContextMBean getMBeanPL()
public DatabaseMBean getMBeanDB()
public java.util.Collection<TransactionInfo> getTransactionInfos()
public void setUpdateJournalDirectory(java.lang.String dir)
dir - oder null zum Abschaltenpublic java.lang.String getUpdateJournalDirectory()
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||