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.util.ArrayList ; 7 import java.util.Collections ; 8 import java.util.Date ; 9 import java.util.List ; 10 import java.util.Map ; 11 import nl.hippo.cms.Constants; 12 import nl.hippo.cms.workflow.WorkflowHelper; 13 import nl.hippo.cms.workflows.shared.ConditionComponent; 14 import nl.hippo.cms.workflows.shared.DateUtil; 15 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil; 16 import org.apache.commons.httpclient.HttpState; 17 import org.apache.webdav.lib.Property; 18 import org.apache.webdav.lib.PropertyName; 19 20 public class IsPublishedCondition extends ConditionComponent { 21 22 private static final PropertyName UNPUBLICATION_DATE_PROPERTY_NAME = new PropertyName(Constants.CMS_1_0_NAMESPACE, Constants.UNPUBLICATION_DATE_PROPERTY_NAME); 23 private static final PropertyName PUBLICATION_DATE_PROPERTY_NAME = new PropertyName(Constants.CMS_1_0_NAMESPACE, Constants.PUBLICATION_DATE_PROPERTY_NAME); 24 private static final List PROPERTIES = new ArrayList (); 25 26 static 27 { 28 PROPERTIES.add(PUBLICATION_DATE_PROPERTY_NAME); 29 PROPERTIES.add(UNPUBLICATION_DATE_PROPERTY_NAME); 30 } 31 32 public IsPublishedCondition() { 33 super(); 34 } 35 36 public boolean passesConditionImpl(final Map transientVars, Map args, PropertySet ps) throws WorkflowException { 37 boolean result; 38 try { 39 String location = (String ) transientVars.get("location"); 40 HttpState httpState = (HttpState) transientVars.get("httpstate"); 41 Map propertiesCache = WorkflowHelper.getPropertiesCache(transientVars); 42 WorkflowHelper.movePropertiesToCache(location, Collections.enumeration(PROPERTIES), propertiesCache, httpState); 43 String publicationDateAsString = ((Property) propertiesCache.get(PUBLICATION_DATE_PROPERTY_NAME)).getPropertyAsString(); 44 String unpublicationDateAsString = ((Property) propertiesCache.get(UNPUBLICATION_DATE_PROPERTY_NAME)).getPropertyAsString(); 45 46 Date publicationDate = null; 47 if (publicationDateAsString != null 48 && !publicationDateAsString.equals("")) 49 { 50 publicationDate = WorkflowExtensionUtil.getDateAndTime(publicationDateAsString); 51 } 52 Date unpublicationDate = null; 53 if (unpublicationDateAsString != null 54 && !unpublicationDateAsString.equals("")) 55 { 56 unpublicationDate = WorkflowExtensionUtil.getDateAndTime(unpublicationDateAsString); 57 } 58 Date now = new Date (); 59 result = DateUtil.isAfterOrEquals(now, publicationDate) 60 && DateUtil.isBefore(now, unpublicationDate); 61 } 62 catch (IOException e) 63 { 64 throw new WorkflowException(e); 65 } 66 return result; 67 } 68 } 69 | Popular Tags |