]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
e275d928523a1f0015cfe99fd83444c2aa64528d
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.listener.botgarden;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5
6 import org.collectionspace.services.client.workflow.WorkflowClient;
7 import org.collectionspace.services.movement.nuxeo.MovementConstants;
8 import org.collectionspace.services.nuxeo.listener.AbstractCSEventSyncListenerImpl;
9 import org.nuxeo.ecm.core.api.DocumentModel;
10 import org.nuxeo.ecm.core.api.DocumentRef;
11 import org.nuxeo.ecm.core.api.VersioningOption;
12 import org.nuxeo.ecm.core.event.Event;
13 import org.nuxeo.ecm.core.event.EventContext;
14 import org.nuxeo.ecm.core.event.impl.DocumentEventContext;
15
16 public class CreateVersionListener extends AbstractCSEventSyncListenerImpl {
17         public static final String SKIP_PROPERTY = "CreateVersionListener.SKIP";
18         static final Log logger = LogFactory.getLog(CreateVersionListener.class);
19
20     @Override
21         public boolean shouldHandleEvent(Event event) {
22         EventContext eventContext = event.getContext();
23                 if (isRegistered(event) && eventContext instanceof DocumentEventContext) {
24                         return true;
25                 }
26                 
27                 return false;
28     }
29     
30         @Override
31         public void handleCSEvent(Event event) {
32                 EventContext ec = event.getContext();
33                 DocumentEventContext context = (DocumentEventContext) ec;
34
35                 if (ec.hasProperty(SKIP_PROPERTY) && ((Boolean) ec.getProperty(SKIP_PROPERTY))) {
36                         logger.debug("Skipping create version");
37                 }
38                 else {
39                         DocumentModel doc = context.getSourceDocument();
40
41                         logger.debug("docType=" + doc.getType());
42
43                         if (doc.getType().startsWith(MovementConstants.NUXEO_DOCTYPE) && 
44                                         !doc.isVersion() && 
45                                         !doc.isProxy() &&
46                                         !doc.getCurrentLifeCycleState().equals(WorkflowClient.WORKFLOWSTATE_DELETED)) {
47                                 // Version the document
48                                 DocumentRef versionRef = doc.checkIn(VersioningOption.MINOR, null);             
49                                 DocumentModel versionDoc = context.getCoreSession().getDocument(versionRef);
50
51                                 logger.debug("created version: id=" + versionDoc.getId() + " csid=" + versionDoc.getName());
52
53                                 // Check out the document, so it can be modified
54                                 doc.checkOut();
55                         }
56                 }
57         }
58
59         @Override
60         public Log getLogger() {
61                 return logger;
62         }
63 }