Elexis API documentation
Version 2.1.6 as of December 11 2011

ch.elexis.data
Class PersistentObject

java.lang.Object
  extended by ch.elexis.data.PersistentObject
All Implemented Interfaces:
IPersistentObject, ISelectable
Direct Known Subclasses:
AccountTransaction, AUF, BBSEntry, Bestellung, BezugsKontakt, Bild, Brief, CountryEintrag, DameDokument, DBImage, DBLog, DocHandle, Eigendiagnose, Encounter, Episode, ESRRecord, Fall, ICD10, IcpcCode, Interaction, Interaction, KantonEintrag, Konsultation, Kontakt, KontaktOrderManagement, LabGroup, LabItem, LabResult, LandEintrag, Leistungsblock, MarlovitsFirstname, Message, Messung, Messwert, Messwert, Name_GeoNamesEintrag, NamedBlob, NamedBlob2, NameEintrag, Note, OutputLog, Plz, PlzEintrag, Prescription, Privatnotiz, Rechnung, Reminder, Rezept, RFE, SampleDataType, Sticker, StickyNote, Substance, Substance, TagesNachricht, Termin, Termin.remark, TICode, Vaccination, VaccinationType, VerrechenbarAdapter, Verrechnet, Xid, Zahlung

public abstract class PersistentObject
extends java.lang.Object
implements IPersistentObject

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).

Author:
gerry

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

CFG_CONNECTSTRING

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

CFG_TYPE

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

CFG_PWD

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

CFG_USER

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

CFG_DRIVER

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

CACHE_DEFAULT_LIFETIME

public static final int CACHE_DEFAULT_LIFETIME
See Also:
Constant Field Values

CACHE_MIN_LIFETIME

public static final int CACHE_MIN_LIFETIME
See Also:
Constant Field Values

INEXISTENT

public static final int INEXISTENT
An object with this ID does not exist

See Also:
Constant Field Values

INVALID_ID

public static final int INVALID_ID
This id is not valid

See Also:
Constant Field Values

DELETED

public static final int DELETED
An object with this ID exists but is marked deleted

See Also:
Constant Field Values

EXISTS

public static final int EXISTS
This is an existing object

See Also:
Constant Field Values

MATCH_EXACT

public static final int MATCH_EXACT
Strings must match exactly (but ignore case)

See Also:
Constant Field Values

MATCH_START

public static final int MATCH_START
String must start with test (ignoring case)

See Also:
Constant Field Values

MATCH_REGEXP

public static final int MATCH_REGEXP
String must match as regular expression

See Also:
Constant Field Values

MATCH_CONTAINS

public static final int MATCH_CONTAINS
String must contain test (ignoring case)

See Also:
Constant Field Values

MATCH_AUTO

public static final int MATCH_AUTO
Try to find match method.

See Also:
Constant Field Values
Method Detail

connect

public static boolean connect(Settings cfg,
                              Shell loginshell)
Connect to a database. In the first place, the method checks if there is a demoDB in the Elexis base directory. If found, only this database will be used. If not, connection parameters are taken from the provided Settings. If there ist no database found, it will be created newly, using the createDB-Script. After successful connection, the global Settings (Hub.globalCfg) are linked to the database. For automated testing the following rules apply: The methods check whether the properties ch.elexis.* are set. If set, Elexis will open the corresponding database. E.g -Dch.elexis.username=test -Dch.elexis.password=test -Dch.elexis.dbUser=elexis -Dch.elexis.dbPw=elexisTest -Dch.elexis.dbFlavor=mysql -Dch.elexis.dbSpec=jdbc:mysql://jenkins-service:3306/miniDB If the property elexis-run-mode is set to RunFromScratch then the connected database will be wiped out and initialized with default values for the mandant (007, topsecret). For mysql and postgresql this will only work if the database is empty! Therefore you mus call something like ""drop database miniDB; create dabase miniDB;" before starting Elexis.

Returns:
true on success Verbindung mit der Datenbank herstellen. Die Verbindungsparameter werden aus den übergebenen Settings entnommen. Falls am angegebenen Ort keine Datenbank gefunden wird, wird eine neue erstellt, falls ein create-Script für diesen Datenbanktyp unter rsc gefunden wurde. Wenn die Verbindung hergestell werden konnte, werden die global Settings mit dieser Datenbank verbunden.

connect

public static boolean connect(JdbcLink jd)

getConnection

