]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
d457744363d082ad85d7d231773ec4f95bbbf16e
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.nuxeo.listener.relation;
2
3 import java.io.Serializable;
4 import java.util.Map;
5 import org.apache.commons.logging.Log;
6 import org.apache.commons.logging.LogFactory;
7 import org.nuxeo.ecm.core.api.ClientException;
8 import org.nuxeo.ecm.core.api.DocumentModel;
9 import org.nuxeo.ecm.core.api.DocumentRef;
10 import org.nuxeo.ecm.core.event.Event;
11 import org.nuxeo.ecm.core.event.EventContext;
12 import org.nuxeo.ecm.core.event.EventListener;
13 import org.nuxeo.ecm.core.event.impl.DocumentEventContext;
14
15 public class RelationSubOrObjDeletionListener implements EventListener {
16
17     public static final String WORKFLOW_TRANSITION_TO = "to";
18     public static final String WORKFLOW_TRANSITION_DELETED = "deleted";
19     // FIXME We might experiment here with using log4j here instead of Apache Commons Logging
20     final Log logger = LogFactory.getLog(RelationSubOrObjDeletionListener.class);
21
22     public void handleEvent(Event event) throws ClientException {
23         logger.info("In handleEvent in RelationSubOrObjDeletionListener ...");
24
25         EventContext eventContext = event.getContext();
26
27         if (isDocumentSoftDeletedEvent(eventContext)) {
28             
29             DocumentEventContext docContext = (DocumentEventContext) eventContext;
30             DocumentModel docModel = docContext.getSourceDocument();
31             
32             // FIXME: Temporary for debugging
33             logger.debug("docType=" + docModel.getType());
34             logger.debug("id=" + docModel.getSourceId());
35             logger.debug("transition to=" + docContext.getProperties().get(WORKFLOW_TRANSITION_TO));
36             
37             // Get a list of relation records where the just-soft-deleted
38             // document is either the subject or object of the relation
39             
40             // Cycle through the list, soft deleting each of these relation records
41
42         }
43
44     }
45
46     /**
47      * Identifies whether a supplied event concerns a document that has
48      * been transitioned to the 'deleted' workflow state.
49      * 
50      * @param eventContext an event context
51      * 
52      * @return true if this event concerns a document that has
53      * been transitioned to the 'deleted' workflow state.
54      */
55     private boolean isDocumentSoftDeletedEvent(EventContext eventContext) {
56         boolean isSoftDeletedEvent = false;
57         if (eventContext instanceof DocumentEventContext) {
58             if (eventContext.getProperties().containsKey(WORKFLOW_TRANSITION_TO)
59                     && eventContext.getProperties().get(WORKFLOW_TRANSITION_TO).equals(WORKFLOW_TRANSITION_DELETED)) {
60                 isSoftDeletedEvent = true;
61             }
62         }
63         return isSoftDeletedEvent;
64     }
65 }