]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
a30c848e70b74534efe6daaff0269cbcaecaf995
[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 import org.collectionspace.services.client.workflow.WorkflowClient;
6 import org.collectionspace.services.movement.nuxeo.MovementConstants;
7 import org.collectionspace.services.nuxeo.listener.AbstractCSEventListenerImpl;
8 import org.nuxeo.ecm.core.api.DocumentModel;
9 import org.nuxeo.ecm.core.api.DocumentRef;
10 import org.nuxeo.ecm.core.api.VersioningOption;
11 import org.nuxeo.ecm.core.event.Event;
12 import org.nuxeo.ecm.core.event.EventContext;
13 import org.nuxeo.ecm.core.event.impl.DocumentEventContext;
14
15 public class CreateVersionListener extends AbstractCSEventListenerImpl {
16         public static final String SKIP_PROPERTY = "CreateVersionListener.SKIP";
17
18         final Log logger = LogFactory.getLog(CreateVersionListener.class);
19
20         @Override
21         public void handleEvent(Event event) {
22                 EventContext ec = event.getContext();
23
24                 if (isRegistered(event) && ec instanceof DocumentEventContext) {
25                         DocumentEventContext context = (DocumentEventContext) ec;
26
27                         if (ec.hasProperty(SKIP_PROPERTY) && ((Boolean) ec.getProperty(SKIP_PROPERTY))) {
28                                 logger.debug("Skipping create version");
29                         }
30                         else {
31                                 DocumentModel doc = context.getSourceDocument();
32
33                                 logger.debug("docType=" + doc.getType());
34
35                                 if (doc.getType().startsWith(MovementConstants.NUXEO_DOCTYPE) && 
36                                                 !doc.isVersion() && 
37                                                 !doc.isProxy() &&
38                                                 !doc.getCurrentLifeCycleState().equals(WorkflowClient.WORKFLOWSTATE_DELETED)) {
39                                         // Version the document
40                                         DocumentRef versionRef = doc.checkIn(VersioningOption.MINOR, null);             
41                                         DocumentModel versionDoc = context.getCoreSession().getDocument(versionRef);
42
43                                         logger.debug("created version: id=" + versionDoc.getId() + " csid=" + versionDoc.getName());
44
45                                         // Check out the document, so it can be modified
46                                         doc.checkOut();
47                                 }
48                         }
49                 }
50         }
51 }