public static JdbcLink getConnection()
Return the Object containing the cdecodeonnection. This should only in very specific conditions be neccessary, if one needs a direkt access to the database. It is strongly recommended to use this only very carefully, as callers must ensure for themselves that their code works with different database engines equally. Das Objekt, das die Connection enthält zurückliefern. Sollte nur in Ausnahmefällen nötig sein, wenn doch mal ein direkter Zugriff auf die Datenbank erforderlich ist.

Returns:
den JdbcLink, der die Verbindung zur Datenbank enthält

setTrace

public static void setTrace(java.lang.String Tablename)
Trace (protokollieren aller Schreibvorgänge) ein- und ausschalten. Die Trace-Tabelle muss folgende Spalten haben: logtime (long), Workstation (VARCHAR), Username(Varchar), action (Text/Longvarchar)

Parameters:
Tablename - Name der Trace-tabelle oder null: Trace aus.

lock

public static java.lang.String lock(java.lang.String name,
                                    boolean wait)
Exklusiven Zugriff auf eine Ressource verlangen. Die Sperre kann für maximal zwei Sekunden beansprucht werden, dann wird sie gelöst. Dies ist eine sehr teure Methode, die eigentlich nur notwendig ist, weil es keine standardisierte JDBC-Methode für Locks gibt... Die Sperre ist kooperativ: Sie verhindert konkurrierende Zugriffe nicht wirklich, sondern verlässt sich darauf, dass Zugreifende freiwillig zuerst die Sperre abfragen. Sie bezieht sich auch nicht direkt auf eine bestimmte Tabelle, sondern immer nur auf eine willkürliche frei wählbare Bezeichnung. Diese muss für jedes zu schützende Objekt standardisiert werden.

Parameters:
name - Name der gewünschten Sperre
wait - wenn True, warten bis die sperre frei oder abgelaufen ist
Returns:
null, wenn die Sperre belegt war, sonst eine id für unlock

relock

public static boolean relock(java.lang.String name,
                             java.lang.String lockid)
Extend lifetime of an existing lock by 2 more seconds

Parameters:
name - name of the lock
id - id as returned by lock() call
Returns:
true on success

unlock

public static boolean unlock(java.lang.String name,
                             java.lang.String id)
Exklusivzugriff wieder aufgeben

Parameters:
name - Name des Locks
id - bei "lock" erhaltene LockID
Returns:
true bei Erfolg

getLabel

public abstract java.lang.String getLabel()
Einen menschenlesbaren Identifikationsstring für dieses Objet liefern

Specified by:
getLabel in interface IPersistentObject

isValid

public boolean isValid()
Angeben, ob dieses Objekt gültig ist.

Specified by:
isValid in interface IPersistentObject
Returns:
true wenn die Daten gültig (nicht notwendigerweise korrekt) sind

getId

public java.lang.String getId()
Die eindeutige Identifikation dieses Objektes/Datensatzes liefern. Diese ID wird jeweils automatisch beim Anlegen eines Objekts dieser oder einer abgeleiteten Klasse erstellt und bleibt dann unveränderlich.

Specified by:
getId in interface IPersistentObject
Returns:
die ID.

getWrappedId

public java.lang.String getWrappedId()
Die ID in einen datenbankgeeigneten Wrapper verpackt (je nach Datenbank; meist Hochkommata).


storeToString

public java.lang.String storeToString()
Objekt in einen String serialisieren. Diese Standardimplementation macht eine "cheap copy": Es wird eine Textrepräsentation des Objektes erstellt, mit deren Hilfe das Objekt später wieder aus der Datenbank erstellt werden kann. Dies funktioniert nur innerhalb derselben Datenbank.

Specified by:
storeToString in interface IPersistentObject
Returns:
der code-String, aus dem mit PersistentObjectFactory .createFromString wieder das Objekt erstellt werden kann

state

public 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

Specified by:
state in interface IPersistentObject
Returns:
a value between INEXISTENT and EXISTS

exists

public boolean exists()
Feststellen, ob ein PersistentObject bereits in der Datenbank existiert

Specified by:
exists in interface IPersistentObject
Returns:
true wenn es existiert, false wenn es nicht existiert oder gelöscht wurde

isAvailable

public boolean isAvailable()
Check whether the object exists in the database. This is the case for all objects in the database for which state() returns neither INVALID_ID nor INEXISTENT. Note: objects marked as deleted will also return true!

Specified by:
isAvailable in interface IPersistentObject
Returns:
true, if the object is available in the database, false otherwise

getXid

public java.lang.String getXid(java.lang.String domain)
Return a xid (domain_id) for a specified domain

Specified by:
getXid in interface IPersistentObject
Parameters:
domain -
Returns:
an identifier that may be empty but will never be null

getXid

