]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
d74c86d7a2ecd90940d8e7060f569a63373cc53b
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.nuxeo.extension.thumbnail;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5
6 import org.collectionspace.services.nuxeo.listener.AbstractCSEventSyncListenerImpl;
7 import org.collectionspace.services.nuxeo.util.ThumbnailConstants;
8
9 import org.nuxeo.ecm.core.api.Blob;
10 import org.nuxeo.ecm.core.api.ClientException;
11 import org.nuxeo.ecm.core.api.DocumentModel;
12 import org.nuxeo.ecm.core.api.blobholder.BlobHolder;
13 import org.nuxeo.ecm.core.api.event.DocumentEventTypes;
14 import org.nuxeo.ecm.core.event.Event;
15 import org.nuxeo.ecm.core.event.EventContext;
16 import org.nuxeo.ecm.core.event.impl.DocumentEventContext;
17
18 public class UpdateThumbListener extends AbstractCSEventSyncListenerImpl {
19     final Log logger = LogFactory.getLog(UpdateThumbListener.class);
20
21     @Override
22         public boolean shouldHandleEvent(Event event) {
23         EventContext ec = event.getContext();
24
25         return ec instanceof DocumentEventContext;
26     }
27     
28     public void handleCSEvent(Event event) throws ClientException {
29         EventContext ec = event.getContext();
30         if (ec instanceof DocumentEventContext) {
31             DocumentEventContext context = (DocumentEventContext) ec;
32             DocumentModel doc = context.getSourceDocument();
33             if (doc.isDirty() || DocumentEventTypes.DOCUMENT_CREATED.equals(event.getName())) {
34                 BlobHolder blobHolder = doc.getAdapter(BlobHolder.class);
35                 if (blobHolder != null) {
36                     Blob blob = blobHolder.getBlob();
37                     if (blob != null) {
38                         try {
39                             AddThumbnailUnrestricted runner = new AddThumbnailUnrestricted(
40                                     context.getCoreSession(), doc, blobHolder);
41                             runner.runUnrestricted();
42                             return; // Exit
43                         } catch (Exception e) {
44                             throw new RuntimeException(e);
45                         }
46                     }
47                 }
48                 // No Blob anymore, remove the facet
49                 if (doc.hasFacet(ThumbnailConstants.THUMBNAIL_FACET)) {
50                     doc.removeFacet(ThumbnailConstants.THUMBNAIL_FACET);
51                     context.getCoreSession().saveDocument(doc);
52                 }
53             }
54         }
55     }
56     
57     @Override
58     public Log getLogger() {
59         return logger;
60     }
61 }