IDatapool-Interface

Das IDatapool Interface ist die wichtigste Datenpool-Klasse. Man erhält einen Zugriff über den Kernel bzw bei den optionalen Namespace-Datenpools über die Namespaces:

kernel.getDatapool();
Namespace.getDatapool();

Daten lesen

Die Schlüssel für einen bestimmten Pfad erhält man über:

Collection<String> getKeys(String aPath);

Alle Datapool Records eines bestimmten Pfades kann man so holen:

Collection<IDatapoolRecord> getRecords(String aPath);

Die Unterverzeichnisse eines Pfades erhält man über:

Collection<String> getSubDirectories(String aPath);

Alle Records der Unterverzeichnisse erhält man über:

Collection<IDatapoolRecord> getSubRecords(String aPath);

Einen einzelnen Wert bekommt man durch Aufruf von:

String getValue(String aPath, String aKey);

oder so mit Angabe eines Default-Wertes, der zurückgegeben wird, wenn der Key nicht gefunden wird:

String getValue(String aPath,
                String aKey,
                String aDefaultValue);

Daten schreiben

Das Schreiben eine einzelnen Wertes erfolgt über:

void setValue(String aPath,
              String aKey,
              String aValue);

Einen komplett neuen Wert kann man auch mit folgender Methode schreiben. Dieses hat den Vorteil, dass auch die anderen Felder eines Records gesetzt werden können, z.B. der Beschreibung:

void addOrUpdateRecord(IDatapoolRecord aRecord,
                       boolean aForce);

Daten löschen

Einen einzelnen Wert kann mit folgender Methode gelöscht werden:

void remove(String aPath,
            String aKey);

Folgende Methode entfernt alle Einträge eines Pfades, sowie auch die aller Unterverzeichnisse. Vorsicht!:

void remove(String aPath);

Import

Der Inhalt einer Konfigurationsdatei (im XML-Format) lässt sich folgendermaßen importieren:

CResult importConfigFile(String aPath);

Ist schon eine File verfügbar, geht es auch so:

void importXml(File aFile) throws CException;

Statistik

Die Anzahl der Datensätze erhält man über:

int getCount();

Für einen bestimmten Pfad erhält man die Anzahl der Records über:

int getCount(String aPath);

Listener/Observer

Werte im Datenpool können beobachtet werden. Bei Änderung der Daten werden Messages verschickt, welche die Listener benachrichtigt.

Die Anmeldung geschieht wie folgt:

IDatapool dp = getKernel().getDatapool();
dp.addListener("plugin/myapp", "mykey", getAddress());

Der Listener bekommt die Nachricht |CRecordNotifyDatapoolValueChanged|.

Beim Startup des devel.one-Frameworks werden die Notifikationen abgeschaltet. Erst wenn das Framework vollständig gestartet wurde, werden die Notifikationen wieder ermöglicht. Das An- und Abschalten erfolgt über zwei Methoden:

boolean isNotificationEnabled();

void disableNotifications();

void enableNotifications(INamespace aNamespace) throws CException;

Beim Einschalten der Notifikationen muss man noch einen Namespace mitgeben, da dort das entsprechende Datenpool-Target registriert wird.

Debugging

Eine Liste aller Einträge im Format “Pfad/Key=Value” ist durch folgende Methode erhältlich:

Collection<String> getDump();

Zum Loggen der Liste kann folgende Methode verwendet werden:

void dumpValues(Logger aLogger);