Search the FirstSpirit Knowledge Base
Hallo,
ich habe ein Skript erstellt in welchem ich mir jene Medien, welche nicht verwendet werden ausgeben lasse.
Ich würde nun zusätzlich zur Id und dem Referenznamen auch den Ersteller des Mediums mir ausgeben lassen, ist sowas überhaupt möglich?
Beim Interface Media hätte ich dazu keine Methode gefunden.
Lg
Hallo rhb,
wenn es um die Version 4.2 geht, wie wäre es so:
Annahme: e ist das entsprechende Medium
hist = e.getHistory();
hist.get(hist.size()-1).getEditor();
Das gibt aber nur den String des Editors, der die älteste Revision des Mediums bearbeitet hat. [Sofern alle Revisionen vorhanden sind, hat er das Medium angelegt].
Mit
editorId = hist.get(hist.size()-1).getEditorId();
bekommt man auch die ID des Benutzers, mit der man sich dann den Benutzer holen kann, wenn man "sinnvollere" Ausgaben als den gespeicherten EditorString benötigt
Viele Grüsse aus Dortmund,
Holger
P.S. Wenn das Skript regelmäßig laufen soll, wäre es wahrscheinlich besser, wenn man sich nicht alle Revisionen holen würde, sondern nur die älteste. Vielelicht hat da jemand ja eine Idee...
Die Methode #getHistory(Date before, Date after, int maxCount, Filter<Revision> filter) sollte hier das gewünschte Ergebnis liefern.
history = media.getHistory(new Date(), HistoryProvider.EVER_SINCE, 1, null);
firstRevision = history.get(0);
http://www.e-spirit.com/odfs42/access/de/espirit/firstspirit/storage/HistoryProvider.html
Da hatte ich auch zuest dran gedacht, aber in der Doku steht:
media.getHistory(new Date(), HistoryProvider.EVER_SINCE, 1, null); nicht das selbe wie media.getHistory() ?
O.K. schade. Ich hatte gedacht die Iteration wäre intern von der ältesten ausgehend. Dann funktioniert das offensichtlich nicht.
Wenn man der Methode einen RevisionFilter.CREATE_FILTER mitgibt, sollte man eigentlich nur die erste Revision bekommen.
also:
history = media.getHistory(new Date(), HistoryProvider.EVER_SINCE,
HistoryProvider.ALL_REVISIONS, RevisionFilter.CREATE_FILTER);
firstRevision = history.get(0);
bzw.
history = media.getHistory(new Date(), HistoryProvider.EVER_SINCE,
1, RevisionFilter.CREATE_FILTER);
firstRevision = history.get(0);
wenn der Filter vor dem "kürzen" der Liste angewendet wird, wovon ich eigentlich ausgehe.
Danke erstmal für die Antworten.
Hab nun folgenden Aufruf bei mir drin
ms = context.getUserService().getStore(Store.MEDIA_STORE,false);
mf = ms.getChildren(Media.class,true);
history= mf.getHistory(new Date(), HistoryProvider.EVER_SINCE, 1, RevisionFilter.CREATE_FILTER );
firstRevision = history.get(0);
mit dem entsprechenden Imports für getHistory(), HistoryProvider und RevisionsFilter lt. http://www.e-spirit.com/odfs42/access/de/espirit/firstspirit/storage/package-summary.html
import de.espirit.firstspirit.storage.HistoryProvider;
import de.espirit.firstspirit.storage.RevisionFilter;
Jedoch schreibt er mir mal wieder
Error in method invocation: Method getHistory( java.util.Date, java.util.Date, int, de.espirit.firstspirit.storage.RevisionFilter$CreateFilter ) not found in class'de.espirit.firstspirit.store.access.AbstractStoreElement$StoreElementListable
:smileyconfused:
Lg
Birgit
Method getHistory( java.util.Date, java.util.Date, int, de.espirit.firstspirit.storage.RevisionFilter$CreateFilter ) not found in class'de.espirit.firstspirit.store.access.AbstractStoreElement$StoreElementListable
Die Fehlermeldung meckert berechtigter Weise diese beiden Zeilen an:
mf = ms.getChildren(Media.class,true);
// mf ist also vom Typ Listable
// und die Methode #getHistory gibt es auf Listable nicht, wie die Fehlermeldung auch sagt
history= mf.getHistory(new Date(), HistoryProvider.EVER_SINCE, 1, RevisionFilter.CREATE_FILTER );
Abgesehen davon, dass es vermutlich nicht sinnvoll ist, an dieser STelle über den kompletten Mediastore zu iterieren, fehlt da wohl eine for-Schleife.
Bitte diese Beiträge beachten: Medienverwaltung im Stapelverfahren
Ah oke - hab das jetzt in mein while reingepackt und bekomm nun zusätzlich zur Id, Uid auch den "Autor" ausgegeben.