public IXid getXid()
return the "best" xid for a given object. This is the xid with the highest quality. If no xid is given for this object, a newly created xid of local quality will be returned

Specified by:
getXid in interface IPersistentObject

getXids

public java.util.List<IXid> getXids()
retrieve all XIDs of this object

Specified by:
getXids in interface IPersistentObject
Returns:
a List that might be empty but is never null

addXid

public boolean addXid(java.lang.String domain,
                      java.lang.String domain_id,
                      boolean updateIfExists)
Assign a XID to this object.

Specified by:
addXid in interface IPersistentObject
Parameters:
domain - the domain whose ID will be assigned
domain_id - the id out of the given domain fot this object
updateIfExists - if true update values if Xid with same domain and domain_id exists. Otherwise the method will fail if a collision occurs.
Returns:
true on success, false on failure

getSticker

public ISticker getSticker()
holt den "höchstwertigen" Sticker, falls mehrere existieren

Specified by:
getSticker in interface IPersistentObject
Returns:

getStickers

public java.util.List<ISticker> getStickers()
Return all Stickers attributed to this objecz

Specified by:
getStickers in interface IPersistentObject
Returns:
A possibly empty list of Stickers

removeSticker

public void removeSticker(ISticker et)
Remove a Sticker from this object

Specified by:
removeSticker in interface IPersistentObject
Parameters:
et - the Sticker to remove

addSticker

public void addSticker(ISticker st)
Add a Sticker to this object

Specified by:
addSticker in interface IPersistentObject
Parameters:
st - the Sticker to add

isDeleted

public boolean isDeleted()
Feststellen, ob ein PersistentObject als gelöscht markiert wurde

Specified by:
isDeleted in interface IPersistentObject
Returns:
true wenn es gelöscht ist

isDragOK

public boolean isDragOK()
Darf dieses Objekt mit Drag&Drop verschoben werden?

Specified by:
isDragOK in interface IPersistentObject
Returns:
true wenn ja.

map

public java.lang.String map(java.lang.String f)
Aus einem Feldnamen das dazugehörige Datenbankfeld ermitteln

Parameters:
f - Der Feldname
Returns:
Das Datenbankfeld oder **ERROR**, wenn kein mapping für das angegebene Feld existiert.

getFieldType

public PersistentObject.FieldType getFieldType(java.lang.String f)

get

public java.lang.String get(java.lang.String field)
Ein Feld aus der Datenbank auslesen. Die Tabelle wird über getTableName() erfragt. Das Feld wird beim ersten Aufruf in jedem Fall aus der Datenbank gelesen. Dann werden weitere Lesezugriffe während der lifetime aus dem cache bedient, um die Zahl der Datenbankzugriffe zu minimieren. Nach Ablauf der lifetime erfolgt wieder ein Zugriff auf die Datenbank, wobei auch der cache wieder erneuert wird. Wenn das Feld nicht als Tabellenfeld existiert, wird es in EXTINFO gesucht. Wenn es auch dort nicht gefunden wird, wird eine Methode namens getFeldname gesucht.

Specified by:
get in interface IPersistentObject
Parameters:
field - Name des Felds
Returns:
Der Inhalt des Felds (kann auch null sein), oder **ERROR**, wenn versucht werden sollte, ein nicht existierendes Feld auszulesen

getMap

public java.util.Map<java.lang.Object,java.lang.Object> getMap(java.lang.String field)
Eine Hashtable auslesen

Specified by:
getMap in interface IPersistentObject
Parameters:
field - Feldname der Hashtable
Returns:
eine Hashtable (ggf. leer). Nie null.

getInt

public int getInt(java.lang.String field)
Bequemlichkeitsmethode zum lesen eines Integer.

Specified by:
getInt in interface IPersistentObject
Parameters:
field -
Returns:
einen Integer. 0 bei 0 oder unlesbar

getList

public java.util.List<java.lang.String> getList(java.lang.String field,
                                                boolean reverse)
Eine 1:n Verknüpfung aus der Datenbank auslesen.

Parameters:
field - das Feld, wie in der mapping-Deklaration angegeben
reverse - wenn true wird rückwärts sortiert
Returns:
eine Liste mit den IDs (String!) der verknüpften Datensätze oder null, wenn das Feld keine 1:n-Verknüofung ist

getList

public java.util.List<java.lang.String[]> getList(java.lang.String field,
                                                  java.lang.String[] extra)
Eine n:m - Verknüpfung auslesen

