KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nl > hippo > cms > workflows > multiplesitesdocument > NotifySitesOfDeletionRequestFunction


1 package nl.hippo.cms.workflows.multiplesitesdocument;
2
3 import com.opensymphony.module.propertyset.PropertySet;
4 import com.opensymphony.workflow.WorkflowException;
5 import com.opensymphony.workflow.spi.WorkflowEntry;
6 import java.util.HashMap JavaDoc;
7 import java.util.HashSet JavaDoc;
8 import java.util.Iterator JavaDoc;
9 import java.util.Map JavaDoc;
10 import java.util.Set JavaDoc;
11 import nl.hippo.cms.Constants;
12 import nl.hippo.cms.repositorylocation.CommonRepositoryLocationRoles;
13 import nl.hippo.cms.repositorylocation.RepositoryInformation;
14 import nl.hippo.cms.repositorylocation.RepositoryLocation;
15 import nl.hippo.cms.sitesdirectory.SitesDirectory;
16 import nl.hippo.cms.workflows.shared.FunctionProviderComponent;
17 import nl.hippo.cocoon.webdav.Property;
18 import nl.hippo.cocoon.webdav.WebDAVHelper;
19 import nl.hippo.componentcontainers.AvalonSpringBridge;
20 import nl.hippo.servermanager.Project;
21 import nl.hippo.servermanager.ProjectWorkflowRepository;
22 import nl.hippo.servermanager.Server;
23 import nl.hippo.servermanager.ServerManager;
24 import org.apache.commons.httpclient.HttpState;
25
26 public class NotifySitesOfDeletionRequestFunction extends FunctionProviderComponent
27 {
28
29     public NotifySitesOfDeletionRequestFunction()
30     {
31         super();
32     }
33
34     public void executeImpl(Map JavaDoc transientVars, Map JavaDoc args, PropertySet ps) throws WorkflowException
35     {
36         String JavaDoc projectName = (String JavaDoc) transientVars.get(MultipleSitesDocumentConstants.PROJECT_NAME_KEY);
37         try
38         {
39             AvalonSpringBridge asb = (AvalonSpringBridge) m_manager.lookup(AvalonSpringBridge.ROLE);
40             try
41             {
42                 Server server = ((ServerManager) asb.getBean("serverManager")).getServer();
43                 Project project = server.getProject(projectName);
44                 ProjectWorkflowRepository workflowRepo = project.getWorkflowRepository();
45                 
46                 SitesDirectory sitesDir = (SitesDirectory) m_manager.lookup(SitesDirectory.ROLE);
47                 try
48                 {
49                     WorkflowEntry entry = (WorkflowEntry) transientVars.get("entry");
50                     boolean haveSiteWorkflowIdsChanged = false;
51                     Map JavaDoc siteWorkflowIds = (Map JavaDoc)ps.getAsActualType(MultipleSitesDocumentConstants.SITE_WORKFLOW_IDS_KEY);
52                     if (siteWorkflowIds == null)
53                     {
54                         siteWorkflowIds = new HashMap JavaDoc();
55                     }
56                     Set propertiesToSet = new HashSet JavaDoc();
57                     
58                     Iterator JavaDoc siteIdsIterator = sitesDir.siteIdsIterator();
59                     String JavaDoc location = ps.getString("location");
60                     RepositoryLocation editorRepoLocation = (RepositoryLocation) m_manager.lookup(CommonRepositoryLocationRoles.EDITOR_REPOSITORY_LOCATION_ROLE);
61                     try
62                     {
63                         RepositoryInformation editorRepoInfo = editorRepoLocation.getRepositoryInformation();
64                         
65                         String JavaDoc absoluteLocation = editorRepoInfo.getAbsoluteUri(location);
66                         while (siteIdsIterator.hasNext())
67                         {
68                             String JavaDoc siteId = (String JavaDoc) siteIdsIterator.next();
69                             Map JavaDoc arguments = new HashMap JavaDoc();
70                             
71                             Long JavaDoc siteWorkflowIdAsLong = (Long JavaDoc)siteWorkflowIds.get(siteId);
72                             if (siteWorkflowIdAsLong == null)
73                             {
74                                 arguments.put("documentLocation", location);
75                                 arguments.put("documentWorkflowId", new Long JavaDoc(entry.getId()));
76                                 arguments.put("siteId", siteId);
77                                 arguments.put("projectName", projectName);
78                                 long siteWorkflowId = workflowRepo.initialize("MultipleSitesSite", 1002, arguments);
79                                 siteWorkflowIds.put(siteId, new Long JavaDoc(siteWorkflowId));
80                                 propertiesToSet.add(new Property("H", Constants.CMS_1_0_NAMESPACE, siteId + "-workflow-id", String.valueOf(siteWorkflowId)));
81                                 haveSiteWorkflowIdsChanged = true;
82                             }
83                             else
84                             {
85                                 long siteWorkflowId = siteWorkflowIdAsLong.longValue();
86                                 workflowRepo.doAction(siteWorkflowId, 1102, arguments);
87                             }
88                         }
89                         
90                         if (haveSiteWorkflowIdsChanged)
91                         {
92                             ps.setAsActualType(MultipleSitesDocumentConstants.SITE_WORKFLOW_IDS_KEY, siteWorkflowIds);
93                             HttpState httpState = (HttpState) transientVars.get("httpstate");
94                             WebDAVHelper.proppatch(absoluteLocation, propertiesToSet, null, httpState);
95                         }
96                     }
97                     finally
98                     {
99                         m_manager.release(editorRepoLocation);
100                     }
101                 }
102                 finally
103                 {
104                     m_manager.release(sitesDir);
105                 }
106             }
107             finally
108             {
109                 m_manager.release(asb);
110             }
111         }
112         catch (Exception JavaDoc e)
113         {
114             throw new WorkflowException(e);
115         }
116     }
117
118 }
119
Popular Tags