1 package nl.hippo.cms.workflows.multiplesitessite; 2 3 import com.opensymphony.module.propertyset.PropertySet; 4 import com.opensymphony.workflow.WorkflowException; 5 import com.opensymphony.workflow.spi.WorkflowEntry; 6 import java.text.DateFormat ; 7 import java.text.SimpleDateFormat ; 8 import java.util.Date ; 9 import java.util.HashMap ; 10 import java.util.Map ; 11 import nl.hippo.cms.workflows.shared.DateUtil; 12 import nl.hippo.cms.workflows.shared.FunctionProviderComponent; 13 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil; 14 import nl.hippo.componentcontainers.AvalonSpringBridge; 15 import nl.hippo.servermanager.Project; 16 import nl.hippo.servermanager.ProjectWorkflowRepository; 17 import nl.hippo.servermanager.Server; 18 import nl.hippo.servermanager.ServerManager; 19 import org.apache.commons.httpclient.HttpState; 20 21 public class InvokePublishFunction extends FunctionProviderComponent 22 { 23 24 public InvokePublishFunction() 25 { 26 super(); 27 } 28 29 public void executeImpl(Map transientVars, Map args, PropertySet ps) throws WorkflowException 30 { 31 WorkflowEntry entry = (WorkflowEntry) transientVars.get("entry"); 32 String projectName = ps.getString("projectName"); 33 AvalonSpringBridge asb; 34 try 35 { 36 asb = (AvalonSpringBridge) m_manager.lookup(AvalonSpringBridge.ROLE); 37 try 38 { 39 Server server = ((ServerManager) asb.getBean("serverManager")).getServer(); 40 Project project = server.getProject(projectName); 41 ProjectWorkflowRepository workflowRepo = project.getWorkflowRepository(); 42 HashMap params = new HashMap (); 43 params.put("projectName", projectName); 44 HttpState httpState = (HttpState) transientVars.get("httpstate"); 45 params.put("httpstate", httpState); 46 47 DateFormat df = new SimpleDateFormat ("yyyyMMddHHmm"); 48 49 String publicationDateMode = (String ) transientVars.get("publicationDateMode"); 50 if (publicationDateMode == null) 51 { 52 publicationDateMode = "now"; 53 } 54 params.put("publicationDateMode", publicationDateMode); 55 Object publicationDateAsObject = transientVars.get("publicationDate"); 56 Date publicationDate; 57 if (publicationDateMode.equals("now") || publicationDateAsObject == null) 58 { 59 publicationDate = DateUtil.createToday(); 60 } 61 else 62 { 63 publicationDate = WorkflowExtensionUtil.getDateAndTime(publicationDateAsObject); 64 } 65 params.put("publicationDate", df.format(publicationDate)); 66 67 String unpublicationDateMode = (String ) transientVars.get("unpublicationDateMode"); 68 if (unpublicationDateMode == null) 69 { 70 unpublicationDateMode = "never"; 71 } 72 params.put("unpublicationDateMode", unpublicationDateMode); 73 Object unpublicationDateAsObject = transientVars.get("unpublicationDate"); 74 if (unpublicationDateMode.equals("never") || unpublicationDateAsObject == null) 75 { 76 params.remove("unpublicationDate"); 77 } 78 else 79 { 80 Date unpublicationDate = WorkflowExtensionUtil.getDateAndTime(unpublicationDateAsObject); 81 params.put("unpublicationDate", df.format(unpublicationDate)); 82 } 83 84 workflowRepo.doAction(entry.getId(), 1005, params); 85 } 86 finally 87 { 88 m_manager.release(asb); 89 } 90 } 91 catch (Exception e) 92 { 93 throw new WorkflowException(e); 94 } 95 } 96 97 } 98 | Popular Tags |