Parameters:
field - Das Feld, für das ein entsprechendes mapping existiert
extra - Extrafelder, die aus der joint-Tabelle ausgelesen werden sollen
Returns:
eine Liste aus String-Arrays, welche jeweils die ID des gefundenen Objekts und den Inhalt der Extra-Felder enthalten. Null bei Mapping-Fehler

set

public boolean set(java.lang.String field,
                   java.lang.String value)
Ein Feld in die Datenbank übertragen. Gleichzeitig Cache-update Die Tabelle wird über getTableName() erfragt.

Specified by:
set in interface IPersistentObject
Parameters:
field - Name des Feldes
value - Einzusetzender Wert (der vorherige Wert wird überschrieben)
Returns:
true bei Erfolg

setMap

public void setMap(java.lang.String field,
                   java.util.Map<java.lang.Object,java.lang.Object> map)
Eine Hashtable speichern. Diese wird zunächst in ein byte[] geplättet, und so gespeichert.

Specified by:
setMap in interface IPersistentObject
Parameters:
field -
map -

setInt

public boolean setInt(java.lang.String field,
                      int value)
Set a value of type int.

Specified by:
setInt in interface IPersistentObject
Parameters:
field - a table field of numeric type
value - the value to be set
Returns:
true on success, false else

addToList

public int addToList(java.lang.String field,
                     java.lang.String oID,
                     java.lang.String... extra)
Eine Element einer n:m Verknüpfung eintragen. Zur Tabellendefinition wird das mapping verwendet.

Parameters:
field - Das n:m Feld, für das ein neuer Eintrag erstellt werden soll.
oID - ID des Zielobjekts, auf das der Eintrag zeigen soll
extra - Definition der zusätzlichen Felder der Joint-Tabelle. Jeder Eintrag in der Form Feldname=Wert
Returns:
0 bei Fehler

removeFromList

public void removeFromList(java.lang.String field)
Remove all relations to this object from link

Parameters:
field -

removeFromList

public void removeFromList(java.lang.String field,
                           java.lang.String oID)
Remove a relation to this object from link

Parameters:
field -
oID -

delete

public boolean delete()
Ein Objekt und ggf. dessen XID's aus der Datenbank löschen the object is not deleted but rather marked as deleted. A purge must be applied to remove the object really

Returns:
true on success

deleteList

public boolean deleteList(java.lang.String field)
Alle Bezüge aus einer n:m-Verknüpfung zu diesem Objekt löschen

Parameters:
field - Feldname, der die Liste definiert
Returns:

undelete

public boolean undelete()
We can undelete any object by simply clearing the deleted-flag and reanimate dependend XID's

Returns:
true on success

set

public boolean set(java.lang.String[] fields,
                   java.lang.String... values)
Mehrere Felder auf einmal setzen (Effizienter als einzelnes set)

Specified by:
set in interface IPersistentObject
Parameters:
fields - die Feldnamen
values - die Werte
Returns:
false bei Fehler

get

public boolean get(java.lang.String[] fields,
                   java.lang.String[] values)
Mehrere Felder auf einmal auslesen

Specified by:
get in interface IPersistentObject
Parameters:
fields - die Felder
values - String Array für die gelesenen Werte
Returns:
true ok, values wurden gesetzt

isMatching

public boolean isMatching(IPersistentObject other,
                          int mode,
                          java.lang.String... fields)
Testet ob zwei Objekte bezüglich definierbarer Felder übereinstimmend sind

Specified by:
isMatching in interface IPersistentObject
Parameters:
other - anderes Objekt
mode - gleich, LIKE oder Regexp
fields - die interessierenden Felder
Returns:
true wenn this und other vom selben typ sind und alle interessierenden Felder genäss mode übereinstimmen.

isMatching

public boolean isMatching(java.lang.String[] fields,
                          int mode,
                          java.lang.String... others)
testet, ob die angegebenen Felder den angegebenen Werten entsprechen.

Specified by:
isMatching in interface IPersistentObject
Parameters:
fields - die zu testenden Felde
mode - Testmodus (MATCH_EXACT, MATCH_LIKE oder MATCH_REGEXP)
others - die Vergleichswerte
Returns:
true bei übereinsteimmung

isMatching

public boolean isMatching(java.util.Map<java.lang.String,java.lang.String> fields,
                          int mode,
                          boolean bSkipInexisting)
Testet ob dieses Objekt den angegebenen Feldern entspricht.

Specified by:
isMatching in interface IPersistentObject
Parameters:
fields - HashMap mit name,wert paaren für die Felder
mode - 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
Returns:
true wenn dieses Objekt die entsprechenden Felder hat

isMatching

