Medien im MediaStore über Skript aktualisieren
Author: nilsweber
Publication Date: 9/20/2011 11:11
Hallo zusammen,
Ausgangsproblem:
wir haben in unserem MediaStore einige zehntausend Bilder und möchten einen kleinen, definierten Teil hiervon automatisiert aktualisieren. Hintergrund ist, dass einige hundert Bilder in zu großen Auflösungen vorliegen und unnötig Speicherplatz fressen. Ein skriptgesteuerter Auftrag soll diese finden, die Bilder holen, ein rescaling vornehmen und dann die Bilder im Store erneuern. Besonderheit: es handelt sich um die Originalauflösung (Resolution = ORIGINAL), die aktualisiert werden muss.
Das finden und ändern der Auflösung stellt kein Problem dar. Nun bin ich jedoch beim Aktualisieren der Bilder, was leider fehlschlägt. Den Grund liefert folgende mehr oder weniger aussagekräfte Exception:
Caused by: java.lang.UnsupportedOperationException: lock is not supported for release store elements
Um folgenden Code geht es:
for (imgUid : originalImages600x800) {
medium = ms.getStoreElement(imgUid, IDProvider.UidType.MEDIASTORE_LEAF);
pic = medium.getMediaContent(lang);
extension = pic.getPictureMetaData(originalRes).getExtension();
medium.setLock(true, false);
file = new File(systemScaledImagesFolder + imgUid + "." + extension);
fileInputStream = new FileInputStream(file);
pic.removePicture(originalRes);
pic.setPicture(originalRes, file.length(), fileInputStream, extension);
medium.setParseFile(false);
medium.save("resized to 450x600 by schedule", false);
medium.setLock(false, false);
medium.release(false);
context.logInfo("medium '" + imgUid + "' successfully saved back with lower resolution!");
}
Fettgedruckt die Zeile, die knallt. Was läuft hier verkehrt? Ich weiß, dass ich an dieser Stelle wohl etwas ganz Grundlegendes bzgl des "Release Store" falsch verstehe - das Problem ist, dass ich nicht recht weiß, was das überhaupt ist.....
Server-Version: 4.2.219.38784
Skript greift über eigene Admin-Connection zu.
Tags: 4.2, 4.2.219, lock, media_store, medien, release_store
-
Author: hoebbel - 9/20/2011 14:35
Hallo Herr Weber,
> * Wie hole ich das Bild - angelehnt am obigen Code zB - denn im 'current' Stand??
Gute Frage, da der entsprechende Teil in dem obigen Codeausschnitt fehlt :smileywink:
Sie haben sich "ms" wahrscheinlich mittels UserService.getStore(MediaStore.type, true) bzw. UserService.getStore(MediaStore.type, true, true) geholt. Verwenden Sie statt dessen UserService.getStore(MediaStore.type, false) bzw. UserService.getStore(MediaStore.type, true, false).
Viele Grüsse aus Dortmund,
Holger Höbbel
0
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
1 Kommentar