1 package nl.hippo.cms.workflows.reviewedactions; 2 3 import com.opensymphony.module.propertyset.PropertySet; 4 import com.opensymphony.workflow.WorkflowException; 5 import java.io.IOException ; 6 import java.text.DateFormat ; 7 import java.text.SimpleDateFormat ; 8 import java.util.Date ; 9 import java.util.HashSet ; 10 import java.util.Map ; 11 import java.util.Set ; 12 import nl.hippo.cms.Constants; 13 import nl.hippo.cms.workflows.shared.DateUtil; 14 import nl.hippo.cms.workflows.shared.FunctionProviderComponent; 15 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil; 16 import nl.hippo.cocoon.webdav.Property; 17 import nl.hippo.cocoon.webdav.WebDAVHelper; 18 import org.apache.commons.httpclient.HttpState; 19 20 public class StoreScheduledPublicationDatesFunction extends FunctionProviderComponent { 21 22 public StoreScheduledPublicationDatesFunction() { 23 super(); 24 } 25 26 public void executeImpl(final Map transientVars, Map args, PropertySet ps) 27 throws WorkflowException { 28 try 29 { 30 String location = (String ) transientVars.get("location"); 31 HttpState httpState = (HttpState) transientVars.get("httpstate"); 32 Set propertiesToSet = new HashSet (); 33 Set propertiesToRemove = new HashSet (); 34 DateFormat df = new SimpleDateFormat ("yyyyMMddHHmm"); 35 String publicationDateMode = (String ) transientVars.get("publicationDateMode"); 36 Date publicationDate; 37 if (publicationDateMode.equals("now")) 38 { 39 publicationDate = new Date (); 40 } 41 else 42 { 43 publicationDate = WorkflowExtensionUtil.getDateAndTime(transientVars.get("publicationDate")); 44 } 45 propertiesToSet.add(new Property("H", Constants.CMS_1_0_NAMESPACE, Constants.SCHEDULED_PUBLICATION_DATE_PROPERTY_NAME, df.format(publicationDate))); 46 47 String unpublicationDateMode = (String ) transientVars.get("unpublicationDateMode"); 48 if (unpublicationDateMode == null || unpublicationDateMode.equals("never")) 49 { 50 propertiesToRemove.add(new Property("H", Constants.CMS_1_0_NAMESPACE, Constants.UNPUBLICATION_DATE_PROPERTY_NAME)); 51 } 52 else 53 { 54 Date unpublicationDate = WorkflowExtensionUtil.getDateAndTime(transientVars.get("unpublicationDate")); 55 if (DateUtil.isBefore(unpublicationDate, publicationDateMode, publicationDate)) 56 { 57 propertiesToRemove.add(new Property("H", Constants.CMS_1_0_NAMESPACE, Constants.UNPUBLICATION_DATE_PROPERTY_NAME)); 58 } 59 else 60 { 61 propertiesToSet.add(new Property("H", Constants.CMS_1_0_NAMESPACE, Constants.UNPUBLICATION_DATE_PROPERTY_NAME, df.format(unpublicationDate))); 62 } 63 } 64 WebDAVHelper.proppatch(location, propertiesToSet, propertiesToRemove, httpState); 65 } 66 catch (IOException e) 67 { 68 throw new WorkflowException(e); 69 } 70 } 71 72 } 73 | Popular Tags |