Hallo Community,
In unserem Projekt benötigen wir in den Metadaten Informationen über das zugrunde liegende Medienelement (z.B. Datei-Name, Extension, Dateigröße, FSID, ...). Hierzu haben wir eine Reihe an ValueServices implementiert, welche die entsprechenden Werte über einen ModelListener ermitteln. Die ValueServices binden wir klassisch per Schedule ein:
<RULE>
<SCHEDULE id="fileSizeId" service="GetFileSize"/>
<DO>
<PROPERTY name="VALUE" source="md_filesize"/>
</DO>
</RULE>
Für im Nachhinein neu hinzugefügte Medien funktioniert das auch so weit.
Problematisch wird es, wenn man einen ValueService im Nachhinein implementiert und die Änderung dann auf alle bestehenden Elemente ausführen möchte.
Meine Versuche, per Script oder Executable über den Media Store zu iterieren, eine Änderung an den Metadaten vorzunehmen und diese wieder zurückzunehmen und anschließend zu speichern, bringt leider nicht den gewünschten Erfolg, dass die ValueServices getriggert werden und die Metadaten befüllen.
iterate(StoreElement root) {
for (media : root.getChildren()) {
if (!media.isFolder() && media instanceof Media) {
try {
isReleased = media.isReleased();
media.setLock(true, false);
metaFormData = media.getMetaFormData();
// change a text value temporarily
value = metaFormData.get(null, "md_page_type").get();
metaFormData.get(null, "md_page_type").set(value+"_changed");
media.setMetaFormData(metaFormData);
media.save();
// and restore the original value
metaFormData.get(null, "md_page_type").set(value);
media.setMetaFormData(metaFormData);
media.save();
if (isReleased) {
media.release();
}
media.setLock(false, false);
} catch (LockException e) {
Logging.logError(EXCEPTION + media, e, LOGGER);
} catch (ElementDeletedException e) {
Logging.logError(EXCEPTION + media, e, LOGGER);
}
}
}
}
Daher meine Frage:
Besteht eine Möglichkeit, die ValueServices per Script oder Modul Aufruf zu triggern, dass diese den gültigen Wert in die Metadaten speichern?
Oder gibt es eine andere Möglichkeit als ValueServices, an Informationen des jeweiligen StoreElements in den Metadaten Formularen / Regeln zu kommen?