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