|
Elexis API documentationVersion 2.1.6 as of December 11 2011 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectch.elexis.data.PersistentObject
public abstract class PersistentObject
Base class for all objects to be stored in the database. A PersistentObject has an unique ID, which is assigned as the object is created. Every object is accessed "lazily" which means that "loading" an object instantiates only a proxy with the ID of the requested object. Members are read only as needed. The class provides static functions to log into the database, and provides methods for reading and writing of fields for derived classes. The get method uses a cache to reduce the number of costly database operations. Repeated read-requests within a configurable life-time (defaults to 15 seconds) are satisfied from the cache. PersistentObject can log every write-access in a trace-table, as desired. get- and set- methods perform necessary coding/decoding of fields as needed. Basisklasse für alle Objekte, die in der Datenbank gespeichert werden sollen. Ein PersistentObject hat eine eindeutige ID, welche beim Erstellen des Objekts automatisch vergeben wird. Grundsätzlich wird jedes Objekt "lazy" geladen, indem jede Leseanforderung zunächst nur einen mit der ID des Objekts versehenen Proxy instantiiert und jedes Member-Feld erst auf Anfrage nachlädt. Die Klasse stellt statische Funktionen zur Kontaktaufnahme mit der Datenbank und member-Funktionen zum Lesen und Schreiben von Feldern der Tochterobjekte zur Verfügung. Die get-Methode verwendet einen zeitlich limitierten Cache. um die Zahl teurer Datenbankoperationen zu minimieren: Wiederholte Lesezugriffe innerhalb einer einstellbaren lifetime (Standardmässig 15 Sekunden) werden aus dem cache bedient. PersistentObject kann auch alle Schreibvorgänge in einer speziellen Trace-Tabelle dokumentieren. Die get- und set- Methoden kümmern sich selbst um codierung/decodierung der Felder, wenn nötig. Aufeinanderfolgende und streng zusammengehörende Schreibvorgänge können auch in einer Transaktion zusammengefasst werden, welche nur ganz oder gar nicht ausgeführt wird. (begin()). Es ist aber zu beachten, das nicht alle Datenbanken Transaktionen unterstützen. MySQL beispielsweise nur, wenn es mit InnoDB-Tabellen eingerichtet wurde (welche langsamer sind, als die standardmässig verwendeten MyISAM-Tabellen).
| Nested Class Summary | |
|---|---|
static class |
PersistentObject.FieldType
|
| Field Summary | |
|---|---|
static int |
CACHE_DEFAULT_LIFETIME
|
static int |
CACHE_MIN_LIFETIME
|
static java.lang.String |
CFG_CONNECTSTRING
|
static java.lang.String |
CFG_DRIVER
|
static java.lang.String |
CFG_PWD
|
static java.lang.String |
CFG_TYPE
|
static java.lang.String |
CFG_USER
|
static int |
DELETED
An object with this ID exists but is marked deleted |
static int |
EXISTS
This is an existing object |
static int |
INEXISTENT
An object with this ID does not exist |
static int |
INVALID_ID
This id is not valid |
static int |
MATCH_AUTO
Try to find match method. |
static int |
MATCH_CONTAINS
String must contain test (ignoring case) |
static int |
MATCH_EXACT
Strings must match exactly (but ignore case) |
static int |
MATCH_REGEXP
String must match as regular expression |
static int |
MATCH_START
String must start with test (ignoring case) |
| Fields inherited from interface ch.elexis.core.data.IPersistentObject |
|---|
FLD_DATE, FLD_DELETED, FLD_EXTINFO, FLD_ID, FLD_LASTUPDATE, STATE_EXISTING, STATE_INEXISTENT, STATE_INVALID_ID |
| Method Summary | |
|---|---|
void |
addChangeListener(IChangeListener listener,
java.lang.String fieldToObserve)
Add a listener to this object that will be informed, if a given property gets changed. |
void |
addSticker(ISticker st)
Add a Sticker to this object |
int |
addToList(java.lang.String field,
java.lang.String oID,
java.lang.String... extra)
Eine Element einer n:m Verknüpfung eintragen. |
boolean |
addXid(java.lang.String domain,
java.lang.String domain_id,
boolean updateIfExists)
Assign a XID to this object. |
Transaction |
begin()
Eine Transaktion beginnen. schreiboperationen müssen auf das zurückgelieferte Transactions-Objekt erfolgen. |
static java.lang.String |
checkNull(java.lang.Object in)
Return a String field making sure that it will never be null |
static int |
checkZero(java.lang.Object in)
return a numeric field making sure the call will not fail on illegal values |
static double |
checkZeroDouble(java.lang.String in)
return a numeric field making sure the call will not fail on illegal values |
static void |
clearCache()
|
static boolean |
connect(JdbcLink jd)
|
static boolean |
connect(Settings cfg,
Shell loginshell)
Connect to a database. |
boolean |
delete()
Ein Objekt und ggf. dessen XID's aus der Datenbank löschen the object is not deleted but rather marked as deleted. |
boolean |
deleteList(java.lang.String field)
Alle Bezüge aus einer n:m-Verknüpfung zu diesem Objekt löschen |
static void |
disconnect()
Verbindung zur Datenbank trennen |
boolean |
equals(java.lang.Object arg0)
|
static void |
executeSQLScript(java.lang.String filepath,
java.lang.String plugin)
public helper to execute an sql script iven as file path. |
boolean |
exists()
Feststellen, ob ein PersistentObject bereits in der Datenbank existiert |
java.lang.String |
exportData()
Exports a persistentobject to an xml string |
void |
fireChangeEvent(java.lang.String field,
java.lang.Object oldValue,
java.lang.Object newValue)
|
static byte[] |
flatten(java.util.Hashtable<java.lang.Object,java.lang.Object> hash)
Convert a Hashtable into a compressed byte array. |
static java.util.Hashtable<java.lang.Object,java.lang.Object> |
fold(byte[] flat)
Recreate a Hashtable from a byte array as created by flatten() |
java.lang.String |
get(java.lang.String field)
Ein Feld aus der Datenbank auslesen. |
boolean |
get(java.lang.String[] fields,
java.lang.String[] values)
Mehrere Felder auf einmal auslesen |
int |
getCacheTime()
Return time-to-live in cache for this object |
static JdbcLink |
getConnection()
Return the Object containing the cdecodeonnection. |
static int |
getDefaultCacheLifetime()
|
PersistentObject.FieldType |
getFieldType(java.lang.String f)
|
java.lang.String |
getId()
Die eindeutige Identifikation dieses Objektes/Datensatzes liefern. |
int |
getInt(java.lang.String field)
Bequemlichkeitsmethode zum lesen eines Integer. |
abstract java.lang.String |
getLabel()
Einen menschenlesbaren Identifikationsstring für dieses Objet liefern |
long |
getLastUpdate()
return the time of the last update of this object |
java.util.List<java.lang.String> |
getList(java.lang.String field,
boolean reverse)
Eine 1:n Verknüpfung aus der Datenbank auslesen. |
java.util.List<java.lang.String[]> |
getList(java.lang.String field,
java.lang.String[] extra)
Eine n:m - Verknüpfung auslesen |
java.util.Map<java.lang.Object,java.lang.Object> |
getMap(java.lang.String field)
Eine Hashtable auslesen |
ISticker |
getSticker()
holt den "höchstwertigen" Sticker, falls mehrere existieren |
java.util.List<ISticker> |
getStickers()
Return all Stickers attributed to this objecz |
java.lang.String |
getWrappedId()
Die ID in einen datenbankgeeigneten Wrapper verpackt (je nach Datenbank; meist Hochkommata). |
IXid |
getXid()
return the "best" xid for a given object. |
java.lang.String |
getXid(java.lang.String domain)
Return a xid (domain_id) for a specified domain |
java.util.List<IXid> |
getXids()
retrieve all XIDs of this object |
int |
hashCode()
|
boolean |
isAvailable()
Check whether the object exists in the database. |
boolean |
isDeleted()
Feststellen, ob ein PersistentObject als gelöscht markiert wurde |
boolean |
isDragOK()
Darf dieses Objekt mit Drag&Drop verschoben werden? |
boolean |
isMatching(IPersistentObject other,
int mode,
java.lang.String... fields)
Testet ob zwei Objekte bezüglich definierbarer Felder übereinstimmend sind |
boolean |
isMatching(java.util.List<Query.Term> terms)
|
boolean |
isMatching(java.util.Map<java.lang.String,java.lang.String> fields,
int mode,
boolean bSkipInexisting)
Testet ob dieses Objekt den angegebenen Feldern entspricht. |
boolean |
isMatching(java.lang.String[] fields,
int mode,
java.lang.String... others)
testet, ob die angegebenen Felder den angegebenen Werten entsprechen. |
static boolean |
isShowDeleted()
|
boolean |
isValid()
Angeben, ob dieses Objekt gültig ist. |
static java.lang.String |
lock(java.lang.String name,
boolean wait)
Exklusiven Zugriff auf eine Ressource verlangen. |
java.lang.String |
map(java.lang.String f)
Aus einem Feldnamen das dazugehörige Datenbankfeld ermitteln |
static boolean |
relock(java.lang.String name,
java.lang.String lockid)
Extend lifetime of an existing lock by 2 more seconds |
void |
removeChangeListener(IChangeListener listener,
java.lang.String fieldObserved)
Remove a property change listener. |
void |
removeFromList(java.lang.String field)
Remove all relations to this object from link |
void |
removeFromList(java.lang.String field,
java.lang.String oID)
Remove a relation to this object from link |
void |
removeSticker(ISticker et)
Remove a Sticker from this object |
static void |
resetCache()
|
boolean |
set(java.lang.String[] fields,
java.lang.String... values)
Mehrere Felder auf einmal setzen (Effizienter als einzelnes set) |
boolean |
set(java.lang.String field,
java.lang.String value)
Ein Feld in die Datenbank übertragen. |
static void |
setDefaultCacheLifetime(int seconds)
|
boolean |
setInt(java.lang.String field,
int value)
Set a value of type int. |
void |
setMap(java.lang.String field,
java.util.Map<java.lang.Object,java.lang.Object> map)
Eine Hashtable speichern. |
static void |
setShowDeleted(boolean showDeleted)
|
static void |
setTrace(java.lang.String Tablename)
Trace (protokollieren aller Schreibvorgänge) ein- und ausschalten. |
int |
state()
Check the state of an object with this ID Note: This method accesses the database and therefore is much more costly than the simple instantaniation of a PersistentObject |
java.lang.String |
storeToString()
Objekt in einen String serialisieren. |
static boolean |
tableExists(java.lang.String tableName)
|
static java.lang.String |
ts(java.lang.Object in)
Convert an arbitrary value into the database format |
boolean |
undelete()
We can undelete any object by simply clearing the deleted-flag and reanimate dependend XID's |
static boolean |
unlock(java.lang.String name,
java.lang.String id)
Exklusivzugriff wieder aufgeben |
| Methods inherited from class java.lang.Object |
|---|
getClass, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String CFG_CONNECTSTRING
public static final java.lang.String CFG_TYPE
public static final java.lang.String CFG_PWD
public static final java.lang.String CFG_USER
public static final java.lang.String CFG_DRIVER
public static final int CACHE_DEFAULT_LIFETIME
public static final int CACHE_MIN_LIFETIME
public static final int INEXISTENT
public static final int INVALID_ID
public static final int DELETED
public static final int EXISTS
public static final int MATCH_EXACT
public static final int MATCH_START
public static final int MATCH_REGEXP
public static final int MATCH_CONTAINS
public static final int MATCH_AUTO
| Method Detail |
|---|
public static boolean connect(Settings cfg,
Shell loginshell)
public static boolean connect(JdbcLink jd)
public static JdbcLink getConnection()
public static void setTrace(java.lang.String Tablename)
Tablename - Name der Trace-tabelle oder null: Trace aus.
public static java.lang.String lock(java.lang.String name,
boolean wait)
name - Name der gewünschten Sperrewait - wenn True, warten bis die sperre frei oder abgelaufen ist
public static boolean relock(java.lang.String name,
java.lang.String lockid)
name - name of the lockid - id as returned by lock() call
public static boolean unlock(java.lang.String name,
java.lang.String id)
name - Name des Locksid - bei "lock" erhaltene LockID
public abstract java.lang.String getLabel()
getLabel in interface IPersistentObjectpublic boolean isValid()
isValid in interface IPersistentObjectpublic java.lang.String getId()
getId in interface IPersistentObjectpublic java.lang.String getWrappedId()
public java.lang.String storeToString()
storeToString in interface IPersistentObjectPersistentObjectFactory .createFromString wieder
das Objekt erstellt werden kannpublic int state()
state in interface IPersistentObjectpublic boolean exists()
exists in interface IPersistentObjectpublic boolean isAvailable()
isAvailable in interface IPersistentObjectpublic java.lang.String getXid(java.lang.String domain)
getXid in interface IPersistentObjectdomain -
public IXid getXid()
getXid in interface IPersistentObjectpublic java.util.List<IXid> getXids()
getXids in interface IPersistentObject
public boolean addXid(java.lang.String domain,
java.lang.String domain_id,
boolean updateIfExists)
addXid in interface IPersistentObjectdomain - the domain whose ID will be assigneddomain_id - the id out of the given domain fot this objectupdateIfExists - if true update values if Xid with same domain and domain_id exists. Otherwise the
method will fail if a collision occurs.
public ISticker getSticker()
getSticker in interface IPersistentObjectpublic java.util.List<ISticker> getStickers()
getStickers in interface IPersistentObjectpublic void removeSticker(ISticker et)
removeSticker in interface IPersistentObjectet - the Sticker to removepublic void addSticker(ISticker st)
addSticker in interface IPersistentObjectst - the Sticker to addpublic boolean isDeleted()
isDeleted in interface IPersistentObjectpublic boolean isDragOK()
isDragOK in interface IPersistentObjectpublic java.lang.String map(java.lang.String f)
f - Der Feldname
public PersistentObject.FieldType getFieldType(java.lang.String f)
public java.lang.String get(java.lang.String field)
get in interface IPersistentObjectfield - Name des Felds
public java.util.Map<java.lang.Object,java.lang.Object> getMap(java.lang.String field)
getMap in interface IPersistentObjectfield - Feldname der Hashtable
public int getInt(java.lang.String field)
getInt in interface IPersistentObjectfield -
public java.util.List<java.lang.String> getList(java.lang.String field,
boolean reverse)
field - das Feld, wie in der mapping-Deklaration angegebenreverse - wenn true wird rückwärts sortiert
public java.util.List<java.lang.String[]> getList(java.lang.String field,
java.lang.String[] extra)
field - Das Feld, für das ein entsprechendes mapping existiertextra - Extrafelder, die aus der joint-Tabelle ausgelesen werden sollen
public boolean set(java.lang.String field,
java.lang.String value)
set in interface IPersistentObjectfield - Name des Feldesvalue - Einzusetzender Wert (der vorherige Wert wird überschrieben)
public void setMap(java.lang.String field,
java.util.Map<java.lang.Object,java.lang.Object> map)
setMap in interface IPersistentObjectfield - map -
public boolean setInt(java.lang.String field,
int value)
setInt in interface IPersistentObjectfield - a table field of numeric typevalue - the value to be set
public int addToList(java.lang.String field,
java.lang.String oID,
java.lang.String... extra)
field - Das n:m Feld, für das ein neuer Eintrag erstellt werden soll.oID - ID des Zielobjekts, auf das der Eintrag zeigen sollextra - Definition der zusätzlichen Felder der Joint-Tabelle. Jeder Eintrag in der Form
Feldname=Wert
public void removeFromList(java.lang.String field)
field -
public void removeFromList(java.lang.String field,
java.lang.String oID)
field - oID - public boolean delete()
public boolean deleteList(java.lang.String field)
field - Feldname, der die Liste definiert
public boolean undelete()
public boolean set(java.lang.String[] fields,
java.lang.String... values)
set in interface IPersistentObjectfields - die Feldnamenvalues - die Werte
public boolean get(java.lang.String[] fields,
java.lang.String[] values)
get in interface IPersistentObjectfields - die Feldervalues - String Array für die gelesenen Werte
public boolean isMatching(IPersistentObject other,
int mode,
java.lang.String... fields)
isMatching in interface IPersistentObjectother - anderes Objektmode - gleich, LIKE oder Regexpfields - die interessierenden Felder
public boolean isMatching(java.lang.String[] fields,
int mode,
java.lang.String... others)
isMatching in interface IPersistentObjectfields - die zu testenden Feldemode - Testmodus (MATCH_EXACT, MATCH_LIKE oder MATCH_REGEXP)others - die Vergleichswerte
public boolean isMatching(java.util.Map<java.lang.String,java.lang.String> fields,
int mode,
boolean bSkipInexisting)
isMatching in interface IPersistentObjectfields - HashMap mit name,wert paaren für die Feldermode - Testmodus (MATCH_EXACT, MATCH_BEGIN, MATCH_REGEXP, MATCH_CONTAIN oder MATCH_AUTO)bSkipInexisting - don't return false if a fieldname is not found but skip this field instead
public boolean isMatching(java.util.List<Query.Term> terms)
isMatching in interface IPersistentObjectpublic Transaction begin()
public static void disconnect()
public boolean equals(java.lang.Object arg0)
equals in class java.lang.Objectpublic static java.lang.String checkNull(java.lang.Object in)
in - name of the field to retrieve
public static int checkZero(java.lang.Object in)
in - name of the field
public static double checkZeroDouble(java.lang.String in)
in - name of the field
public long getLastUpdate()
getLastUpdate in interface IPersistentObjectpublic int hashCode()
hashCode in class java.lang.Objectpublic static void clearCache()
public static void resetCache()
public int getCacheTime()
public static void setDefaultCacheLifetime(int seconds)
public static int getDefaultCacheLifetime()
public static boolean isShowDeleted()
public static void setShowDeleted(boolean showDeleted)
public static void executeSQLScript(java.lang.String filepath,
java.lang.String plugin)
throws java.io.IOException
filepath - where the script isplugin - name of the originating plugin
java.io.IOException - file not found or not readablepublic static byte[] flatten(java.util.Hashtable<java.lang.Object,java.lang.Object> hash)
hash - the hashtable to store
public static java.util.Hashtable<java.lang.Object,java.lang.Object> fold(byte[] flat)
flat - the byte array
public java.lang.String exportData()
public static boolean tableExists(java.lang.String tableName)
public static java.lang.String ts(java.lang.Object in)
in - Object
public void addChangeListener(IChangeListener listener,
java.lang.String fieldToObserve)
IPersistentObject
addChangeListener in interface IPersistentObjectlistener - The Listener to attachfieldToObserve - the name of the property to observe
public void removeChangeListener(IChangeListener listener,
java.lang.String fieldObserved)
IPersistentObject
removeChangeListener in interface IPersistentObjectlistener - the listener to removefieldObserved - the property that was observed by this listener.
public void fireChangeEvent(java.lang.String field,
java.lang.Object oldValue,
java.lang.Object newValue)
|
Elexis API documentationVersion 2.1.6 as of December 11 2011 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||