KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nl > hippo > cms > workflows > reviewedactions > StoreScheduledPublicationDatesFunction


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 JavaDoc;
6 import java.text.DateFormat JavaDoc;
7 import java.text.SimpleDateFormat JavaDoc;
8 import java.util.Date JavaDoc;
9 import java.util.HashSet JavaDoc;
10 import java.util.Map JavaDoc;
11 import java.util.Set JavaDoc;
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 JavaDoc transientVars, Map JavaDoc args, PropertySet ps)
27             throws WorkflowException {
28         try
29         {
30             String JavaDoc location = (String JavaDoc) transientVars.get("location");
31             HttpState httpState = (HttpState) transientVars.get("httpstate");
32             Set propertiesToSet = new HashSet JavaDoc();
33             Set propertiesToRemove = new HashSet JavaDoc();
34             DateFormat JavaDoc df = new SimpleDateFormat JavaDoc("yyyyMMddHHmm");
35             String JavaDoc publicationDateMode = (String JavaDoc) transientVars.get("publicationDateMode");
36             Date JavaDoc publicationDate;
37             if (publicationDateMode.equals("now"))
38             {
39                 publicationDate = new Date JavaDoc();
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 JavaDoc unpublicationDateMode = (String JavaDoc) 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 JavaDoc 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 JavaDoc e)
67         {
68             throw new WorkflowException(e);
69         }
70    }
71
72 }
73
Popular Tags