1 package nl.hippo.cms.workflows.reviewedactions; 2 3 import com.opensymphony.module.propertyset.PropertySet; 4 import com.opensymphony.workflow.WorkflowException; 5 import java.util.Date ; 6 import java.util.Map ; 7 import nl.hippo.cms.Constants; 8 import nl.hippo.cms.workflows.shared.DateUtil; 9 import nl.hippo.cms.workflows.shared.FunctionProviderComponent; 10 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil; 11 import nl.hippo.cocoon.webdav.WebDAVHelper; 12 import org.apache.commons.httpclient.HttpState; 13 14 public class DeterminePublicationDatesFunction extends FunctionProviderComponent { 15 16 public DeterminePublicationDatesFunction() { 17 super(); 18 } 19 20 public void executeImpl(Map transientVars, Map args, PropertySet ps) 21 throws WorkflowException { 22 try 23 { 24 String location = (String ) transientVars.get("location"); 25 HttpState httpState = (HttpState) transientVars.get("httpstate"); 26 String publicationDateMode = (String ) transientVars.get("publicationDateMode"); 27 if (publicationDateMode == null) 28 { 29 String requestedPublicationDateAsString = WebDAVHelper.propfindAsString(location, Constants.CMS_1_0_NAMESPACE, Constants.REQUESTED_PUBLICATION_DATE_PROPERTY_NAME, httpState); 30 String requestedUnpublicationDateAsString = WebDAVHelper.propfindAsString(location, Constants.CMS_1_0_NAMESPACE, Constants.REQUESTED_UNPUBLICATION_DATE_PROPERTY_NAME, httpState); 31 Date requestedPublicationDate = WorkflowExtensionUtil.getDateAndTime(requestedPublicationDateAsString); 32 if (DateUtil.isBefore(new Date (), requestedPublicationDate)) 33 { 34 transientVars.put("publicationDateMode", "other"); 35 transientVars.put("publicationDate", requestedPublicationDateAsString); 36 } 37 else 38 { 39 transientVars.put("publicationDateMode", "now"); 40 transientVars.remove("publicationDate"); 41 } 42 if (requestedUnpublicationDateAsString != null && !requestedUnpublicationDateAsString.equals("")) 43 { 44 transientVars.put("unpublicationDateMode", "other"); 45 transientVars.put("unpublicationDate", requestedUnpublicationDateAsString); 46 } 47 else 48 { 49 transientVars.put("unpublicationDateMode", "never"); 50 transientVars.remove("unpublicationDate"); 51 } 52 } 53 } 54 catch (Exception e) 55 { 56 throw new WorkflowException(e); 57 } 58 } 59 60 } 61 | Popular Tags |