rhb
I'm new here

Medienersteller via Skript anzeigen

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

8 Replies
hoebbel
Crownpeak employee

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 Smiley Wink

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...

0 Kudos
gockel
Crownpeak employee

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

0 Kudos
hoebbel
Crownpeak employee

Da hatte ich auch zuest dran gedacht, aber in der Doku steht:

Returns:
A list of revisions that passed the given criteria in descending order.

habe ich gerade vorsichtshalber auch getestet - mit get(0) bekomme ich die neuste Revision zurück.

Davon abgesehen - ist media.getHistory(new Date(), HistoryProvider.EVER_SINCE, 1, null); nicht das selbe wie media.getHistory() ?
0 Kudos
gockel
Crownpeak employee

O.K. schade. Ich hatte gedacht die Iteration wäre intern von der ältesten ausgehend. Dann funktioniert das offensichtlich nicht.

0 Kudos

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

0 Kudos
gockel
Crownpeak employee

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

0 Kudos

Ah oke - hab das jetzt in mein while reingepackt und bekomm nun zusätzlich zur Id, Uid auch den "Autor" ausgegeben.

0 Kudos