]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
41146b757e451f5cc107f0cd464f5f53c0694695
[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.MovementBotGardenConstants;
8 import org.collectionspace.services.movement.nuxeo.MovementConstants;
9 import org.collectionspace.services.nuxeo.listener.AbstractCSEventSyncListenerImpl;
10
11 import org.nuxeo.ecm.core.api.CoreSession;
12 import org.nuxeo.ecm.core.api.DocumentModel;
13 import org.nuxeo.ecm.core.event.Event;
14 import org.nuxeo.ecm.core.event.EventContext;
15 import org.nuxeo.ecm.core.event.impl.DocumentEventContext;
16
17 public class DeleteDeadLocationListener extends AbstractCSEventSyncListenerImpl {
18         static final Log logger = LogFactory.getLog(DeleteDeadLocationListener.class);
19
20     @Override
21         public boolean shouldHandleEvent(Event event) {
22         EventContext ec = event.getContext();
23
24         if (ec instanceof DocumentEventContext) {
25             DocumentEventContext context = (DocumentEventContext) ec;
26             DocumentModel doc = context.getSourceDocument();
27
28             if (doc.getType().startsWith(MovementConstants.NUXEO_DOCTYPE) &&
29                         !doc.isVersion() && 
30                         !doc.isProxy() && 
31                         !doc.getCurrentLifeCycleState().equals(WorkflowClient.WORKFLOWSTATE_DELETED)) {
32                 return true;
33             }
34         }
35
36         return false;
37     }
38     
39     /* 
40      * Delete dead locations. 
41      */
42     @Override
43         public void handleCSEvent(Event event) {
44         EventContext ec = event.getContext();
45         DocumentEventContext context = (DocumentEventContext) ec;
46         DocumentModel doc = context.getSourceDocument();
47
48         String actionCode = (String) doc.getProperty(MovementBotGardenConstants.ACTION_CODE_SCHEMA_NAME, 
49                         MovementBotGardenConstants.ACTION_CODE_FIELD_NAME);
50         
51         logger.debug("actionCode=" + actionCode);
52         
53         if (actionCode != null && actionCode.equals(MovementBotGardenConstants.DEAD_ACTION_CODE)) {
54                 CoreSession session = context.getCoreSession();
55                 
56                 if (session.getAllowedStateTransitions(doc.getRef()).contains(WorkflowClient.WORKFLOWTRANSITION_DELETE)) {
57                         session.followTransition(doc.getRef(), WorkflowClient.WORKFLOWTRANSITION_DELETE);
58                 }
59         }
60     }
61     
62     @Override
63     public Log getLogger() {
64         return logger;
65     }
66 }