1 package org.collectionspace.services.listener.botgarden;
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.MovementBotGardenConstants;
7 import org.collectionspace.services.movement.nuxeo.MovementConstants;
8 import org.collectionspace.services.nuxeo.listener.AbstractCSEventListenerImpl;
9 import org.nuxeo.ecm.core.api.CoreSession;
10 import org.nuxeo.ecm.core.api.DocumentModel;
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;
15 public class DeleteDeadLocationListener extends AbstractCSEventListenerImpl {
16 final Log logger = LogFactory.getLog(DeleteDeadLocationListener.class);
19 * Delete dead locations.
22 public void handleEvent(Event event) {
23 EventContext ec = event.getContext();
25 if (isRegistered(event) && ec instanceof DocumentEventContext) {
26 DocumentEventContext context = (DocumentEventContext) ec;
27 DocumentModel doc = context.getSourceDocument();
29 if (doc.getType().startsWith(MovementConstants.NUXEO_DOCTYPE) &&
32 !doc.getCurrentLifeCycleState().equals(WorkflowClient.WORKFLOWSTATE_DELETED)) {
33 String actionCode = (String) doc.getProperty(MovementBotGardenConstants.ACTION_CODE_SCHEMA_NAME,
34 MovementBotGardenConstants.ACTION_CODE_FIELD_NAME);
36 logger.debug("actionCode=" + actionCode);
38 if (actionCode != null && actionCode.equals(MovementBotGardenConstants.DEAD_ACTION_CODE)) {
39 CoreSession session = context.getCoreSession();
41 if (session.getAllowedStateTransitions(doc.getRef()).contains(WorkflowClient.WORKFLOWTRANSITION_DELETE)) {
42 session.followTransition(doc.getRef(), WorkflowClient.WORKFLOWTRANSITION_DELETE);