]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
7208e89ad1e4f0986e53a21cccace233fca3f518
[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.jboss.resteasy.spi.ResteasyProviderFactory;
6
7 import org.collectionspace.services.batch.nuxeo.FormatVoucherNameBatchJob;
8 import org.collectionspace.services.client.PoxPayloadIn;
9 import org.collectionspace.services.client.PoxPayloadOut;
10 import org.collectionspace.services.client.workflow.WorkflowClient;
11 import org.collectionspace.services.common.ResourceMap;
12 import org.collectionspace.services.loanout.nuxeo.LoanoutBotGardenConstants;
13 import org.collectionspace.services.loanout.nuxeo.LoanoutConstants;
14 import org.collectionspace.services.nuxeo.listener.AbstractCSEventListenerImpl;
15 import org.nuxeo.ecm.core.api.DocumentModel;
16 import org.nuxeo.ecm.core.api.event.CoreEventConstants;
17 import org.nuxeo.ecm.core.api.event.DocumentEventTypes;
18 import org.nuxeo.ecm.core.event.Event;
19 import org.nuxeo.ecm.core.event.EventContext;
20 import org.nuxeo.ecm.core.event.impl.DocumentEventContext;
21
22 public class UpdateStyledNameListener extends AbstractCSEventListenerImpl {
23         public static final String RUN_AFTER_MODIFIED_PROPERTY = "UpdateStyledNameListener.RUN_AFTER_MODIFIED";
24
25         final Log logger = LogFactory.getLog(UpdateStyledNameListener.class);
26
27         public void handleEvent(Event event) {
28                 EventContext ec = event.getContext();
29
30                 if (ec instanceof DocumentEventContext) {
31                         DocumentEventContext context = (DocumentEventContext) ec;
32                         DocumentModel doc = context.getSourceDocument();
33
34                         logger.debug("docType=" + doc.getType());
35                         
36                         if (doc.getType().startsWith(LoanoutConstants.NUXEO_DOCTYPE) && 
37                                         !doc.isVersion() && 
38                                         !doc.isProxy() && 
39                                         !doc.getCurrentLifeCycleState().equals(WorkflowClient.WORKFLOWSTATE_DELETED)) {
40                                 
41                                 if (event.getName().equals(DocumentEventTypes.BEFORE_DOC_UPDATE)) {
42                                         DocumentModel previousDoc = (DocumentModel) context.getProperty(CoreEventConstants.PREVIOUS_DOCUMENT_MODEL);                    
43         
44                                         String previousLabelRequested = (String) previousDoc.getProperty(LoanoutBotGardenConstants.LABEL_REQUESTED_SCHEMA_NAME,
45                                                         LoanoutBotGardenConstants.LABEL_REQUESTED_FIELD_NAME);
46                                         String labelRequested = (String) doc.getProperty(LoanoutBotGardenConstants.LABEL_REQUESTED_SCHEMA_NAME,
47                                                         LoanoutBotGardenConstants.LABEL_REQUESTED_FIELD_NAME);
48                                         
49                                         logger.debug("previousLabelRequested=" + previousLabelRequested + " labelRequested=" + labelRequested);
50                                         
51                                         if ((previousLabelRequested == null || previousLabelRequested.equals(LoanoutBotGardenConstants.LABEL_REQUESTED_NO_VALUE)) && 
52                                                         labelRequested.equals(LoanoutBotGardenConstants.LABEL_REQUESTED_YES_VALUE)) {
53                                                 // The label request is changing from no to yes, so we should update the styled name.
54                                                 ec.setProperty(RUN_AFTER_MODIFIED_PROPERTY, true);
55                                         }
56                                 }
57                                 else {
58                                         boolean doUpdate = false;
59                                         
60                                         if (event.getName().equals(DocumentEventTypes.DOCUMENT_CREATED)) {
61                                                 String labelRequested = (String) doc.getProperty(LoanoutBotGardenConstants.LABEL_REQUESTED_SCHEMA_NAME, 
62                                                                 LoanoutBotGardenConstants.LABEL_REQUESTED_FIELD_NAME);
63                                                 
64                                                 doUpdate = (labelRequested != null && labelRequested.equals(LoanoutBotGardenConstants.LABEL_REQUESTED_YES_VALUE));
65                                         } else {
66                                                 doUpdate = ec.hasProperty(RUN_AFTER_MODIFIED_PROPERTY) && ((Boolean) ec.getProperty(RUN_AFTER_MODIFIED_PROPERTY));
67                                         }
68                                         
69                                         if (doUpdate) {
70                                                 logger.debug("Updating styled name");
71         
72                                                 String voucherCsid = doc.getName();
73                                                 
74                                                 try {
75                                                         createFormatter().formatVoucherName(voucherCsid);
76                                                 } catch (Exception e) {
77                                                         logger.error(e.getMessage(), e);
78                                                 }
79                                         }
80                                 }
81                         }
82                 }
83         }
84         
85         private FormatVoucherNameBatchJob createFormatter() {
86                 ResourceMap<PoxPayloadIn, PoxPayloadOut> resourceMap = ResteasyProviderFactory.getContextData(ResourceMap.class);
87
88                 FormatVoucherNameBatchJob formatter = new FormatVoucherNameBatchJob();
89                 formatter.setResourceMap(resourceMap);
90
91                 return formatter;
92         }
93 }