Search the FirstSpirit Knowledge Base
Hallo,
hat jemand eine Idee, wie ich zu einem Objekt in First Spirit, von dem ich nur noch die ID kenne, Informationen erhalten kann - welchen Referenznamen trug es, wann genau wurde es gelöscht oder welcher Account hat die Löschung vorgenommen?
Grund für die Anfrage ist, dass wir häufig "ungültige Referenzen" bereinigen müssen und es sehr zeitaufwändig bei komplexeren Inhalten sein kann, herauszufinden, wo sich die ungültige Referenz versteckt.Außerdem haben wir es geschafft, die Inhaltsquelle für referenzierte Absätze zu löschen und wir möchten herausfinden, wie das passieren konnte. Besonders kompliziert wird die Recherche über gelöschte Objekte, wenn deren Elternobjekte auch gelöscht wurden...
Für ein CMS sollte es doch eigentlich kein Problem sein, zumindest noch partielle Informationen hier anzubieten, aber ich stehe wohl auf dem Schlauch...
Für einen Tipp wäre ich dankbar,
viele Grüße,
Marco
Hallo Marco,
an der Stelle muss ich dich auf die API verweisen - dafür musst du ein bisschen was programmieren. Um dir zu helfen habe ich mal ein Snippet aus unserer Codebasis geholt, das etwas ähnliches tut. Das musst du schon noch anpassen, sollte aber zumindest dabei helfen, auf die richtige Lösung für dein Problem zu kommen.
long currentRevision = revisionId;
Revision revision = null;
IDProvider oldElement = null;
while (currentRevision > 0) {
revision = scheduleContext.getProject().getRevision(currentRevision);
if (revision != null) {
final SiteStoreRoot oldSiteStore =
(SiteStoreRoot) scheduleContext.getProject().getUserService(revision).getStore(Store.Type.SITESTORE, true);
oldElement = oldSiteStore.getStoreElement(deletedPageRef.getUid(), IDProvider.UidType.SITESTORE_LEAF);
if (oldElement != null) {
scheduleContext.logDebug("Found old element for deleted element!");
sendDeleteCommandsPerLanguage(caaSConnection, scheduleContext, caaSService, nameNormalizer, parser, deletedPageRef,
(ContentProducer) oldElement);
break;
}
}
currentRevision--;
}
if (revision == null) {
scheduleContext.logWarning("Last revision not found! That should not happen, "
+ "because the last previous revision is needed to reconstruct the parenting of a deleted pageref.");
}
if (oldElement == null) {
scheduleContext.logWarning("No old element (element in the previous revision) found for deleted element! "
+ "That should not happen, because the old element is needed to reconstruct the parenting of the deleted pageref.");
}
Abgesehen davon kannst du an dieser Stelle die API ansehen:
https://www.e-spirit.com/odfs52/access/de/espirit/firstspirit/storage/Revision.html
https://www.e-spirit.com/odfs52/access/de/espirit/firstspirit/storage/RevisionMetaData.html
Klar, das ist jetzt nur eine Outline - ich hoffe erst einmal, dass dir das schon hilft?
Viele Grüße,
Lena
Hallo Marco,
an der Stelle muss ich dich auf die API verweisen - dafür musst du ein bisschen was programmieren. Um dir zu helfen habe ich mal ein Snippet aus unserer Codebasis geholt, das etwas ähnliches tut. Das musst du schon noch anpassen, sollte aber zumindest dabei helfen, auf die richtige Lösung für dein Problem zu kommen.
long currentRevision = revisionId;
Revision revision = null;
IDProvider oldElement = null;
while (currentRevision > 0) {
revision = scheduleContext.getProject().getRevision(currentRevision);
if (revision != null) {
final SiteStoreRoot oldSiteStore =
(SiteStoreRoot) scheduleContext.getProject().getUserService(revision).getStore(Store.Type.SITESTORE, true);
oldElement = oldSiteStore.getStoreElement(deletedPageRef.getUid(), IDProvider.UidType.SITESTORE_LEAF);
if (oldElement != null) {
scheduleContext.logDebug("Found old element for deleted element!");
sendDeleteCommandsPerLanguage(caaSConnection, scheduleContext, caaSService, nameNormalizer, parser, deletedPageRef,
(ContentProducer) oldElement);
break;
}
}
currentRevision--;
}
if (revision == null) {
scheduleContext.logWarning("Last revision not found! That should not happen, "
+ "because the last previous revision is needed to reconstruct the parenting of a deleted pageref.");
}
if (oldElement == null) {
scheduleContext.logWarning("No old element (element in the previous revision) found for deleted element! "
+ "That should not happen, because the old element is needed to reconstruct the parenting of the deleted pageref.");
}
Abgesehen davon kannst du an dieser Stelle die API ansehen:
https://www.e-spirit.com/odfs52/access/de/espirit/firstspirit/storage/Revision.html
https://www.e-spirit.com/odfs52/access/de/espirit/firstspirit/storage/RevisionMetaData.html
Klar, das ist jetzt nur eine Outline - ich hoffe erst einmal, dass dir das schon hilft?
Viele Grüße,
Lena