public boolean isMatching(java.util.List<Query.Term> terms)
Specified by:
isMatching in interface IPersistentObject

begin

public Transaction begin()
Eine Transaktion beginnen. schreiboperationen müssen auf das zurückgelieferte Transactions-Objekt erfolgen. (Und können mit Schreiboperationen ausserhalb der Transaktion konkurrieren)

Returns:
Ein Transaktionsobjekt, über das Schreiboperationen getätigt werden kann, und das am Ende mit commit() oder rollback() ausgeführt resp. gestoppt werden kann.

disconnect

public static void disconnect()
Verbindung zur Datenbank trennen


equals

public boolean equals(java.lang.Object arg0)
Overrides:
equals in class java.lang.Object

checkNull

public static java.lang.String checkNull(java.lang.Object in)
Return a String field making sure that it will never be null

Parameters:
in - name of the field to retrieve
Returns:
the field contents or "" if it was null

checkZero

public static int checkZero(java.lang.Object in)
return a numeric field making sure the call will not fail on illegal values

Parameters:
in - name of the field
Returns:
the value of the field as integer or 0 if it was null or not nomeric.

checkZeroDouble

public static double checkZeroDouble(java.lang.String in)
return a numeric field making sure the call will not fail on illegal values

Parameters:
in - name of the field
Returns:
the value of the field as double or 0.0 if it was null or not a Double.

getLastUpdate

public long getLastUpdate()
return the time of the last update of this object

Specified by:
getLastUpdate in interface IPersistentObject
Returns:
the time (as given in System.currentTimeMillis()) of the last write operation on this object or 0 if there was no valid lastupdate time

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

clearCache

public static void clearCache()

resetCache

public static void resetCache()

getCacheTime

public int getCacheTime()
Return time-to-live in cache for this object

Returns:
the time in seconds

setDefaultCacheLifetime

public static void setDefaultCacheLifetime(int seconds)

getDefaultCacheLifetime

public static int getDefaultCacheLifetime()

isShowDeleted

public static boolean isShowDeleted()

setShowDeleted

public static void setShowDeleted(boolean showDeleted)

executeSQLScript

public static void executeSQLScript(java.lang.String filepath,
                                    java.lang.String plugin)
                             throws java.io.IOException
public helper to execute an sql script iven as file path. SQL Errors will be handeld/displayed by SqlWithUiRunner

Parameters:
filepath - where the script is
plugin - name of the originating plugin
Throws:
java.io.IOException - file not found or not readable

flatten

public static byte[] flatten(java.util.Hashtable<java.lang.Object,java.lang.Object> hash)
Convert a Hashtable into a compressed byte array. Note: the resulting array is java-specific, but stable through jre Versions (serialVersionUID: 1421746759512286392L)

Parameters:
hash - the hashtable to store
Returns:

fold

public static java.util.Hashtable<java.lang.Object,java.lang.Object> fold(byte[] flat)
Recreate a Hashtable from a byte array as created by flatten()

Parameters:
flat - the byte array
Returns:
the original Hashtable or null if no Hashtable could be created from the array

exportData

public java.lang.String exportData()
Exports a persistentobject to an xml string

Returns:

tableExists

public static boolean tableExists(java.lang.String tableName)

ts

public static java.lang.String ts(java.lang.Object in)
Convert an arbitrary value into the database format

Parameters:
in - Object
Returns:
String representing the value in database storage conform format
Since:
2.1.6

addChangeListener

public void addChangeListener(IChangeListener listener,
                              java.lang.String fieldToObserve)
Description copied from interface: IPersistentObject
Add a listener to this object that will be informed, if a given property gets changed. This is more efficient than attaching an ElexisEventListener. If more Properties of the same object should be observed, the ElexisEventListener might be more appropriate

Specified by:
addChangeListener in interface IPersistentObject
Parameters:
listener - The Listener to attach
fieldToObserve - the name of the property to observe

removeChangeListener

public void removeChangeListener(IChangeListener listener,
                                 java.lang.String fieldObserved)
Description copied from interface: IPersistentObject
Remove a property change listener. If no such Listener was registered, nothing happens. If the same listener was attached several times for different properties, only the one with the given property will be removed.

Specified by:
removeChangeListener in interface IPersistentObject
Parameters:
listener - the listener to remove
fieldObserved - the property that was observed by this listener.

fireChangeEvent

public void fireChangeEvent(java.lang.String field,
                            java.lang.Object oldValue,
                            java.lang.Object newValue)

Elexis API documentation
Version 2.1.6 as of December 11 2011

Copyright 2005-2011 by Gerry Weirich, Elexis